2009-10-06 58 views
33

我需要爲我的服務器上的webroot內的目錄提供SFTP訪問權限。我已經設置了ben_files作爲一個用戶,並建立自己的主目錄Linux shell將sftp用戶限制到他們的主目錄?

/var/www/vhosts/mydomain.com/files

這是所有罰款,如果他與普通的老式FTP連接 - 他只是限制到那個目錄,但爲了啓用SFTP我不得不將他添加到bin/bash外殼,這突然打開了我的整個服務器...

有沒有一種方法讓他SFTP訪問,但沒有打開所有我的目錄?我真的很喜歡他只限於他的家;)

謝謝!

回答

46

OpenSSH ≥ 4.8支持ChrootDirectory指令。

加入/etc/sshd_config/etc/ssh/sshd_config或任何你安裝的全球sshd配置文件是:

 
Match user ben_files 
     # The following two directives force ben_files to become chrooted 
     # and only have sftp available. No other chroot setup is required. 
     ChrootDirectory /var/www/vhosts/mydomain.com/files 
     ForceCommand internal-sftp 
     # For additional paranoia, disallow all types of port forwardings. 
     AllowTcpForwarding no 
     GatewayPorts no 
     X11Forwarding no 
+0

嗨,我得到一些錯誤 - 啓動sshd:/ etc/ssh/sshd_config:第113行:錯誤配置選項:匹配和/ etc/ssh/sshd_config:第115行:錯誤的配置選項:ForceCommand。這些都阻止sshd再次回來。有任何想法嗎? – MrFidge 2009-10-07 10:44:40

+0

您可能沒有足夠新的SSH版本。 – ephemient 2009-10-07 14:29:52

+0

啊,是啊,我錯過了你的答案 - 我們在4.3,我會考慮讓升級。 – MrFidge 2009-10-08 09:27:51

3

你可以嘗試如果bash啓動名爲rbash,或-r選項是 調用所提供 他的殼設置/bin/rbash

受限shell ,在shell成爲受限。受限制的外殼是 ,使用 來設置比標準外殼更受控制的環境。 它 行爲相同,不同之處來砸下列 是 禁止或不執行:

·  changing directories with cd 

加上更多...

確保你完全理解什麼是允許的,不允許前你用這個。

+0

rbash在發行版中,但它似乎不允許sftp - 我將不得不查看配置我猜。謝謝你的提示! – MrFidge 2009-10-06 20:20:16

3

看看rssh。它可能已經被打包用於您的o/s分發。

+0

它沒有包裝,但這是完美的!我會看看盡快安裝;)謝謝! – MrFidge 2009-10-06 20:19:27

-1

您還可以設置用戶通過使用shell爲/ bin /假:

usermod命令-s /斌/假的用戶名

他們範圍限制SSH從'ing並且只能sftp(或者ftp,如果設置的話)

我使用sftp usres以及提到的chroot設置(其他答案)。

+0

當我將shell設置爲/ bin/false時,我不能再sftp或scp了! – Jeach 2014-08-28 22:20:46

+2

'/ bin/false'限制任何類型的登錄嘗試。你的信息是錯誤的。改用'/ sbin/nologin' – hayonj 2015-02-17 20:48:04

相關問題