一、環境準備
yum -y install glibc
yum -y install libcap
yum -y install libnsl
yum -y install openssl
yum -y install pam
二、yum安裝
yum -y install vsftpd
三、啓動
systemctl start vsftpd
ps aux | grep vsftpd #檢測是否啓動
四、本地用戶登錄
1、修改配置文件
vim /etc/vsftpd/vsftpd.conf
啓用如下:
anonymous_enable=NO #不允許匿名用戶登錄
local_enable=YES #允許本地用戶登錄
write_enable=YES #允許寫入權限 包括刪除修改
local_umask=022 #本地用戶文件上傳權限限制
dirmessage_enable=YES #顯示目錄說明文件
xferlog_enable=YES #記錄所有的上傳下載信息,默認放在/var/log/vsftpd.log
connect_from_port_20=YES #使用20端口
listen=YES
pam_service_name=vsftpd
userlist_enable=YES #在userlist_file文件內的用戶可以使用ftp服務
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
2、添加用戶
useradd ftpuser -s /sbin/nologin #添加賬戶 禁止登錄bash
passwd ftpuser #設置密碼
3、編輯user_list文件
vim /etc/vsftpd/user_list
添加ftpuser等用戶到文件中
4、開啓防火牆 ftp默認端口21
firewall-cmd --zone=public --add-port=21/tcp --permanent #開啓防火牆21端口
systemctl restart firewalld.service #重啓防火牆服務
firewall-cmd --query-port=21/tcp #查詢防火牆21端口是否打開
注:netstat命令是在可用接口上監聽端口,若該端口沒有被佔用,則不會查詢到
5、修改SELinux
getsebool -a | grep ftp
可以看到都是off,沒有開啓外網訪問
setsebool -P allow_ftpd_full_access on
setsebool -P tftp_home_dir on
6、啓動服務
systemctl start vsftpd
7、在另一臺linux服務器安裝ftp客戶端,接下來的操作都在這臺進行(也可以在windows終端執行)
yum -y install ftp
同時開啓本機防火牆的21端口 或者是關閉防火牆
8、登錄到服務器端192.168.162.128
ftp 192.168.162.128
可以看到,提示530登陸失敗,尋找錯誤原因
解決辦法:
決定一個用戶是否可以通過ftp登錄有兩個配置文件:ftpusers和user_list。在ftpusers中的用戶都不能通過ftp登錄,在user_list中的用戶根據配置決定。給這兩個文件授權。chmod 644 ftpusers chmod 644 user_list (不過這裏好像沒說權限問題)
查看日誌tail -f /var/log/secure 部分信息爲Unregistered Authentication Agent for unix-process:6284
修改/etc/pam.d/vsftpd文件 註釋#auth required pam_shells.so
該pam設置含義爲如果用戶想登錄系統,那麼它的shell必須是在/etc/shells文件中之一的shell
9、測試
- 下載文件
-----get 文件名
上傳文件
-----put 文件名
刪除文件
-----delete 文件名
修改文件名
-----rename 原文件名 新文件名
五、虛擬用戶登錄
1、繼續修改配置文件
vim /etc/vsftpd/vsftpd.conf
在本地用戶的基礎下啓用如下:
guest_enable=YES #啓用虛擬用戶
guest_username=vuser #虛擬用戶使用的系統用戶名
virtual_use_local_privs=YES #設定虛擬用戶的權限符合他們的宿主用戶。
user_config_dir=/etc/vsftpd/vusers_conf #虛擬用戶使用的配置文件目錄
2、在/etc/vsftpd下面建立虛擬用戶信息文件,在其中寫入用戶和密碼,奇數行爲用戶,偶數行爲密碼
vim vusers
3、生成虛擬用戶數據庫文件
db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db
爲了保護信息,該文件是亂碼文件
4、設置文件權限
chmod 700 /etc/vsftpd/vusers.db
5、配置pam文件
vim /etc/pam.d/vsftpd
註釋掉所有內容,然後添加(不能寫成db=/etc/vsftpd/vusers.db)
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
6、添加一個系統用戶vuser,用它來對應所有虛擬用戶,虛擬用戶使用系統用戶訪問ftp
useradd vuser
mkdir -p /home/ftp/vuser #虛擬用戶的目錄
chown vuser:vuser /home/ftp/vuser
7、創建虛擬用戶使用的配置文件目錄
mkdir /etc/vsftpd/vusers_conf
8、設置虛擬用戶配置文件(文件名設置成和賬戶名相同)
touch /etc/vsftpd/vusers_conf/admin
touch /etc/vsftpd/vusers_conf/ham
touch /etc/vsftpd/vusers_conf/snake
並在其中寫入(注意配置文件行後面不能有空格,否則會報錯):
local_root= /home/ftp/vuser #指定虛擬用戶的目錄
anon_world_readable_only=NO #瀏覽FTP目錄和下載
anon_upload_enable=YES #允許上傳
anon_mkdir_write_enable=YES #允許建立和刪除目錄
anon_other_write_enable=YES #允許改名和刪除文件
9、重新啓動ftp服務
systemctl restart vsftpd
10、虛擬用戶登錄192.168.162.128
出現權限被拒絕:
530 Permission denied.
Login failed.
解決:在user_list中加入虛擬用戶
11、測試
- 上傳文件
-----put 文件名
下載文件
-----get 文件名
刪除文件
-----delete 文件名
修改文件名
-----rename 原文件名 新文件名
(注:部分資料來源於網絡,如有侵權,請聯繫作者)