¿Cómo puedo obtener acceso de lectura / escritura al recurso compartido NFS de Synology NAS?

11

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 deniedcuando intenta cdingresar 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 cdingresar y solo tiene acceso de lectura al recurso compartido. Usar sudono 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 sudoacceso de escritura habilitado) Puedo abrir un archivo en el recurso compartido NFS montado con, sudo vi /mnt/nfs/Files/Data/test.filepero 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

marsilea
fuente
NFS verifica los permisos de acceso contra los ID de usuario (UID). El UID del usuario en su máquina local debe coincidir con el UID del propietario de los archivos a los que intenta acceder en el servidor . Vaya al servidor y mire los permisos de archivo. ¿A qué UID (averiguar con id username) pertenecen y qué permisos están configurados?
Nephente
¿Puedes incluso cdentrar en la montura como usuario habitual? En caso afirmativo, sugiero lo siguiente. Para confirmar o refutar mi sospecha, haga lo siguiente: En el cliente cden el montaje y haga ls -n. Eso enumerará a los propietarios y grupos de archivos con sus respectivos ID. Tendrás que hacer eso con sudo, supongo. Agregue una línea o dos de la salida a su pregunta, junto con la salida de id ( sudo¡ no !) Si ni siquiera cdpuede montar como usuario normal, deberá verificar los permisos del directorio en el que está exportando el servidor.
Nephente
No podía cdentrar 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 y id username.
marsilea
Gracias, creo que sería mejor utilizar NFS la forma correcta en lugar de sólo la fuerza bruta con Squash: 'mapa de todos los usuarios a admin' en el servidor ..
Marsilea
Depende. ¿Confía en clientes y usuarios? Si no lo hace, NFSv3 no es adecuado después de todo, ya que cualquier persona que tenga acceso de root a un cliente puede falsificar UID. Si necesita una autenticación adecuada, será mejor que use SMB. La autenticación con NFSv4 requiere ejecutar un Kerberos que es bastante complicado. Pero sin embargo, su salida me desconcierta ... Supongo que el punto de montaje es /mnt/nfs/Files. Aunque Filespertenece root, 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?
Nephente

Respuestas:

11

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 de root (uid=0, gid=0)a anonuidy anongid. Este comportamiento se puede anular no_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 1026y tienen permisos 755. Su usuario en el cliente tiene uid=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 por anonuid,anongid.

    Agregue las opciones all_squash,anonuid=1026,anongid=100a 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.

Nephente
fuente
Elegí NFS porque pensé que podría tener ventajas para Linux a Linux, ya que me gustaría poder hacer una copia de seguridad del NAS mediante rsync a una unidad USB externa en el cliente Ubuntu (el sistema DSM de Synology no ofrece sincronización a la unidad USB) , manteniendo la propiedad del archivo y la información del permiso. Una respuesta completa, y gracias por la orientación.
marsilea
0

Haz showmount -e 10.1.1.214para ver las opciones de exportación. Permission deniedEl error proviene del servidor NFS. Intenta cambiar la opción de rw,user,autoa defaults.

Muhammad Aizuddin
fuente