1.安装vsftpd服务,和测试命令ftp
# yum -y install vsftpd # yum -y install ftp
2.建立虚拟用户的用户名/密码数据库
vsftpd服务的虚拟用户数据库使用的是Berkeley DB格式的数据文件。建立数据库文件要用到db_load命令工具,所以要安装db4软件包
# yum -y install db4*
(一)建立文本格式的用户名/密码列表文件,奇数行为用户名,偶数行对应为上一行用户名密码。
# vi /etc/vsftpd/vusers.list mike 123.com john 123.com kankan kankan*bj*com
(二)用db_load工具将列表文件转化为DB数据库文件。
# cd /etc/vsftpd/ # db_load -T -t hash -f vusers.list vusers.db # chwon /etc/vsftpd/vuser.* //降低文件权限以提高安全性
3.建立FTP访问根目录以及虚拟用户对应的系统账号
# useradd -d /data/pub -s /sbin/nologin ftpuser # useradd -d /home/ytb/www/cms.yuntongbu/ -s /sbin/nologin kankanftpuser # chmod 777 /data/pub 创建测试文件 #ls -lh /boot > /data/pub/vutest.file
4.建立PAM认证文件
#vi /etc/pam.d/vsftpd.vu 添加如下内容 #%PAM-1.0 auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers
5.修改vsftpd的主配置文件,添加对虚拟用户的支持。
# vi /etc/vsftpd/vsftpd.conf #内容如下 anonymous_enable=NO local_enable=YES anon_umask=022 write_enable=YES guest_enable=YES guest_username=ftpuser dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd.vu userlist_enable=YES tcp_wrappers=YES
6.为不同的虚拟用户配置独立的配置文件
# vi /etc/vsftpd/vsftpd.conf #在末尾添加如下一行 user_config_dir=/etc/vsftpd/vusers_dir
7.为mike和john建立独立配置目录及文件
# mkdir -p /etc/vsftpd/vusers_dir # cd /etc/vsftpd/vusers_dir # vi john ###添加如下内容 anon_upload_enable=YES anon_mkdir_write_enable=YES #touch mike 建立空文件,默认配置文件中的权限
8.启动vsftpd服务
# service vsftpd start
权限说明:
权限:john可以登录到ftp服务器,可以浏览,下载,也可以上传文件 mike可以登录到ftp服务器,可以浏览,下载,但是不可以上传
本地测试:
(一)john的测试
[root@YTB-APP-1 ~]# ls anaconda-ks.cfg bin importipas.sh install.log install.log.syslog my.cnf.bak[root@YTB-APP-1 ~]# ftp localhost Trying ::1... ftp: connect to address ::1Connection refused Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 2.2.2) Name (localhost:ytb): john 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,82,29). 150 Here comes the directory listing. -rw-r--r-- 1 0 0 574 Jul 01 14:50 vutest.file 226 Directory send OK. ftp> get vutest.file local: vutest.file remote: vutest.file 227 Entering Passive Mode (127,0,0,1,103,164). 150 Opening BINARY mode data connection for vutest.file (574 bytes). 226 Transfer complete. 574 bytes received in 3.4e-05 secs (16882.35 Kbytes/sec) ftp> put install.log local: install.log remote: install.log 227 Entering Passive Mode (127,0,0,1,115,162). 150 Ok to send data. 226 Transfer complete. 29388 bytes sent in 0.024 secs (1222.97 Kbytes/sec) ftp> quit 221 Goodbye.[root@YTB-APP-1 ~]# ls anaconda-ks.cfg bin importipas.sh install.log install.log.syslog my.cnf.bak vutest.file[root@YTB-APP-1 ~]# ls /data/pub/ install.log vutest.file[root@YTB-APP-1 ~]#
(二)mike的测试
[root@YTB-APP-1 ~]# ls anaconda-ks.cfg bin importipas.sh install.log install.log.syslog my.cnf.bak vutest.file[root@YTB-APP-1 ~]# rm -rf vutest.file [root@YTB-APP-1 ~]# ftp localhost Trying ::1... ftp: connect to address ::1Connection refused Trying 127.0.0.1... Connected to localhost (127.0.0.1). 220 (vsFTPd 2.2.2) Name (localhost:ytb): mike 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,223,141). 150 Here comes the directory listing. -rw-r--r-- 1 503 503 29388 Jul 03 02:23 install.log -rw-r--r-- 1 0 0 574 Jul 01 14:50 vutest.file 226 Directory send OK. ftp> get vutest.file local: vutest.file remote: vutest.file 227 Entering Passive Mode (127,0,0,1,154,230). 150 Opening BINARY mode data connection for vutest.file (574 bytes). 226 Transfer complete. 574 bytes received in 3.8e-05 secs (15105.26 Kbytes/sec) ftp> put install.log.syslog local: install.log.syslog remote: install.log.syslog 227 Entering Passive Mode (127,0,0,1,227,247). 550 Permission denied. ftp> quit 221 Goodbye.[root@YTB-APP-1 ~]# ls anaconda-ks.cfg bin importipas.sh install.log install.log.syslog my.cnf.bak vutest.file[root@YTB-APP-1 ~]# ls /dat/pub/ ls: cannot access /dat/pub/: No such file or directory[root@YTB-APP-1 ~]# ls /data/pub/ install.log vutest.file[root@YTB-APP-1 ~]#