網上搜索了很多資料,過時,不全,貨不對版
已下步驟親測有效,不包含匿名用戶登錄
1、新建/home/loguser.txt
并填充內容,格式如下
用戶名密碼用戶名密碼用戶名密碼
2、生成db文件用于用戶驗證
執行db_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db
如果沒有裝db會提示你apt-get install,根據提示的內容輸入命令安裝后再次執行生成db
3、設置數據庫文件的訪問權限
chmod 600 /etc/vsftpd_login.db
4、編輯文件/etc/pam.d/vsftpd.vu 將以下內容增加到原文件前面兩行:
auth required pam_userdb.so db=/etc/vsftpd_loginaccount required pam_userdb.so db=/etc/vsftpd_login
如果沒有vsftpd.vu就新建一個
5、新建一個系統用戶vsftpd,用戶家目錄為/home/vsftpd, 用戶登錄終端設為/bin/false(即使之不能登錄系統)
sudo useradd vsftpd -d /home/vsftpd -s /bin/falsesudo chown vsftpd:vsftpd /home/vsftpd
6、根據需要創建/etc/vsftpd.conf,一般要確保含有以下設置:
listen=NOanonymous_enable=NO dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES chroot_local_user=YES guest_enable=YES guest_username=vsftpduser_config_dir=/etc/vsftpd_user_conf pam_service_name=vsftpd.vu local_enable=YES secure_chroot_dir=/var/run/vsftpd
7、新建目錄/etc/vsftpd_user_conf
在目錄內新建對應你第一步的用戶名的文件 比如你有用戶dbtest 那你在這個目錄內也要建立一個dbtest的文件
8、配置單個用戶的權限,確保你的dbtest內是這些內容
write_enable=YESanon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/vsftpd/dbtest
注意所有的配置文件內容前后都不能有空格,不然登錄的時候會提示出錯ahjesus.com
9、新建對應local_root的目錄,并賦予777權限
測試上傳下載編輯刪除
10、掛載虛擬目錄
比如我的ftp的默認目錄是/srv/ftp,我想把/mnt/LinG/WinSoft文件夾,映射到/srv/ftp目錄中,我就如下操作 命令:
#mount --bind [原有的目錄] [新目錄]
先創建文件夾
sudo mkdir /srv/ftp/WinSoft
執行mount命令
sudo mount --bind /mnt/LinG/WinSoft /srv/ftp/WinSoft最后注意,掛載的虛擬目錄也需要777權限
關于500 OOPS: vsftpd: refusing to run with writable root inside chroot()
個人理解是不能在主目錄有寫入權限
這里可以設置主目錄的權限為775
然后設置指定的用戶的目錄權限為777
可以順利登陸操作了
新聞熱點
疑難解答