第一步:建立sftp服務用戶組,建立sftp服務根目錄vim
groupadd sftp #此目錄及上級目錄的全部者(owner)必須爲root,權限不高於755,此目錄的組最好設定爲sftp mkdir /srv/sftp chown -R root:sftp /srv/sftp chmod -R 0755 /srv/sftp
第二步:備份sshd配置文件而後編輯服務器
mv /etc/ssh/sshd_config ~/backup/sshd_config_xxx vim /etc/ssh/sshd_config
這一步,註釋掉/etc/ssh/sshd_config文件中的此行代碼:ssh
Subsystem sftp /usr/libexec/openssh/sftp-server
添加以下代碼:命令行
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /srv/sftp/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
功能可簡述爲:凡是在用戶組sftp裏的用戶,均可以使用sftp服務
使用sftp服務鏈接上以後,可訪問目錄爲/srv/sftp/username
舉個例子:code
用戶test是一個sftp組的用戶,那麼他經過sftp鏈接服務器上以後,只能看到/srv/sftp/test目錄下的內容
用戶test2也是一個sftp組的用戶,那麼他經過sftp鏈接服務器以後,只能看到/srv/sftp/test2目錄下的內容server
第三步:添加有效的sftp用戶,且給予用戶寫權限it
#此例將建立一個名稱爲test的sftp賬號 #建立test的家目錄:test目錄的全部者必須是root,組最好設定爲sftp,權限不高於755 mkdir /srv/sftp/test chmod 0755 /srv/sftp/test chown root:sftp /srv/sftp/test #添加用戶 使用參數 -s/sbin/nologin禁止用戶經過命令行登陸 useradd -gsftp -d/srv/sftp/test -s/sbin/nologin test
關於寫權限,以下解決方案並非很完美test
#在test目錄下建立一個能夠寫的目錄 mkdir /srv/sftp/test/write chown -R test:sftp /srv/sftp/test/write
這樣test用戶就能夠在本身家目錄裏的write目錄下擁有寫入權限了登錄
最後再強調一下,sftp服務的根目錄的全部者必須是root,權限不能超過755(上級目錄也必須遵循此規則),sftp的用戶目錄全部者也必須是root,且最高權限不能超過755.ftp