如何让 SCP 尊重 umask ?
我试过添加这个
Subsystem sftp internal-sftp -u 0002
在 /etc/ssh/sshd_config 中
和
session optional pam_umask.so umask=0002
在 /etc/pam.d/sshd 中
还有其他可以尝试的事情吗?
每次 scp 将文件创建为 644 而不是 umask 建议的 664
答案1
scp
您可以在远程端创建一个单独的用户,并设置他们的umask
通过login.conf(5)
(如果在 OpenBSD 上)。
答案2
AFAIK,scp
不会初始化 shell,因此不会获取任何文件,例如.profile
, .bashrc
, /etc/profile
.
因此,执行此操作的唯一方法似乎是使用 pam 模块pam_umask.so
。但它将应用于所有用户(除非您使用更复杂的 PAM 设置)
如果您想将此行为限制为 ssh 会话,该文件/etc/pam.d/sshd
可能是执行此操作的最佳位置:
session optional pam_umask.so umask=0007
答案3
我认为你需要使用更好的东西,比如 rsync 命令。
取自男人:
rsync 的一些附加功能包括:
support for copying links, devices, owners, groups, and permissions
句法:
Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
要保留原始文件的修改时间、访问时间和模式,可以在 scp 之后使用 -p。但这不是您正在寻找的。
答案4
你想要做的事情你无法用 umask 实现,请尝试使用 mask 来代替。
umask 的作用如下:
- 每个默认文件夹的情况是用 775 创建的,文件用 664 创建的(所有者/用户读+写组读+写其他读 - 文件夹还为用户组和其他人设置了遍历)
如果不喜欢这个,可以通过设置一个umask(如027)来削减权限,这意味着用户不更改组-2(默认减去写入)其他-7(默认减去读/写/执行(如果文件夹则遍历)
简单来说: umask 027 ~= chmod gw o-rwx
所以使用 umask 你只能降低/削减权限
添加/更高权限使用掩码
如果您需要了解更多信息,请阅读 umask 和 mask 的手册页或查看维基百科上的条目http://en.m.wikipedia.org/wiki/Umask