2012-08-01 123 views
0

我需要控制服务器上文件的传输。有些文件通过scp发送到我的服务器,我希望这样的文件具有一组特定的权限,比如说770.我试过pam_umask.so,/etc/pam.d/login和设置umask/etc/profile但它似乎不起作用。SCP和UMASK Linux Centos

这是Linux上强制通过scp传输文件的umask的最佳方式?

问候, 安德烈

+0

你还可以添加'会议可选pam_umask.so的umask = 770'到'/等/ pam.d/common_session'? – 2012-08-01 16:41:13

+0

在centos 5上没有common_session,我在system-auth中添加了pam_umask,但它不起作用:-( – Kerby82 2012-08-03 08:54:41

+1

你可以尝试将配置直接放到'/ etc/pam.d/sshd'中吗? (在我的发行版中,不是centos,我有'common-session'文件,它包含在其他配置中) – 2012-08-04 08:46:39

回答

2

AFAIK,scp不初始化一个外壳,因此不源的任何文件,如.profile.bashrc/etc/profile

因此,作为Stefan Ferstl评论的唯一方法是使用pam模块pam_umask.so

文件/etc/pam.d/sshd可能是做的最好的地方,如果你想限制这种行为SSH会话:

session optional pam_umask.so umask=0007 
+0

实际上,scp在远程系统上运行scp的另一个副本,并且远程进程将作为一个shell命令启动,如果远程用户的shell是'bash',它将作为非交互式非登录进程启动,在这种情况下它应该读取.bashrc,但不能.bash_profile或其他文件来源于登录会话 – Kenster 2015-01-26 22:38:38

+0

那么,它不会在我的系统上使用openssh。会话在远程系统上通过'sshd'在没有shell的情况下直接启动'scp', .B ashrc'不是来源。 – 2015-01-27 07:40:39

+1

http://pastebin.com/eBr273CD。使用bash可能并不明显,因为它优化了这种情况,并且在执行scp前不分叉。 – Kenster 2015-01-27 12:34:14