Tengo un sistema de archivos sshfs remoto montado en /mnt/data . La siguiente es la línea relevante en /etc/fstab :
[email protected]:/var/www/ /mnt/data fuse.sshfs rw,noauto,nodev,nosuid,noexec,_netdev,allow_other,default_permissions,uid=martin,gid=martin 0 0
Los archivos en /var/www/ en el sistema remoto son propiedad del usuario www-data , pero estoy usando uid=martin,gid=martin para asignar la propiedad en el sistema de archivos montado a uid 1000.
Cuando cd a /mnt/data/ como martin, tengo los permisos/propiedad de archivo correctos, pero necesito cambiar el umask.
En el sistema de archivos remoto, el usuario www-data tiene umask 0027 . En mi sistema de archivos local, el usuario martin tiene umask 0077 . Quiero mantener el umask 0077 en mis archivos locales, pero use 0027 en los archivos montados en sshfs (es decir, todos los archivos en /mnt/data/).
¿Es esto posible?
He intentado establecer permisos de ACL en todo el directorio del sistema de archivos remoto:
setfacl -d -m g::rx /var/www/
setfacl -d -m o::--- /var/www/
pero esto no tiene efecto en el recurso compartido montado sshfs.
Respuesta aceptada:
sshfs está usando sftp bajo el capó y la umask para la creación de nuevos archivos es manejado por el sftp-server remoto . Puede configurar umask como argumento para el sftp-server en /etc/ssh/sshd_config en el servidor, como
Subsystem sftp /usr/lib/openssh/sftp-server -u 027 # Debian/Ubuntu
o
Subsystem sftp /usr/libexec/openssh/sftp-server -u 027 # RHEL/Fedora
o
Subsystem sftp /usr/lib/ssh/sftp-server -u 027 # Arch
La configuración de umask y la ACL extendida no se transfieren a través del protocolo SFTP implementado por openssh. También tenga en cuenta que no hay "umask en archivos”, pero umask siempre está asociado con el proceso en ejecución que crea los archivos.