對sftp賬號提供讀寫權限的控制

場景:給特定的服務器提供sftp賬號,提供文件上傳,修改和刪除功能,但不提供ssh訪問,只能sftp登錄操作。

處理方案:使用openssh-server,使用sftp實現

具體操作:
1、ssh -V 保證版本在4.8p1以上;
2、grouadd sftpusers 用於管理sftp賬號的組
3、useradd -s /bin/false -G sftpusers sftpuser1
將用戶的shell設置爲/bin/false使他沒有登陸shell的權限

4、vi /etc/ssh/sshd_config
修改 Subsystem 爲:
Subsystem sftp internal-sftp
然後再到文件最尾處增加配置設定屬於用戶組sftpusers的用戶都只能訪問他們自己的home文件夾
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
保存並關閉文件
5. 修改sftpuser1用戶home文件夾的權限,讓其屬於root用戶
chown root:sftpusers ~ sftpuser1
chmod 755 /home/sftpuser1 如果給予寫的權限的話,需要下面新增目錄
mkdir write
chown sftpuser1:sftupusers ./write
chmod 775 ./write
tips: 因爲 /home/sftpuser1 已經chroot 爲 sftpuser1用戶,不能也不建議擴大權限。
6. 重啓sshd服務
service sshd restart
7. 測試用戶賬號
ssh sftpuser1@localhost
連接會被拒絕或者無法登陸
sftp sftpuser1@localhost
登陸後你會發現你的賬號無法切換到除自己home目錄之外的地方的
8 .如果讓別人上傳的文件,直接生效,也可以配置軟鏈接關聯到應用目錄下去
如:把 home/sftpuser1/write/ 目錄映射爲 /www/app/
ln -s /home/sftpuser1/write/ /www/app/

常見問題:
如果你鏈接服務器的時候出現下面的提示:
Write failed: Broken pipe
Couldn’t read packet: Connection reset by peer
這個問題的原因是ChrootDirectory的權限問題,你設定的目錄必須是root用戶所有,否則就會出現問題。所以請確保sftp用戶根目錄的所有人是root, 權限是 750 或者 755。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章