本教學適用於以下系統環境
- Red Hat Enterprise Linux (RHEL) 6
- Red Hat Enterprise Linux (RHEL) 7
在預設的情況下使用者可以自由瀏覽整個檔案系統,但基於安全的理由,管理員希望SFTP登入伺服器的使用者只能在特定目錄下瀏覽,我們可以透過設置chroot的方式,讓SFTP使用者只可在特定目錄下瀏覽。
沒有使用chroot,登入後的路徑預設為使用者的家目錄,使用者可以進入到任何有權限的目錄瀏覽,例如 /etc 查看系統設定等等。
使用chroot,登入後的路徑在特定目錄,只可在特定目錄下瀏覽。
為了達到上述的需求,以下是詳細的步驟說明:
- 修改SSH的設定檔
編輯「/etc/ssh//sshd_config」設定檔,找到以下Subsystem設定Subsystem sftp /usr/libexec/openssh/sftp-server
註解並新增Subsystem設定
#Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp
在設定檔最後加上以下設定,其中ChrootDirectory設定的 %u 代表使用者帳號
Match group sftponly ChrootDirectory /chroots/%u AllowTcpForwarding no ForceCommand internal-sftp X11Forwarding no
- 建立一個SFTP專用的群組
使用 groupadd 指令建立一個命為 sftponly 的群組# groupadd sftponly
- 建立新的使用者或修改已有的使用者,並加入 sftponly 群組
使用 useradd 指令建立一個命為 sftponlyuser 的使用者# useradd -d /home/sftponlyuser -M -g sftponly -s /bin/false sftponlyuser # passwd sftponlyuser
或
使用 usermod 指令修改已有的使用者
# usermod -g sftponly -s /bin/false sftponlyuser
- 建立使用者的 chroot 特定目錄
建立一個給使用者使用的 chroot 特定目錄,並配置目錄權限。目錄的擁有者必需為 root,並且只能由 root 寫入。# mkdir -p /chroots/sftponlyuser # chmod -R 755 /chroots/sftponlyuser
- 在 chroot 目錄下建立使用者可讀寫的主目錄
# mkdir /chroots/sftponlyuser/myhome # chown sftponlyuser:sftponly /chroots/sftponlyuser/myhome # chmod 755 /chroots/sftponlyuser/myhome
- 重啓 sshd 服務
Red Hat 6# /etc/init.d/sshd restart
Red Hat 7
# systemctl restart sshd.service
鏈結到這頁!