今天幫助已好友配置vsftpd,多是長時間不用這個東西了,居然這裏個半天才把需求折騰完,node
其實需求簡單,就是使用系統帳戶登陸,不可跳轉目錄,限制權限,只能上次不能下載。ssh
懵逼一:ui
最開始配置sftp協議的時候,配置到Match user那個地方,也就是sftp協議下限制某一個用戶的目錄,遇到一個奇怪的報錯,登陸一直日誌提示:spa
sshd[pid]: fatal: chroot into directory without nodev and either noexec or nosuid日誌
估計通常人都沒怎麼見過,也提示的不明顯,其實最後我也沒弄明白意思,只是在https://www.suse.com/support/kb/doc/?id=7009112code
這個網址的B項目獲得了啓發,最終經過修改chroot的目錄解決,其實總結一下就是用戶的目錄上次目錄必須是root屬主,而後呢就是cdn
你再定義match的時候 有個chroot路徑不須要寫到具體的用戶目錄,寫到上一次便可。好比用戶目錄是/data/ftproot/user1,那麼match下blog
ChrootDirectory配置到/data/ftproot便可,而且ftoroot目錄必須root:root不然就是這個報錯。ip
一個完整的match備份:cmd
Subsystem sftp internal-sftp #這個不屬於macth一部分,可是若是使用ssh隧道必須修改爲這個。 #如下是一個match示範
Match user cdnok ChrootDirectory /opt/ftproot/ X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
懵逼二:
系統帳戶沒法登陸,本地登陸參數已經YES,可是使用ftp://ip 登陸,一直提示你輸入帳號密碼,實際狀況是ftp帳號密碼是對的。
解決:
通過檢查配置開啓了chroot_list_enable=YES選項,你們可能都知道此選項的做用是定義限制不能切換目錄的用戶。
可能當時腦子短路了就認爲配置完,全部用戶默認就是不能切換目錄了。形成死活登陸不了,最後才發現若是開啓了
此配置項目,那麼與之配套的chroot_list_file=/etc/vsftpd/chroot_list,必須啓動,必須手動簡歷這個文件,把你的帳戶
放進去,這樣纔算完整限制用戶調整目錄,2個必須一塊兒使用。
懵逼三:
細化用戶權限的時候,重啓後直接沒法訪問。
解決:
經檢查是個別權限關鍵字的問題,我也是在網上找了一個下載專用的權限:
此處備份:(英文逗號,不能有空格)
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST