The only property of the salt is to be unique -- really unique, i.e. each hashed password has its own value (that's not one salt per server, but one salt per user, and a new one when the user changes his password). The salt is not secret.
The role of the salt is to thwart cost sharing between several attack instances; e.g. when the attacker has several hashed passwords to crack and want to optimize things. The salt does not help at all for the resistance of a single password; what it ensures is that attacking 1000 hashed passwords costs 1000 times attacking one. In particular, salts prevent usage of precomputed tables, e.g. rainbow tables (precomputed tables are one type of cost sharing).
If you use a salt with some other properties (e.g. a "secret salt") then it is not a salt.
For an introduction on password hashing, read this.