J'ai un accès en lecture uniquement au partage NFS monté.
Avec l'option 'aucun mappage de squash' sur le NAS, l'utilisateur régulier Ubuntu obtient Permission denied
en essayant de cd
dans le partage et ne peut obtenir un accès en lecture qu'à l'aide de Sudo
name__.
En utilisant Squash 'mappe tous les utilisateurs sur le paramètre admin', l'utilisateur régulier du client peut cd
et n'a qu'un accès en lecture au partage. L'utilisation de Sudo
ne permet pas l'écriture.
Synology NAS:DS214> id username
uid=1026(username) gid=100(users) groups=100(users),101(administration)
pas de squash (pas de mapping)DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)
tout squash (mapper tous les utilisateurs sur admin)DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)
Client Ubuntu:$ cat /etc/fstab
10.1.1.214:/volume1/Files /mnt/nfs/Files nfs rw,user,auto 0 0
$ id username
uid=1000 gid=1000(username) groups=1000(username), <etc>
$ ls -n /mnt/nfs
drwxrwxrwx 9 0 0 4096 Sep 25 01:28 Files
$ ls -n /mnt/nfs/Files
drwxr-xr-x 11 1026 100 4096 Sep 24 22:05 Data
(J'ai initialement signalé par erreur que Sudo
permettait l'accès en écriture.) Je peux ouvrir un fichier dans le partage NFS monté avec Sudo vi /mnt/nfs/Files/Data/test.file
, mais je ne peux pas écrire les modifications dans le fichier, même avec Sudo
name__. Le message d'erreur vi lors de la commande :w!
est:"test.file" E212: Can't open file for writing
NFSv2/3 gère les autorisations uniquement en fonction de l'UID et du GID. Les autorisations de fichier sur le serveur sont comparées aux identifiants d'utilisateur et de groupe sur le client. C’est pourquoi NFSv <4 n’est pas sécurisé par sa conception dans les environnements où les utilisateurs ont un accès root aux ordinateurs clients; Le spoofing UID est trivial dans ce cas.
Notez que NFSv4 offre une authentification client et utilisateur via Kerberos5. Si une authentification avec nom d'utilisateur et mot de passe est nécessaire, il est souvent bien plus facile de recourir à Samba (SMB/CIFS) au lieu de configurer un Kerberos, même dans des environnements Linux pur.
Pour éviter au moins l'escalade des privilèges root, les partages NFS sont exportés par défaut avec l'option root_squash
, qui mappera toutes les demandes client provenant de root (uid=0, gid=0)
en anonuid
et anongid
. Ce comportement peut être remplacé par no_root_squash
, en accordant un accès root à l'exportation.
Ici, nous voyons un autre inconvénient. Pour fonctionner correctement, NFS requiert fondamentalement que vous ayez le même UID/GID sur toutes les machines. Les fichiers auxquels vous souhaitez accéder appartiennent à 1026
et ont les permissions 755. Votre utilisateur sur le client a uid=1000
. Les GID ne correspondent pas non plus, vous n'obtenez que les autorisations du monde. D'où aucun accès en écriture.
Pour résoudre ce problème, vous pouvez effectuer plusieurs opérations:
Sur le NAS, changez le propriétaire des fichiers en 1000
. Vous devrez peut-être créer ce compte particulier. Je ne saurais dire comment cela va affecter d'autres services.
Changez l'UID de votre utilisateur local en 1026
.
Étant donné que vous êtes le seul à accéder aux fichiers sur le serveur, vous pouvez demander au serveur de prétendre que toutes les demandes proviennent du bon UID. Pour cela, NFS a l'option all_squash
. Il indique au serveur de mapper toutes les demandes à l'utilisateur anonyme, spécifiées par anonuid,anongid
.
Ajoutez les options all_squash,anonuid=1026,anongid=100
à l'exportation dans /etc/exports
.
Soyez prudent bien, car cela fera n'importe qui monter l'exportation efficacement le propriétaire de ces fichiers!
Si vous partagez votre réseau avec des personnes et leurs clients à qui vous ne faites pas complètement confiance pour ne pas créer de problèmes avec vos fichiers, vous devriez vraiment vous pencher sur une méthode de partage de fichiers offrant une authentification. À mon avis, Samba est le moyen le plus simple d'y parvenir.
Faites showmount -e 10.1.1.214
pour voir les options d’exportation. Permission denied
erreur provient du serveur NFS lui-même. Essayez de changer l'option de rw,user,auto
à defaults
.