sftp使用者在特定目錄下的唯讀權限

sftp使用者在特定目錄下的唯讀權限

我想創建特定的 SFTP 用戶,該用戶將有權僅讀取/var/www/vhosts.對此有什麼幫助嗎?

答案1

Unix 系統提供的chroot指令可讓您將/使用者的目錄重設到檔案系統層次結構中的某個目錄,在該目錄中使用者無法存取「更高層」的檔案和目錄。

但是,就您的情況而言,提供由遠端 shell 服務實現的虛擬 chroot 是合適的。 sftp 可以輕鬆設定為將本機使用者限制為檔案系統的特定子集。

因此,在您的情況下,您想要chroot將使用者foouser 放入/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並取得檔案。不能putdelete

在右側資料夾中編輯 sftp /etc/passwd。將使用者的行更改foo為如下所示

$ sudo vi /etc/passwd

..
foo:x:1001:1001::/var/www/vhosts/:
..

這會將使用者主資料夾變更foo為您的 sftp 伺服器資料夾。

相關內容