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 ~]#

vsftp虚拟用户建立_java