有時我們會遇到需要建立新的帳戶讓其他人也能透過像是WinSCP等工具登入伺服器,但是預設的狀態下,新增的帳戶是可以隨意訪問各個目錄的,例如etc、var等重要的目錄。這對伺服器來說挺不安全的,所以為了保障伺服器的安全,進行以下設定便可以將用戶限制在指定的範圍內了。


操作環境:

作業系統: CentOS 7

步驟一(step1):建立會員組

我們要先建立一個給sftp使用的會員組,在這邊我們以 sftp_use 作為會員組的名稱。(當然也可改其他的)


sudo groupadd sftp_use

步驟二(step2):建立帳號

建立新帳號:

sudo useradd sftp_test

替sftp_test設定密碼

sudo passwd sftp_test

001.PNG

將sftp_test帳號添加到sftp_use會員組

sudo usermod -G sftp_use sftp_test

步驟三(step3):更新sftp配置

變更sshd_config文件,修改配置

sudo vim /etc/ssh/sshd_config

如果沒有vim 可以改使用vi。也可以使用winSCP將sshd_config下載下來,編輯後在上傳。


進入sshd_config文件後,找到147行左右,會看到下面這行

Subsystem sftp /usr/libexec/openssh/sftp-server

將上面這行加上[#]註解掉,並添加下面這行

Subsystem sftp internal-sftp

002.PNG

接著,移動到此文件的最下方,添加以下內容


Match Group sftp_use

  X11Forwarding no

  AllowTcpForwarding no

  ChrootDirectory /var/www/html

  ForceCommand internal-sftp


003.PNG

說明: 

sftp_use:會員組名稱 

var/www/html :限制的目錄


步驟四(step4):給予帳號權限

需要進行此步驟,新增的帳號才能有上傳編輯的權限

建立一個資料夾

mkdir /var/www/html/sftp_test

設定權限

chown root /var/www/html/sftp_test

chown root /var/www/html/sftp_test

chmod 755 /var/www/html/sftp_test

chown sftp_test /var/www/html/sftp_test

步驟五(step5):重新啟動sshd service

sudo systemctl restart sshd

步驟六(step6):使用WinSCP測試

使用winSCP登入sftp_test帳號後,會進入到 /var/www/html 資料夾 

我們已經將此帳號限制在 /var/www/html 資料夾了

在這當中我們雖然可以看到 /var/www/html內的所有資料夾,但我們只有授與此帳號編輯sftp_test資料夾的權限

所以此帳號就只能在sftp_test資料夾上傳檔案

04.png


文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/centos7-sftp-ssh-chroot-directory