为 sshfs 安装的文件系统设置 umask

为 sshfs 安装的文件系统设置 umask

我安装了一个远程 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

sshfssftp正在幕后使用,并且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始终与创建文件的运行进程相关联。

相关内容