2010-10-08 35 views
7

誰能告訴我如何爲單個sftp用戶設置umask?值得一提的是IBM AIX ...設置一個sftp帳戶的umask?

添加umask 002到該用戶的.profile沒有工作......(我們的目標是,這個用戶的文件是從同一組入店人)。

我已經看到了編輯sftpd配置的方式,儘管我只想爲一個用戶設置它,所以我期望找到一些不需要root權限的東西。

謝謝!

f。

回答

3

用戶可以設置這件事自己沒有根的參與,無論是從客戶端(每個連接)或服務器(每個公鑰)上。

從客戶端,我們可以覆蓋使用使用-s選項來處理SFTP互動的遠程命令:

sftp -s 'umask 0777; env PATH=${PATH}:/usr/libexec/openssh:/usr/lib/ssh:/usr/sbin sftp-server' [email protected] 

(如果你的sftp-server沒有安裝在上面提到的位置之一,添加到路徑也)。

從服務器,我們可以強制執行特定的命令,只要使用特定的公鑰進行連接。這將運行所有連接,而不僅僅是SFTP的連接,但我們可以檢查$SSH_ORIGINAL_COMMAND環境變量來決定採取什麼行動。添加類似以下內容authorized_keys可能足以滿足您的需求:

command="umask 0777; if [[ -n $SSH_ORIGINAL_COMMAND ]]; then eval $SSH_ORIGINAL_COMMAND; else exec bash --login; fi" ssh-rsa AAAAB3NzaC1yc2EA... 

(代取自己喜歡的外殼,以處理任何交互式登錄,並指出,如果你使用tcsh你必須對此進行修改該shell的語法)。

3

我不瞭解AIX,但您應該可以使用OpenSSH執行此操作,但它需要root權限。你需要爲sftp的服務器組件編寫一個包裝腳本。包裝將需要有選擇地更改用戶的umask,然後exec sftp服務器。爲了選擇一個用戶,我偏愛:

Subsystem sftp /usr/libexec/openssh/sftp-server 

id --user 

如果您要創建這樣一個腳本/usr/local/sbin/sftp-wrapper,你會再/etc/ssh/sshd_config從更改SFTP子系統的配置到:

Subsystem sftp /usr/local/sbin/sftp-wrapper 

除了編寫包裝腳本之外,每一步都需要root權限。

評論:我相信當你通過sftp連接時,sftp服務器是由root啓動的。因此,默認的umask派生自root的umask。我不認爲有一種方法可以在該用戶的配置中爲特定用戶更改此設置。如果你想改變所有用戶的SFTP的umask,你可以做一個簡單的修改到SFTP子系統配置:

Subsystem sftp /bin/bash -c ‘umask 002; /usr/libexec/openssh/sftp-server’ 
1

的111八進制的umask將十進制收率73,這是我們 將在此使用例。

#vi /etc/ssh/sshd_config 

添加以下兩行的文件的末尾配置SFTP 的umask一組用戶。

Match Group <group name> 
ForceCommand internal-sftp -u 73 

或者,在文件的末尾添加以下兩行來配置單個用戶的sftp umask。

Match User <user name> 
ForceCommand internal-sftp -u 73 

重新啓動sshd守護進程。

#stopsrc -s sshd 

#startsrc -s sshd 

這將幫助:Aamod錢德拉

22

對我很好。然而,需要一些研究,因爲你提供的是從文檔中提取的。在我的情況下,一個具體的例子將是把連續兩行的在/ etc/SSH/sshd_config中

Match Group www-data 
ForceCommand internal-sftp -u 2 

在我來說,我想要做的到底是umask設置爲「002」(2十進制)如果組中'www-data'的某個人登錄。

還有一個選項可以使用env。可變的SSH_ORIGINAL_COMMAND而不是'internal-sftp',但我沒有時間去追求。以下線

+2

小心你這樣做。在上面的例子中,整個組的'www-data'將不能通過控制檯執行ssh。我收到錯誤:「此服務只允許sftp連接。連接關閉。」 – dominikz 2013-06-19 12:51:18

+0

這也適用於我(在亞馬遜Linux上)。我以前一直在使用上述的SSH_ORIGINAL_COMMAND方法。出於某種原因,當我更改爲sftp-internal並設置Chroot Directory時,authorized_keys中的umask停止了任何效果。謝謝! – mikeabout 2013-08-03 19:14:36

+0

對於我們大多數關心sftp用戶安全的人來說,chroot是解決方案。這個答案幫助我解決了沒有shell訪問或主目錄的這些用戶的umask問題。 +1。然而,這在搜索中並沒有很快出現。 – nightgaunt 2014-03-14 12:12:02

0

我不知道爲什麼不爲我工作:

*匹配組

ForceCommand internal-sftp -u 73 

最後「-u技術」添加子系統上的SUSE 11.3正常工作:

*Subsystem sftp /usr/lib64/ssh/sftp-server **-u 0002*** 

現在specifiled用戶只能用公鑰密碼:

Match User nappcpr, Group iwcopy 

    PasswordAuthentication no 

    PubkeyAuthentication yes 

    **KbdInteractiveAuthentication no**