Solo tengo acceso de lectura al recurso compartido NFS montado.
Con el 'mapeo sin squash' configurado en el NAS, el usuario habitual de Ubuntu obtiene Permission denied
cuando intenta cd
ingresar al recurso compartido y solo puede obtener acceso de lectura mediante el uso sudo
.
Usando la configuración de 'mapear todos los usuarios al administrador' de squash, el usuario habitual del cliente puede cd
ingresar y solo tiene acceso de lectura al recurso compartido. Usar sudo
no permite escribir.
Synology NAS:
DS214> id username
uid=1026(username) gid=100(users) groups=100(users),101(administration)
sin squash (sin mapeo)
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)
all squash (asigna todos los usuarios al administrador)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)
Cliente 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
(Originalmente publiqué por error que usando el sudo
acceso de escritura habilitado) Puedo abrir un archivo en el recurso compartido NFS montado con, sudo vi /mnt/nfs/Files/Data/test.file
pero no puedo escribir los cambios en el archivo incluso con sudo
. El mensaje de error vi en el :w!
comando es:
"test.file" E212: Can't open file for writing
id username
) pertenecen y qué permisos están configurados?cd
entrar en la montura como usuario habitual? En caso afirmativo, sugiero lo siguiente. Para confirmar o refutar mi sospecha, haga lo siguiente: En el clientecd
en el montaje y hagals -n
. Eso enumerará a los propietarios y grupos de archivos con sus respectivos ID. Tendrás que hacer eso consudo
, supongo. Agregue una línea o dos de la salida a su pregunta, junto con la salida deid
(sudo
¡ no !) Si ni siquieracd
puede montar como usuario normal, deberá verificar los permisos del directorio en el que está exportando el servidor.cd
entrar en la montura como usuario habitual. El uso de Squash en el servidor para forzar permisos funciona como una solución temporal para otorgar permisos. Investigar los permisos del servidor yid username
./mnt/nfs/Files
. AunqueFiles
perteneceroot
, el permiso le permite a cualquiera hacer cualquier cosa. No tiene sentido para mí por qué tendría problemas para ingresar a ese directorio como cualquier usuario. Tal vez publicar la línea relevante de/etc/exports
?Respuestas:
NFSv2 / 3 maneja los permisos únicamente basados en UID y GID. Los permisos de archivo en el servidor se comparan con los identificadores de usuario y grupo en el cliente. Es por eso que NFSv <4 es, por diseño, inseguro en entornos donde los usuarios tienen acceso raíz a las máquinas cliente; La suplantación de UID es trivial en ese caso.
Tenga en cuenta que NFSv4 ofrece autenticación de cliente y usuario a través de Kerberos5. Si se necesita autenticación con nombre de usuario y contraseña, a menudo es mucho más fácil recurrir a Samba (SMB / CIFS) en lugar de configurar un Kerberos, incluso en entornos Linux puros.
Por lo menos a prevenir la escalada de privilegios de root, recursos compartidos NFS se exportan de manera predeterminada con la opción
root_squash
, que trazará un mapa de todas las solicitudes de cliente que viene deroot (uid=0, gid=0)
aanonuid
yanongid
. Este comportamiento se puede anularno_root_squash
, otorgando acceso de raíz a la exportación.Aquí, vemos otro inconveniente. Para funcionar correctamente, NFS básicamente requiere que tenga el mismo UID / GID en todas las máquinas. Los archivos a los que desea acceder pertenecen
1026
y tienen permisos 755. Su usuario en el cliente tieneuid=1000
. Los GID tampoco coinciden, por lo que solo obtiene permisos mundiales. Por lo tanto, no hay acceso de escritura.Para resolver esto, puede hacer una de varias cosas:
En el NAS, cambie el propietario de los archivos a
1000
. Tal vez necesite crear esa cuenta en particular. No puedo decir cómo afectará esto a otros servicios.Cambie el UID de su usuario local a
1026
.Como usted es el único que accede a los archivos en el servidor, puede hacer que el servidor finja que todas las solicitudes provienen del UID adecuado. Para eso, NFS tiene la opción
all_squash
. Le dice al servidor que asigne todas las solicitudes al usuario anónimo, especificado poranonuid,anongid
.Agregue las opciones
all_squash,anonuid=1026,anongid=100
a la exportación en/etc/exports
.Sin embargo, tenga cuidado , ya que esto hará que cualquiera que monte la exportación sea efectivamente el propietario de esos archivos.
Si comparte su red con personas y sus clientes en los que no confía por completo para no hacer travesuras con sus archivos, realmente debería buscar un método de intercambio de archivos que ofrezca autenticación. En mi opinión, Samba es la forma más fácil de lograrlo.
fuente
Haz
showmount -e 10.1.1.214
para ver las opciones de exportación.Permission denied
El error proviene del servidor NFS. Intenta cambiar la opción derw,user,auto
adefaults
.fuente