Ubuntu
如何通過 SSH/SFTP 訪問指定文件夾?
我希望每個使用者只能通過 SFTP 連接訪問他們特定的主目錄。
範例結構:
admin1 access to: /var/www/vhosts/vhost1 (optional)editor1 access to: /var/www/vhosts/vhost1/public admin2 access to: /var/www/vhosts/vhost2 (optional)editor2 access to: /var/www/vhosts/vhost2/public etc... ...`
也許您指的是Jail,一個特定使用者將被限制的文件夾。
我將嘗試恢復配置範例:
1)環境準備
你需要做一些步驟來準備監獄環境。我們必須尊重 SSH 施加的一些安全限制(如果你願意,你可以禁用它們,這真的是個壞主意!)。
- Jail文件夾必須是 root 擁有的
- Jail fodler 不能被組/其他人可寫
.ssh/
文件夾必須有模式 700authorized_keys
文件必須有模式 600假設您有一個使用者,其使用者名是
echoes
,主目錄是/home/echoes/
,假設我們想將其限制在自己的主目錄中。假設正如您所說,我們要使用具有公鑰授權機制的 SFTP 帳戶。mkdir /home/echoes/.ssh # write echoes public-key into /home/echoes/.ssh/authorized_keys chown root /home/echoes/ chmod 755 /home/echoes/ chown -R echoes:echoes /home/echoes/.ssh/ chmod 700 /home/echoes/.ssh/ chmod 600 /home/echoes/.ssh/authorized_keys
- SSH 配置
現在我們需要匹配使用者並將其限制在自己的主目錄中。所以,讓我們打開 SSH Server 配置文件:
vim /etc/ssh/sshd_config
啟用
internal-sftp
管理 sftp 連接:Subsystem sftp internal-sftp
將以下行複制粘貼到
sshd_config
配置文件中。我們是說:當你匹配時echoes
,只需將它移動到定義的ChrootDirectory
文件夾中(在這個例子中是它的 onw 主文件夾)。Match user echoes ChrootDirectory /home/echoes/ ForceCommand internal-sftp
3)允許在子文件夾內進行寫入操作 如您所見,使用者的主文件夾現在是 root 擁有的,因此
echoes
將無法向其中寫入一些文件。出於這個原因,您可以創建一個新的子文件夾(即echoes-write
)允許使用者在其中寫入:mkdir /home/echoes/echoes-write/ chown echoes:echoes /home/echoes/echoes-write/ chmod ug+w /home/echoes/echoes-write/
4)自動移動到自己的可寫文件夾中
如果您需要自動:
匹配使用者 -> 將其移動到監獄 -> 將其自動移動到其自己的監獄的可寫子文件夾中,請告訴我,我將嘗試恢復該場景作為配置步驟。
由於您沒有寫有關係統的資訊,因此我做了很多假設。