Linux下使用ftp共享文件功能相對簡單,默認情況下,啟動vsftpd服務,即可通過匿名用戶和linux系統的普通用戶進行登錄,相關權限可通過編輯/etc/vsftpd/vsftpd.conf配置文件進行……
本文主要介紹如何用Linux搭建可供虛擬用戶(即/etc/passwd中不存在的用戶)登錄的FTP服務器
1.基本原理圖
2.是否安裝了vsftpd
3.安裝vsftpd
4.關閉selinux和iptables
5.創建虛擬宿主用戶
6.編輯vsftpd.conf配置文件
7.創建虛擬賬戶文件
8.配置vsftpd的pam賬戶認證文件
9.配置虛擬用戶個人的配置文件
10.測試
11.補充介紹
1. 基本原理圖
2. 查看是否安裝了vsftpd服務
rpm -q vsftpd rpm -qa |grep vsftpd
3. 安裝vsftpd(以yum安裝為例)
yum install vsftpd -y
4. 關閉selinux和iptables(也可配置相關訪問策略,防止系統阻斷),讓vsftpd開機自啟動
# 永久關閉selinux sed -i "s#=enforcing#=disabled#g" /etc/selinux/config setenforce 0 # 永久關閉iptables etc/init.d/iptables stop chkconfig iptables off # 設置vsftpd開機自啟動 chkconfig vsftpd on
5. 創建虛擬宿主用戶
useradd virtuser -s /sbin/nologin echo "123456" | passwd virtuser -stdin
6. 備份/etc/vsftpd/vsftpd.conf配置文件並將vsftpd.conf配置文件編輯內容如下
vim /etc/vsftpd/vsftpd.conf mv /etc/vsftpd/vsftpd.conf{,.bak}

# 是否允許匿名登陸 anonymous_enable=NO # 是否允許本地用戶登陸 local_enable=YES # 是否具備寫入權限 write_enable=NO # 上傳文件的權限掩碼 local_umask=022 # 是否進行日志記錄 xferlog_enable=YES xferlog_std_format=YES xferlog_file=/var/log/vsftpd.log # FTP開啟數據傳輸端口20 connect_from_port_20=YES # 會話超時時間/秒 idle_session_timeout=600 # 數據傳輸連接超時時間 data_connection_timeout=120 # 是否允許進行異步傳輸 async_abor_enable=YES # 請求歡迎信息 ftpd_banner=Welcome to blah FTP service. # linux中FTP默認情況下允許用戶從ftp主目錄切換到linux系統的其他目錄 # 可開啟chroot_list_enable功能,通過列表文件,進行用戶限制 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_deny # 是否允許FTP用戶使用"ls -R"命令,該命令會對系統造成較大的負擔 ls_recurse_enable=NO # 設定vsftpd服務工作在standalone模式,可理解為擁有自己的守護進程 listen=YES # 設定pam服務下的vsftpd驗證配置文件名,pam驗證配置文件位於/etc/pam.d/目錄下 pam_service_name=vsftpd # 是否啟用userlist列表限制功能 userlist_enable=YES # 是否支持TCPwrappers tcp_wrappers=YES # 是否進行反向域名解析 reverse_lookup_enable=NO # 啟用虛擬用戶功能 guest_enable=YES # 指定虛擬的宿主用戶 guest_username=virtuser # 虛擬用戶權限符合它們的宿主用戶 virtual_use_local_privs=YES # 指定虛擬用戶的配置文件目錄 user_config_dir=/etc/vsftpd/vconf
7. 創建可供pam服務識別的虛擬賬戶文件(虛擬用戶:test,密碼:123456)
mkdir /etc/vsftpd/vconf cd /etc/vsftpd/vconf/
echo -e "test\n123456" >password db_load -T -t hash -f password{,.db}
8. 配置vsftpd的pam賬戶認證文件,加入下面兩行賬戶認證配置(一定要加在文件內容的最上面)
vim /etc/pam.d/vsftpd auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vconf/password account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vconf/password
9. 創建共享目錄並配置虛擬用戶的個人配置文件(配置文件位於/etc/vsftpd/vconf/目錄下,配置文件名稱要和虛擬用戶名一致)
mkdir /share chown -R virtuser /share vim /etc/vsftpd/vconf/test

#指定虛擬用戶倉庫的具路徑 local_root=/share #允許寫的操作 write_enable=YES #不允許下載操作 download_enable=NO #設定並發客戶端的訪問數量 max_clients=20 #設定客戶端的最大線程數 max_per_ip=10 #設定用戶的最大傳輸速率,單位b/s local_max_rate=102400
10. 創建測試文件,啟動vsftpd
echo "testfile" >>/share/abd.txt
chown -R virtuser /share
/etc/init.d/vsftpd start ps -aux|grep vsftpd
11. 測試,成功!!
12. 補充介紹,默認情況下,登錄linux中ftp的用戶擁有切換到linux系統其它目錄的權限,可通過配置chroot_list_enable=YES進行限制
12.1 /etc/vsftpd/vsftpd.conf文件中配置如下內容
# linux中FTP默認情況下允許用戶從ftp主目錄切換到linux系統的其他目錄 # 可開啟chroot_list_enable功能,通過列表文件,進行用戶限制 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_deny
12.2 創建/etc/vsftpd/chroot_deny文件,把需要限制的用戶名加入到文件中
echo "test" >>/etc/vsftpd/chroot_deny