1. 新增一個 SFTP 專用的群組
在這裡我們先建立一個 sftponly 群組
addgroup --system sftponly
2. 修改 OpenSSH 的設定檔
編輯 "/etc/ssh/sshd_config" 檔案,先找到以下 Subsystem 設定:
Subsystem sftp /usr/lib/openssh/sftp-server internal-sftp
Subsystem sftp internal-sftp
Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
3. 建立新使用者,並加入 sftponly 群組
建立新使用者後,預設會建立 /home/USERNAME 家目錄 (Home Directory):
adduser sftpuser
adduser sftpuser sftponly
usermod -d / sftpuser
4. 修正使用者帳戶的家目錄權限
也是由於 chroot() 的特殊限制,這個要 chroot() 目錄的擁有者必須為 root,而且該目錄的權限也必須設定為 755 才行:
chown root.root /home/sftpuser chmod 755 /home/sftpuser
sshd[8636]: pam_unix(sshd:session): session opened for user sftpuser by (uid=0)
sshd[8707]: fatal: bad ownership or modes for chroot directory "/home/sftpuser"
sshd[8636]: pam_unix(sshd:session): session closed for user
5. 在使用者目錄下建立允許上傳檔案的目錄,並賦予適當的目錄權限
這一個步驟也是蠻重要的,因為 chroot() 過的目錄擁有者必須為 root 且目錄權限為 755,所以使用者登入後一定無法上傳任何檔案到這個目錄,若要讓使用者能上傳檔案,則必須先幫使用者建立好適當的目錄與設定權限才能夠上傳檔案:
cd /home/sftpuser mkdir upload chown sftpuser.sftpuser upload
相關連結