我安装了一个远程 sshfs 文件系统/mnt/data
。以下是 中的相关行/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
远程系统上的文件/var/www/
由 user 所有www-data
,但我使用uid=martin,gid=martin
将已安装文件系统上的所有权映射到 uid 1000。
当我 cd 到/mnt/data/
as martin 时,我拥有正确的文件权限/所有权,但我需要更改 umask。
在远程文件系统上,用户www-data
具有 umask 0027
。在我的本地文件系统上,用户martin
有 umask 0077
。我想将 umask 保留0077
在本地文件上,但0027
在 sshfs 挂载的文件上使用(即 /mnt/data/ 中的所有文件)。
这可能吗?
我尝试在远程文件系统上的整个目录上设置 acl 权限:
setfacl -d -m g::rx /var/www/
setfacl -d -m o::--- /var/www/
但这对 sshfs 挂载的共享没有影响。
答案1
sshfs
sftp
正在幕后使用,并且umask
创建新文件由远程处理sftp-server
。您可以将其设置umask
为服务器上的参数,sftp-server
例如/etc/ssh/sshd_config
Subsystem sftp /usr/lib/openssh/sftp-server -u 027 # Debian/Ubuntu
或者
Subsystem sftp /usr/libexec/openssh/sftp-server -u 027 # RHEL/Fedora
或者
Subsystem sftp /usr/lib/ssh/sftp-server -u 027 # Arch
umask 设置和扩展 ACL 不通过 openssh 实现的 SFTP 协议传输。另请注意,没有“umask
文件上”,但umask
始终与创建文件的运行进程相关联。