我想創建特定的 SFTP 用戶,該用戶將有權僅讀取/var/www/vhosts
.對此有什麼幫助嗎?
答案1
Unix 系統提供的chroot
指令可讓您將/
使用者的目錄重設到檔案系統層次結構中的某個目錄,在該目錄中使用者無法存取「更高層」的檔案和目錄。
但是,就您的情況而言,提供由遠端 shell 服務實現的虛擬 chroot 是合適的。 sftp 可以輕鬆設定為將本機使用者限制為檔案系統的特定子集。
因此,在您的情況下,您想要chroot
將使用者foo
user 放入/var/www/vhosts/
目錄中。
您可以為您的使用者設定一個 chroot 目錄,將其限制在子目錄中,/var/www/vhosts/
如下所示/etc/ssh/sshd_config
;
建立使用者foo
並設定密碼
sudo useradd foo
sudo passwd foo
僅為 SFTP 創建群組
$ sudo groupadd sftp_users
foo
新增至僅 SFTP 群組的用戶
$ sudo usermod -G sftp_users foo
更改所有者,因為讀取/寫入權限
sudo chown root.root /var/www/vhosts/
新增權限
sudo chmod 755 /var/www/vhosts/
編輯/etc/ssh/sshd_config
sudo vi /etc/ssh/sshd_config
註解掉並新增如下行
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
添加在最後
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/www/vhosts/
ForceCommand internal-sftp
(注意:Match
塊需要位於結尾文件的sshd_config
。
重啟ssh
服務
sudo service ssh restart
透過此配置,您可以 ssh 進入資料夾ubuntu
並取得檔案。不能put
或delete
在右側資料夾中編輯 sftp /etc/passwd
。將使用者的行更改foo
為如下所示
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
這會將使用者主資料夾變更foo
為您的 sftp 伺服器資料夾。