Linux NFS crée un masque et force un équivalent utilisateur


11

J'ai deux serveurs Linux:

serveur de
fichiers 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 de partages Samba sur le serveur de fichiers afin de pouvoir accéder aux fichiers à partir des PC Windows. J'exporte également /data/www-datavers le serveur apache , où je l'ai monté en tant que /var/www.

La configuration est correcte, sauf lorsque je viens de créer des fichiers sur le montage NFS. Je me retrouve avec 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 préciser force user, force group, create masket directory mask, et ce qui garantit que tous les fichiers sont créés avec des autorisations appropriées pour mon serveur web Apache. Je ne trouve pas de moyen de le faire avec NFS. Existe-t-il un moyen de forcer les autorisations et la propriété avec NFS - manque-t-il quelque chose d'évident?

Bien que j'aie passé pas mal de temps avec Linux, et que je me sevre de Windows, je n'ai pas encore tout à fait à maîtriser les autorisations Linux ... Si ce n'est pas la bonne façon de faire les choses, je suis ouvert à suggestions alternatives.

Réponses:


12

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

Le problème que vous rencontrez est assez courant. NFS transmet l'UID et le GID des fichiers / répertoires dans les deux sens entre les machines en supposant que les ID utilisateur et 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 retransmis à un client NFS, mais il ne peut pas correspondre dans le client /etc/passwdou /etc/group, ce qui signifie aucun accès.

Dans un passé (lointain), cela a été co-oridé avec NIS et NIS +, bien qu'il existe d'autres systèmes qui ont été coincés dans ce cadre (Samba's Winbind étant l'un d'entre eux). Cependant, cela nécessite un serveur d'identification central, suivi de nombreuses autorisations de réparation manuelle.

Il existe différentes façons de résoudre ce problème, mais le moins cher / le plus rapide consiste à créer un groupe avec le même numéro d'ID de groupe sur les deux machines - disons, l'ID de groupe 50000 - et à définir les bits de groupe sur le serveur de fichiers tout en ajoutant l'utilisateur approprié au groupe sur le client; puis utilisez les autorisations de groupe sur les fichiers pour contrôler l'accès. Ce n'est pas une excellente solution, mais cela fonctionnera. Notez que vous pourriez avoir des problèmes avec les services qui modifient explicitement leur groupe au moment de l'exécution (alias privledge drop) et vous devrez peut-être modifier le paramètre qui contrôle le groupe supposé au moment de l'exécution pour vous assurer qu'il est celui que vous avez créé.

Pour les fichiers entrants via un partage Windows (alias Samba), forcez simplement le groupe à être le même que celui que vous créez. De cette façon, tous les fichiers obtiennent automatiquement le «bon» GID.


Merci pour la réponse réfléchie. J'examinerai la méthode des bits de groupe et vous ferai savoir comment j'en suis.
Mike

J'ai créé un www-datagroupe sur le serveur de fichiers, affecté les utilisateurs nécessaires, puis défini le même www-dataID de groupe sur les deux serveurs. J'ai également défini les bits de groupe sur le /data/www-datadossier avec chmod -R g+s /var/www-data. Cela fonctionne maintenant parfaitement. Merci de votre aide.
Mike

Heureux de l'entendre!
Avery Payne du

Ce serait bien si NFS pouvait le faire pour les clients Mac.
d -_- b

9

Vous pouvez également utiliser l' all_squashoption qui rend anonyme (utilisateur et groupe) tous les fichiers et dossiers exportés, et les attacher à un GID et UID spécifique.

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

Le problème avec cela est que tous les utilisateurs sur le apacheserveur verront votre point de montage avec nobody nobodycomme utilisateur et groupe, et pourraient écrire dans le montage (mais de toute façon, sur le serveur Samba, les fichiers seront créés comme <your UID>/ <your GID>).


Cela a résolu mon problème!
Luciano Andress Martini le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.