Tengo un servidor que ejecuta Ubuntu 18.04 con configuración NFS. Tengo un par de servicios que colocan/manipulan archivos en ese recurso compartido, así como otros clientes que acceden a él a través de la red. Quiero que el servidor NFS establezca permisos predeterminados en todos los archivos/carpetas nuevos en 775.
Establecí s
una bandera en la carpeta para que todos los archivos y carpetas nuevos creados hereden el mismo grupo, de modo que todos los usuarios de ese grupo puedan crear y modificar archivos en esa carpeta. Pero no puedo obligar a NFS a hacerlo. Solo creó nuevos archivos con 644 y carpetas con 2755.
Aquí está mi/etc/exports/
/srv/nfs 192.168.11.0/24(ro,fsid=0,no_subtree_check,)
/srv/nfs/lpt-2tb 192.168.1.0/24(rw,sync,all_squash,no_subtree_check,insecure,anonuid=1002,anongid=1002)
1002 es una identificación de nfs
usuario.
Probé umask y acl, pero ambos fueron en vano.
Creé homedir para el usuario nfs y lo coloqué umask 002
en su archivo ~/.profile
.
Intenté configurar acl en la carpeta compartida
/srv/nfs/lpt-2tb$ sudo setfacl -d --set u::rwx,g::rwx,o::r-x .
/srv/nfs/lpt-2tb$ sudo setfacl -R -m u::rwx,g::rwx .
/srv/nfs/lpt-2tb$ sudo getfacl .
# file: .
# owner: nfs
# group: nfs
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
Intenté modificar la configuración del servidor nfs ubicada en /lib/systemd/system/nfs-server.service
y agregarla UMask=002
en [Service]
la sección. Esto funcionó para algunos otros servicios que creé yo mismo, pero no para NFS.
Reinicié el servicio NFS e incluso reinicié después de todas esas modificaciones, aún así, cuando copio un archivo a un recurso compartido desde mi computadora portátil, tiene 644 permisos
drwxr-sr-x+ 2 nfs nfs 4096 Apr 5 20:34 acl2
-rw-r--r-- 1 nfs nfs 434506 Mar 7 21:31 acl_test.png
---EDITAR---
Aquí hay resultados acl para archivos y carpetas.
/srv/nfs/lpt-2tb$ sudo getfacl acl_test.png
# file: acl_test.png
# owner: nfs_share
# group: kodi
user::rw-
group::r--
other::r--
/srv/nfs/lpt-2tb$ sudo getfacl acl2
# file: acl2
# owner: nfs_share
# group: kodi
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
---UPD---
Verifiqué que mi servidor ejecuta nfs v2-3-4 pero mi cliente se conecta a través de v3 y no puedo anularlo. Intentaré verificar si la versión 4 se soluciona cuando logre hacerlo funcionar.
Dejé de buscar una solución limpia por ahora y simplemente haré un trabajo cron que verificará y corregirá los permisos periódicamente.
Respuesta1
Primero, las cosas que estás intentando con umask no funcionarán. umask es una cuestión por proceso, y el proceso que importa es el proceso que crea el archivo. La máscara de usuario del usuario nfs en el servidor NFS (si eso es lo que quiso decir) no importará cuando el usuario de nfs cree los archivos en un cliente NFS, y la máscara de usuario del servicio del servidor NFS en sí no debería afectar nada en absoluto.
A continuación, menciona que está obteniendo permisos incorrectos cuando copia un archivo al recurso compartido NFS. Suponiendo que literalmente te refieres a copiar, como en el comando "cp", no es una prueba válida. El comando cp tiene varios comportamientos especiales cuando se trata de permisos: a diferencia de la mayoría de los programas, no simplemente crea un archivo y deja que se mantengan los permisos predeterminados, sino que regresa después y modifica los permisos que contiene. Aquí hay un lugar donde se ha discutido esto en el pasado:
https://serverfault.com/questions/183800/why-does-cp-not-respect-acls
Utilizo el comando "tocar" para crear archivos para este tipo de pruebas. Pruébelo y es posible que descubra que su configuración de ACL ya funciona bien, es solo que el comando cp no respeta las cosas.