在Linux系統中,使用SFTP(SSH File Transfer Protocol)時,可以通過配置SSH服務器來限制用戶的訪問權限。以下是一些常見的方法:
sshd_config
文件編輯 /etc/ssh/sshd_config
文件,添加或修改以下配置:
# 限制用戶只能使用SFTP
Subsystem sftp internal-sftp
# 創建一個組來管理SFTP用戶
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
然后,創建一個組 sftpusers
并將需要限制的用戶添加到該組:
sudo groupadd sftpusers
sudo usermod -aG sftpusers username
確保用戶的家目錄權限正確:
sudo chown root:root /home/username
sudo chmod 755 /home/username
ChrootDirectory
ChrootDirectory
可以將用戶的根目錄限制在一個特定的目錄中,從而防止用戶訪問其他目錄。
Match Group sftpusers
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
確保 ChrootDirectory
指定的目錄及其所有父目錄的權限設置正確:
sudo chown root:root /home/username
sudo chmod 755 /home/username
并且,確保 ChrootDirectory
目錄下的 uploads
目錄(或其他允許用戶寫入的目錄)的權限允許用戶寫入:
sudo chown username:sftpusers /home/username/uploads
sudo chmod 755 /home/username/uploads
DenyUsers
和 AllowUsers
如果你只想允許特定的用戶使用SFTP,可以使用 DenyUsers
和 AllowUsers
指令。
# 允許特定用戶使用SFTP
AllowUsers user1 user2
# 拒絕所有其他用戶使用SSH
DenyUsers *
Match User
如果你需要更細粒度的控制,可以使用 Match User
指令。
Match User username
ChrootDirectory /home/username
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
在修改了 sshd_config
文件后,記得重啟SSH服務以使更改生效:
sudo systemctl restart sshd
通過以上方法,你可以有效地限制Linux系統中用戶的SFTP訪問權限,確保系統的安全性和數據的完整性。