1.安裝vsftpd yum install vsftpd就ok
2.需要pam_mysql組件,在這里
3.編譯參數看下INSTALL 我這里用了一個參數就 withmysql=/usr/local/amp/mysql5
4.建立mysql數據庫、表 db=vsftpd table=users(username,userpass,homedir),建立對應mysql帳戶 vsftpd vsftpd(當然也可以用root或者現有帳戶)
5.修改/etc/pam.d/vsftpd 新增兩行:
- account required /usr/lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=userpass
6.建立用來存放虛擬用戶配置文件的文件夾,我的在/etc/vsftpd/virtual,里面放了一個配置文件模板叫_tpl write_enable=YES
- anon_mkdir_write_enable=YES
- anon_upload_enable=YES
- anon_other_write_enable=YES
代碼意思是,就差一個homedir了
7.打開/etc/vsftpd/vsftpd.conf,設置修改為 #一定要有
- listen=YES
- #listen_port=10021
- connect_from_port_20=YES
- #服務器提示
- ftpd_banner=Welcome to My FTP server.
- #關閉匿名訪問
- anonymous_enable=NO
- local_enable=YES
- write_enable=NO
- anon_upload_enable=NO
- anon_mkdir_write_enable=NO
- anon_other_write_enable=NO
- chroot_local_user=YES
- guest_enable=YES
- #虛擬用戶所使用的帳號,如果這里是root,那你傳上去的文件所有者也是root,
- #一般安全情況下,請設立單獨的vsftpd的用戶,就像mysql的獨立訪問用戶一樣
- guest_username=root
- pasv_min_port=30000
- pasv_max_port=30999
- #這里對應著/etc/pam.d/下的那個vsftpd 見第6條
- pam_service_name=vsftpd
- #虛擬用戶配置文件目錄
- user_config_dir=/etc/vsftpd/virtual
- xferlog_enable=YES
- #xferlog_file=/var/log/vsftpd.log
- xferlog_file=/data1/logs/vsftpd/vsftpd.log
- anon_world_readable_only=NO
- anon_umask=022
- file_open_mode=0777
- local_umask=022
- #20080811 last modify
- data_connection_timeout=120
要注意這里,local_umask和anon_umask的值,你的文件上傳之后的權限值 = 777 local_umask,也就是,上例中的022,你上傳之后,文件權限會是755
8./etc/vsftpd/vsftpd restart
9.我這里還有兩個shell,但是我的bash很笨,if判斷會有錯誤,增加ftp用戶:
- #!/bin/bash
- clear
- echo "******************************"
- echo "* Add vsftpd User Script *"
- echo "* AnVy 2008.0516 *"
- echo "******************************"
- echo "Enter user account:[Enter Key]"
- read username
- echo "Username is $username, Now Enter the password:[Enter Key]"
- read userpass
- echo "Asign the user's ftp home directory:[Enter Key]"
- read home
- echo "create this dir?[y/n]:"
- read $cd
- if [ $cd="y" ]
- then
- mkdir $home
- fi
- #chown R www:www $home
- /usr/local/amp/mysql5/bin/mysql uvsftpd pvsftpd<<EOF
- use vsftpd;
- replace into users (username,userpass,homedir) values ('$username','$userpass','$home');
- \q
- EOF
- cp /etc/vsftpd/virtual/_tpl /etc/vsftpd/virtual/$username
- #在用戶配置文件追加家目錄配置參數
- echo "local_root=$home" >> /etc/vsftpd/virtual/$username
- echo "$username with homedir= $home was added."
ftp帳戶列表以及刪除用戶
- #!/bin/bash
- clear
- echo "******************************"
- echo "* Add vsftpd User Script *"
- echo "* AnVy 2008.0516 *"
- echo "******************************"
- echo "UserList:"
- /usr/local/amp/mysql5/bin/mysql uvsftpd pvsftpd<<EOF
- use vsftpd;
- select * from users;
- \q
- EOF
- echo "Delete user account:[Enter Key]"
- read username
- /usr/local/amp/mysql5/bin/mysql uvsftpd pvsftpd<<EOF
- use vsftpd;
- delete from users where username='$username';
- \q
- EOF
- unlink /etc/vsftpd/virtual/$username
- echo "$username without homedir was removed."
以上代碼設置,可以簡單實現我的虛擬用戶分配,我也不太懂什么高深的設置,這樣就可以實現我輸入用戶名,密碼,家目錄,就能開vsftpd帳戶了,而且文件上傳之后權限是755, 完全可用。
新聞熱點
疑難解答