yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl
#創建Vsftpd服務的宿主用戶 useradd vsftpd -M -s /sbin/nologin #創建Vsftpd虛擬宿主用戶 useradd ftpvload -M -s /sbin/nologin
yum -y install vsftpd
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES chown_uploads=NO xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES async_abor_enable=YES ascii_upload_enable=YES ascii_download_enable=YES ftpd_banner=Welcome to FTP Server chroot_local_user=YES ls_recurse_enable=NO listen=YES hide_ids=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES guest_enable=YES guest_username=ftpvload virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vconf
anonymous_enable=NO #設定不容許匿名訪問 local_enable=YES #設定本地用戶能夠訪問。注意:主要是爲虛擬宿主用戶,若是該項目設定爲NO那麼全部虛擬用戶將沒法訪問。 write_enable=YES #設定能夠進行寫操做。 local_umask=022 #設定上傳後文件的權限掩碼。 anon_upload_enable=NO #禁止匿名用戶上傳。 anon_mkdir_write_enable=NO #禁止匿名用戶創建目錄。 dirmessage_enable=YES #設定開啓目錄標語功能。 xferlog_enable=YES #設定開啓日誌記錄功能。 connect_from_port_20=YES #設定端口20進行數據鏈接。 chown_uploads=NO #設定禁止上傳文件更改宿主。 xferlog_file=/var/log/vsftpd.log #設定Vsftpd的服務日誌保存路徑。注意,該文件默認不存在。必需要手動touch出來,而且因爲這裏更改了Vsftpd的服務宿主用戶爲手動創建的Vsftpd。必須注意給與該用戶對日誌的寫入權限,不然服務將啓動失敗。 xferlog_std_format=YES #設定日誌使用標準的記錄格式。 async_abor_enable=YES #設定支持異步傳輸功能。 ascii_upload_enable=YES ascii_download_enable=YES #設定支持ASCII模式的上傳和下載功能。 ftpd_banner=This Vsftp server supports virtual users ^_^ #設定Vsftpd的登錄標語。 chroot_list_enable=NO #禁止用戶登出本身的FTP主目錄。 ls_recurse_enable=NO #禁止用戶登錄FTP後使用"ls -R"的命令。該命令會對服務器性能形成巨大開銷。若是該項被容許,那麼當多用戶同時使用該命令時將會對該服務器形成威脅。 listen=YES #設定該Vsftpd服務工做在StandAlone模式下。 pam_service_name=vsftpd #設定PAM服務下Vsftpd的驗證配置文件名。所以,PAM驗證將參考/etc/pam.d/下的vsftpd文件配置。 userlist_enable=YES #設定userlist_file中的用戶將不得使用FTP。 tcp_wrappers=YES #設定支持TCP Wrappers #如下這些是關於Vsftpd虛擬用戶支持的重要配置項目。默認Vsftpd.conf中不包含這些設定項目,須要本身手動添加配置 guest_enable=YES #設定啓用虛擬用戶功能。 guest_username=ftpvload #指定虛擬用戶的宿主用戶。 virtual_use_local_privs=YES #設定虛擬用戶的權限符合他們的宿主用戶。 user_config_dir=/etc/vsftpd/vconf #設定虛擬用戶我的Vsftp的配置文件存放路徑。也就是說,這個被指定的目錄裏,將存放每一個Vsftp虛擬用戶個性的配置文件,一個須要注意的地方就是這些配置文件名必須和虛擬用戶名相同。
touch /var/log/vsftpd.log chown vsftpd.vsftpd /var/log/vsftpd.log
mkdir /etc/vsftpd/vconf/ -pv
touch /etc/vsftpd/virtusers
vim /etc/vsftpd/virtusers
test #用戶名 test1234 #用戶密碼
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
#vim /etc/pam.d/vsftpd auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
mkdir /var/ftp/virtual
mkdir /var/ftp/virtual/test1
chown -R ftpvload.ftpvload /var/ftp/virtual/
vi /etc/vsftpd/vconf/vconf.tmp
local_root=/var/ftp/virtual/username #指定虛擬用戶的具體主路徑 anonymous_enable=NO #設定不容許匿名用戶訪問 write_enable=YES #設定容許寫操做 local_umask=022 #設定上傳文件權限掩碼 anon_upload_enable=NO #設定不容許匿名用戶上傳 anon_mkdir_write_enable=NO #設定不容許匿名用戶創建目錄 idle_session_timeout=600 #設定空閒鏈接超時時間 data_connection_timeout=120 #設定單次連續傳輸最大時間 max_clients=10 #設定併發客戶端訪問個數 max_per_ip=5 #設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟件 local_max_rate=50000 #設定該用戶的最大傳輸速率,單位b/s
cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test
vim /etc/vsftpd/vconf/test
#!/bin/bash #date:2017-08-15 #version:0.0.2 #開始安裝vsftpd echo ">>> 1. Start install Vsftpd ......" yum -y install pam pam-devel db4 de4-devel db4-tcl vsftpd mkdir /var/ftp/virtual useradd vsftpd -M -s /sbin/nologin useradd ftpvload -d /var/ftp/ -s /sbin/nologin sleep 3 chown -R ftpvload.ftpvload /var/ftp/ sleep 5 #開始配置vsftpd echo ">>> 2. Start config Vsftpd ......" mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back echo "anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES chown_uploads=NO xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES async_abor_enable=YES ascii_upload_enable=YES ascii_download_enable=YES ftpd_banner=Welcome to FTP Server chroot_local_user=YES ls_recurse_enable=NO listen=YES hide_ids=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES guest_enable=YES guest_username=ftpvload virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vconf" > /etc/vsftpd/vsftpd.conf cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup sed -i s/^/#/g /etc/pam.d/vsftpd echo "auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers" >> /etc/pam.d/vsftpd sleep 3 #開始配置其它 echo ">>> 3. Start config other ......" touch /var/log/vsftpd.log chown vsftpd.vsftpd /var/log/vsftpd.log mkdir /etc/vsftpd/vconf/ -p sleep 3 #配置虛擬用戶 echo ">>> 4. Start config vitual user" echo -e "test\ntest1234" >> /etc/vsftpd/virtusers db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db mkdir /var/ftp/virtual/test echo "local_root=/var/ftp/virtual/username #指定虛擬用戶的具體主路徑 anonymous_enable=NO #設定不容許匿名用戶訪問 write_enable=YES #設定容許寫操做 local_umask=022 #設定上傳文件權限掩碼 anon_upload_enable=NO #設定不容許匿名用戶上傳 anon_mkdir_write_enable=NO #設定不容許匿名用戶創建目錄 idle_session_timeout=600 #設定空閒鏈接超時時間 data_connection_timeout=120 #設定單次連續傳輸最大時間 max_clients=10 #設定併發客戶端訪問個數 max_per_ip=5 #設定單個客戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載軟件 #local_max_rate=50000 #設定該用戶的最大傳輸速率,單位b/s" >> /etc/vsftpd/vconf/vconf.tmp cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test sed -i s/username/test/g /etc/vsftpd/vconf/test echo "All OVER! "
#!/bin/bash #date:2017-05-25 if read -t 5 -p "Please enter you name: " username then if [ -f /etc/vsftpd/vconf/$username ] #判斷用戶是否存在 then echo "The $username is exists, please input another name." else read -s -p "Please enter your password: " passwd echo -e "$username\n$passwd" >> /etc/vsftpd/virtusers db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db mkdir -p /var/ftp/virtual/$username chown -R ftpvload.ftpvload /var/ftp cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/$username sed -i s/username/$username/g /etc/vsftpd/vconf/$username echo "The config is over." fi else echo -e "\nThe 5s has passed, you are to slow! " fi