系統環境 centos7.3 版本linux
ftp 根目錄 : /data/ftp
ftp 配置文件目錄:/etc/vsftpd
ftp 虛擬用戶權限配置文件目錄:/etc/vsftpd/vuser_config數據庫
實現目標:vim
1,匿名用戶能夠登陸,可是不能訪問虛擬用戶的宿主目錄,只能訪問共享目錄
2,虛擬用戶對本身的宿主目錄有任何權限,且只能在本身宿主目錄中操做centos
1,安裝vsftpd和db_load加密工具app
1tcp 2ide 3工具 4測試 5ui 6 |
#要關閉selinux 和防火牆或者開啓容許的端口,否則訪問會有問題 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #修改配置文件 setenforce 0 #臨時關閉 systemctl stop firewalld.service #關閉防火牆
yum install vsftpd db4-utils -y |
2,建立本地用戶[用於映射虛擬用戶]
1 2 3 4 5 6 7 |
#創建ftp用戶目錄 mkdir -p /data/ftp #建立用戶 useradd -d /data/ftp vuser -s /sbin/nologin 更改權限和主組權限 chmod 755 /data/ftp chown vuser.root /data/ftp |
3,建立虛擬用戶[用戶和密碼]文件
1 2 3 4 5 |
vim /etc/vsftpd/vuser-list jin [用戶名] 123456 [密碼] jinc [用戶名] 123123 [密碼] |
4,加密用戶密碼文件生成數據庫文件
1 2 3 4 |
cd /etc/vsftpd/ db_load -T -t hash -f ./vuser-list ./vuser-list.db chmod 600 vuser-list.db
|
5,建立PAM認證文件
1 2 3 4 |
vim /etc/pam.d/vuser.vu auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list #注意64位系統寫/lib64這個路徑,32位系統要寫成/lib,下同! account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list
|
6,修改配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
vim /etc/vsftpd/vsftpd.conf
#容許匿名用戶訪問 anonymous_enable=yes
local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/xferlog xferlog_std_format=YES
listen=NO listen_ipv6=YES
#修改ftp默認目錄到/data/ftp下面 chroot_local_user=YES local_root=/data/ftp anon_root=/data/ftp
#pam認證文件 pam_service_name=vuser.vu
#虛擬用戶權限配置目錄 user_config_dir=/etc/vsftpd/vuser_config
userlist_enable=YES tcp_wrappers=YES allow_writeable_chroot=YES one_process_model=NO
#開啓虛擬用戶 guest_enable=YES guest_username=vuser
重啓vsftpd服務 systemctl restart vsftpd.service |
7,建立虛擬用戶[權限]配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
cd /etc/vsftpd/vuser_config vim jin [有全部權限] local_root=/data/ftp/jin #設置登陸後禁錮的目錄 write_enable=yes #開放寫權限 anon_world_readable_only=no #開放下載權限 anon_upload_enable=yes #開放上傳權限 anon_mkdir_write_enable=yes #開放建立目錄的權限 anon_other_write_enable=yes #開放刪除和重命名的權限
vim jinc [只有上傳下載的權限] local_root=/data/ftp/jinc anon_upload_enable=yes anon_world_readable_only=no
|
8,更改虛擬用戶目錄權限
1 2 3 |
#若是不更改的話,匿名用戶是能夠訪問到的 chmod 700 jin chmod 700 jinc |
9,訪問測試:[先在用戶文件夾中建個測試的文件夾或文件,方便識別]
匿名訪問
登陸jin 用戶訪問:
登陸jinc 用戶訪問:
錯誤1:226 Transfer done (but failed to open directory)
解決:selinux 和防火牆致使
錯誤2:500 OOPS: vsftpd: refusing to run with writable root inside chroot()解決:配置文件中加入 allow_writeable_chroot=YES 針對標準vsftpd(standonly)模式, 而後重啓ftp