重新整理了一下記錄
sftponly 群組使用者,登入後鎖定在 html 目錄
sftponly 群組使用者,在 html 目錄中可以增修
○ 新增 sftponly 群組,這個群只用在 sftp
# groupadd sftponly
○ 新增使用者
# adduser -M -s /sbin/nologin -G sftponly sftpuser
* -M 不建家目錄,
* -s /sbin/nologin 不允許 shell 登入
* -G 附加群組,將使用者 sftpuser 附加 sftponly 群組
○ 已經存在的 user 可以附加此群組(不過以下的作法會將該名使用者家目錄限制在 chroot 下)
# usermod -a -G sftponly old_user_account
* -a 僅和 -G 一併使用,將用戶添加到附屬群組
* *** 移除使用者附屬群組
* *** # gpasswd -d 使用者名稱 群組名稱
○ 變更 chroot 該目錄的擁有者
○ 檢查 /var/www 擁有者及群組
# ls -al
# chown root.root /var/www/
* *** 由 chroot 指定目錄開始至頂層擁有者都必須為 root
○ 設定 chroot 讀寫權限
# chmod -R -v 755 /var/www/
* -R 遞迴,將目錄下的所有文件與子目錄一併處理
* -v 顯示指令執行過程
* *** 由 chroot 指定目錄至頂層,group 及 other 都不能具有寫入權限
○ 設定 sftp 上傳目錄權限
# chgrp -R sftponly /var/www/html
* 將 /var/www/html 擁有者群組變更為 sftponly
# chmod 2775 /var/www/html
* 變更 /var/www/html 權限,讓同群組可以寫入
* 前面的 2 是特殊權限 setGID ,設置在目錄表示
* 在這個目錄下建立的新目錄或新檔案其擁有者群組會繼承上層目錄的群組
* 這裡讓 /var/www/html 目錄下新建的檔案及目錄擁有者群組繼承 sftponly 群組
* *** 如果是設置在檔案而且該檔案是可執行的,在執行時就會以群組權限執行
○ 備份 /etc/ssh/sshd_config
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_copy2
○ 編輯 sshd_config
# vi /etc/ssh/sshd_config
Subsystem sftp internal-sftp
* 預設為 sftp-server,修改為 internal-sftp
* 可以限制登入權限以及限制登入後的目錄,
* 讓使用者只能使用 SFTP 傳輸檔案
Match group sftponly
* 限制 sftponly 這個群組
ChrootDirectory /var/www/
* 被 chroot 在 /var/www/ 這個目錄
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp -u 0002 -d html
* -u 0002,配置默認上傳權限 umask,在上傳目錄中
* 新建目錄權限775(777-002),文件權限 664(666-002)
* -d '目錄名稱' 指定登入後的起始目錄,非鎖定
* *** -d 參數 %d 家目錄
* *** -d 參數 %u 指定username目錄
* *** 如果想要讓使用者登入到自已的家目錄可以使用 %u 來設定
○ 重啟 SSH 服務
# systemctl restart sshd
○ ssh 設定可參考 https://www.openssh.com/manual.html
○ 如果登入有問題,可以檢查 /var/log/messages 與 /var/log/secure
* 檢查 SELINUX
# vi /etc/sysconfig/selinux
SELINUX=enforcing # SELINUX 預設為 enforcing
SELINUX=disabled # 關閉SELINUX
# reboot # 重啟
○ 錯誤的 chroot 目錄權限設定會在 log 中出現
fatal: bad ownership or modes for chroot directory...
chroot 目錄的權限設定的兩個要點:
- 由 chroot 指定目錄開始至頂層擁有者都必須為 root
- 由 chroot 指定目錄至頂層,group 及 other 都不能具有寫入權限
留言列表