web-dev-qa-db-fra.com

Linux NFS Créer un masque et force l'équivalent utilisateur

J'ai deux serveurs Linux:

FileServer
[.____] Debian 5.0.3 (2.6.26-2-686)
Samba version 3.4.2

Apache
[.____] Ubuntu 10.04 LTS (2.6.32-23-générique)
[.____] Apache 2.2.14

J'ai un certain nombre d'actions Samba sur FileServer afin que je puisse accéder aux fichiers des PC Windows. J'exporte aussi /data/www-data au serveur Apache Apache , où je l'ai monté comme /var/www.

La configuration est acceptable, sauf lorsque je viens créer des fichiers sur le support NFS. Je finis par des fichiers qui ne peuvent pas être lus par Apache ou qui ne peuvent pas être modifiés par d'autres utilisateurs de mon système.

Avec Samba, je peux spécifier force user, force group, create mask et directory mask, et cela garantit que tous les fichiers sont créés avec des autorisations appropriées pour mon serveur Web Apache. Je ne trouve pas un moyen de le faire avec NFS. Existe-t-il un moyen de forcer les autorisations et la propriété avec NFS - je manque quelque chose d'évident?

Bien que j'ai passé un peu de temps avec Linux avec Linux et que je me meeviens de Windows, je n'ai toujours pas eu à saisir des autorisations Linux ... Si ce n'est pas la bonne façon de faire des choses, je suis ouvert à suggestions alternatives.

11
Mike

Étant donné que vous venez de Windows, vous constaterez que NFS est .... différent.

La question que vous rencontrez est assez courante. NFS passe l'UID et la gid des fichiers/répertoires entre les machines avec l'hypothèse que les ID utilisateur et les groupes de groupe sont mappés de manière identique sur les deux. Cela signifie que vous pouvez obtenir une situation où l'UID/GID sur le serveur est transmis à un client NFS, mais il ne peut pas correspondre au client /etc/passwd ou /etc/group, ce qui signifie aucun accès.

Dans le passé (distant), cela a été co-oridé avec NIS et NIS +, bien qu'il existe d'autres régimes qui ont été calqués dans ce cadre (Winbind de Samba en étant l'un d'entre eux). Cependant, cela nécessite un serveur d'identification central, suivi de nombreuses autorisations de fixation de la main.

Il existe différentes façons de résoudre ce problème, mais le plus bas/le plus rapide est de créer un groupe avec le même numéro d'identification de groupe sur les deux machines - disons, groupe ID 50000 - et définissez les bits de groupe sur le serveur de fichiers tout en ajoutant l'utilisateur approprié à la groupe sur le client; Utilisez ensuite les autorisations de groupe sur les fichiers pour contrôler l'accès. Pas une bonne solution mais cela fonctionnera. Notez que vous pourriez avoir des problèmes avec des services qui modifient explicitement leur groupe à l'exécution (AKA privily Drop) et vous devrez peut-être modifier le paramètre qui contrôle ce que le groupe est supposé à l'exécution pour vous assurer que c'est celui que vous avez créé.

Pour les fichiers qui arrivent entrant via une action Windows (Aka Samba) forcent simplement le groupe à être identique à celui que vous créez. De cette façon, tous les fichiers obtiennent automatiquement le gid "droit".

12
Avery Payne

Vous pouvez également utiliser le all_squash Option qui rend anonyme (utilisateur et groupe) tous les fichiers et dossiers exportés et les attachent à un GID & UID spécifique.

/data/www-data Apache(rw,all_squash,anonuid=<your UID>,anongid=<your GID>,sync)

Le problème avec c'est que tous les utilisateurs du serveur Apache verseront votre point de montage avec nobody nobody En tant qu'utilisateur et groupe, et pourrait écrire dans la montagne (mais de toute façon, sur le serveur Samba, les fichiers seront créés comme <your UID>/<your GID>).

9
Anthony O.