We consider a distributed secret sharing system that consists of a dealer, n storage nodes, and m users. Each user is given access to a certain subset of storage nodes, where it can download the stored data. The dealer wants to securely convey a specific secret sj to user j via storage nodes, for j " 1, 2, . . . , m, in such a way that no user gets any information about other users' secrets in an information-theoretic sense. To this end, the dealer encodes secrets into several secret shares and loads them into the storage nodes. Given a certain number of storage nodes we find the maximum number of users that can be served in such systems and construct schemes that achieve this. We further define two major properties for such distributed secret sharing systems; communication complexity is defined as the total amount of data that users need to download in order to reconstruct their secrets; and storage overhead is defined as the total size of data loaded by the dealer into the storage nodes normalized by the total size of secrets. Lower bounds on minimum communication complexity and storage overhead are characterized given any n and m. Furthermore, we construct distributed secret sharing protocols, under certain conditions on the system parameters, that simultaneously attain these lower bounds, thereby providing schemes that are optimal in terms of both the communication complexity and the storage overhead. It is shown how to modify the proposed protocols in order to construct schemes with balanced storage load and communication complexity.