Mar*_*ter 4 filesystems permissions umask mount sshfs
我有一个远程 sshfs 文件系统安装在/mnt/data
. 以下是中的相关行/etc/fstab
:
www-data@192.168.1.10:/var/www/ /mnt/data fuse.sshfs rw,noauto,nodev,nosuid,noexec,_netdev,allow_other,default_permissions,uid=martin,gid=martin 0 0
Run Code Online (Sandbox Code Playgroud)
/var/www/
远程系统上的文件归 user 所有www-data
,但我使用uid=martin,gid=martin
将挂载的文件系统上的所有权映射到 uid 1000。
当我 cd/mnt/data/
为 martin 时,我拥有正确的文件权限/所有权,但我需要更改 umask。
在远程文件系统上,用户www-data
有 umask 0027
。在我的本地文件系统上,用户martin
有 umask 0077
。我想0077
在我的本地文件上保留 umask ,但0027
在 sshfs 挂载的文件(即 /mnt/data/ 中的所有文件)上使用。
这甚至可能吗?
我尝试在远程文件系统上的整个目录上设置 acl 权限:
setfacl -d -m g::rx /var/www/
setfacl -d -m o::--- /var/www/
Run Code Online (Sandbox Code Playgroud)
但这对 sshfs 挂载的共享没有影响。
sshfs
正在sftp
幕后使用,umask
用于创建新文件的操作由远程sftp-server
. 您可以将服务器上的in设置umask
为参数,例如sftp-server
/etc/ssh/sshd_config
Subsystem sftp /usr/lib/openssh/sftp-server -u 027 # Debian/Ubuntu
Run Code Online (Sandbox Code Playgroud)
或者
Subsystem sftp /usr/libexec/openssh/sftp-server -u 027 # RHEL/Fedora
Run Code Online (Sandbox Code Playgroud)
或者
Subsystem sftp /usr/lib/ssh/sftp-server -u 027 # Arch
Run Code Online (Sandbox Code Playgroud)
umask 设置和扩展 ACL 不通过 openssh 实现的 SFTP 协议传输。另请注意,没有“ umask
on files”,但umask
始终与创建文件的运行进程相关联。