2012-08-01 126 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