1. 安裝vsftpd及pam認證服務軟件
yum install vsftpd* -y yum install pam* libdb-utils libdb* --skip-broken -y
#設置開機啟動
systemctl enable vsftpd.service
#啟動
systemctl start vsftpd.service
2. 配置/etc/vsftpd/vsftpd.conf 文件
listen=YES #若設定為 YES 表示 vsftpd 是以 standalone 的方式來啟動的 anonymous_enable=NO #靜止匿名登錄 local_enable=YES #設定本地用戶可以訪問 local_umask=022 #設定上傳后文件的權限掩碼 dirmessage_enable=YES #設定開啟目錄標語功能 use_localtime=YES xferlog_enable=YES #設定開啟日志記錄功能 connect_from_port_20=YES #設定端口20進行數據連接 chroot_local_user=YES #禁止用戶訪問除主目錄以外的目錄 local_root=/data/vsftpd #訪問的目錄 ascii_upload_enable=YES ascii_download_enable=YES #設定支持ASCII模式的上傳和下載功能 pam_service_name=vsftpd #設定,啟用pam認證 guest_enable=YES #啟動虛擬用戶 guest_username=vsftpd #虛擬用戶使用的系統用戶名 user_config_dir=/etc/vsftpd/vsftpd_user_conf #虛擬用戶使用的配置文件目錄 virtual_use_local_privs=YES #虛擬用戶和本地用戶有相同的權限 allow_writeable_chroot=YES #只能訪問自身所屬目錄,否則會有 500 錯誤
3. 創建虛擬用戶
創建vsftpd系統用戶 #useradd vsftpd -d /data/vsftpd -s /sbin/nologin #chown -R vsftpd:vsftpd /data/vsftpd 填寫用戶名good和密碼123,其它依次填寫 #vim /etc/vsftpd/ftpuser.txt good 123 生成數據庫文件 #db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db 在/etc/pam.d/下創建配置vsftpd的數據庫pam認證文件vsftpd,其它注釋或刪掉 #vim /etc/pam.d/vsftpd auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login account required pam_userdb.so db=/etc/vsftpd/vsftpd_login 配置good用戶 #mkdir -p /etc/vsftpd/vsftpd_user_conf #vim /etc/vsftpd/vsftpd_user_conf/good local_root=/data/vsftpd/good write_enable=YES #mkdir -p /data/vsftpd/good
4. 配置selinux
查看 selinux配置 [root@localhost ~]# getsebool -a | grep ftpd ftpd_anon_write --> off ftpd_connect_all_unreserved --> off ftpd_connect_db --> off ftpd_full_access --> off ftpd_use_cifs --> off ftpd_use_fusefs --> off ftpd_use_nfs --> off ftpd_use_passive_mode --> off 使能ftpd_full_access #setsebool -P allow_ftpd_full_access 1
需要防火牆添加FTP服務。
#firewall-cmd --permanent --zone=public --add-service=ftp
#firewall-cmd --reload
5. 重啟vsftpd並測試
[root@localhost ~]#systemcl restart vsftpd.service [root@localhost ~]# ftp localhost Trying ::1... ftp: connect to address ::1拒絕連接 Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 3.0.2) Name (localhost:root): good 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (127,0,0,1,166,74). 150 Here comes the directory listing. -rwxrwxrwx 1 1001 1001 0 Sep 18 09:17 good -rwxrwxrwx 1 1001 1001 0 Sep 18 09:23 test2 226 Directory send OK. ftp>
6. 虛擬用戶權限配置
管理員權限 local_root=/data/vsftpd anon_world_readable_only=NO write_enable=YES anon_mkdir_write_enable=YES anon_upload_enable=YES anon_other_write_enable=YES 只能讀寫不能修改刪除 local_root=/data/vsftpd/good anon_world_readable_only=NO write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=NO virtual_use_local_privs=NO 只能讀 local_root=/data/vsftpd anon_world_readable_only=NO
參考文獻:
https://www.cnblogs.com/chenbaoli/p/8195697.html
https://blog.csdn.net/xujin12368/article/details/80920246
http://www.cnblogs.com/fengdejiyixx/p/9324689.html
https://blog.csdn.net/programer_bei/article/details/52333586
