linux下ftp服务阶段实验(4)
4.搭建一个基于虚拟用户的FTP站点,要求三个虚拟用户vuser1、vuser2、vuser3登录后权限分别是:vuser1能下载不能上传,vuser2能上传不能下载,vuser3既能上传也能下载。
1.建立虚拟用户文件
#创建3个用户
[root@localhost ~]# vim /etc/vsftpd/vuser.txt [root@localhost ~]# cat /etc/vsftpd/vuser.txt
vuser1
123
vuser2
123
vuser3
123
2.利用虚拟用户文件生成用户数据库
#先查看是否安装db4-utils这个软件
[root@localhost ~]# rpm -q db4-utils
db4-utils-4.7.25-17.el6.i686
#没有的话使用yum安装
[root@localhost ~]# yum install db4-utils -y
#生成用户数据库
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
3.建立虚拟用户映射的系统账户
[root@localhost ~]# useradd vftp [root@localhost ~]# chmod 755 /home/vftp/
#主目录权限为其他用户可读,默认为700
[root@localhost ~]# touch /home/vftp/vftp
4.建立PAM认证文件
#编辑一个新认证文件
[root@localhost ~]# vim /etc/pam.d/vftp [root@localhost ~]# cat /etc/pam.d/vftp
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
5.修改主配置文件,启用虚拟用户
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf [root@localhost ~]# tail -6 /etc/vsftpd/vsftpd.conf
pam_service_name=vftp #修改认证的文件为vftp
guest_enable=YES #启用虚拟用户功能
guest_username=vftp #制定虚拟用户映射为本地用户vftp
user_config_dir=/etc/vsftpd/vftp #定义用户独立配置文件的路径
6.为不同的虚拟用户建立独立的配置文件
[root@localhost ~]# mkdir /etc/vsftpd/vftp/ [root@localhost ~]# vim /etc/vsftpd/vftp/vuser1 [root@localhost ~]# cat /etc/vsftpd/vftp/vuser1
anon_upload_enable=NO #禁止上传
download_enable=YES #允许下载
[root@localhost ~]# vim /etc/vsftpd/vftp/vuser2 [root@localhost ~]# cat /etc/vsftpd/vftp/vuser2
anon_upload_enable=YES #允许上传
download_enable=NO #禁止下载
[root@localhost ~]# vim /etc/vsftpd/vftp/vuser3 [root@localhost ~]# cat /etc/vsftpd/vftp/vuser3
anon_upload_enable=YES #允许上传
download_enable=YES #允许下载
7.重启vsftpd服务
[root@localhost ~]# service vsftpd restart
Shutting down vsftpd: [FAILED]
Starting vsftpd for vsftpd: [ OK ]
8.验证虚拟用户登录
#测试vuser1用户登录
[root@localhost ~]# ftp 192.168.1.88
Connected to 192.168.1.88 (192.168.1.88).
220 (vsFTPd 2.2.2)
Name (192.168.1.88:root): vuser1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX. #用户vuser1登录成功
Using binary mode to transfer files.
ftp> ls
-rw-r--r-- 1 0 0 0 Jul 29 20:11 vftp
ftp> !ls
anaconda-ks.cfg Desktop Documents Downloads install.log
install.log.syslog Music Pictures Public Templates Videos
ftp> put install.log
local: install.log remote: install.log
227 Entering Passive Mode (192,168,1,88,71,230).
550 Permission denied. #上传失败
ftp> get vftp
local: vftp remote: vftp
227 Entering Passive Mode (192,168,1,88,152,15).
150 Opening BINARY mode data connection for vftp (0 bytes).
226 Transfer complete. #下载成功
ftp>
测试vuser2用户登录
[root@localhost ~]# ftp 192.168.1.88
ftp 192.168.1.88
Connected to 192.168.1.88 (192.168.1.88).
220 (vsFTPd 2.2.2)
Name (192.168.1.88:root): vuser2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX. #用户vuser2登录成功
Using binary mode to transfer files.
ftp> ls
-rw------- 1 500 500 1386 Jul 29 20:46 anaconda-
ks.cfg
-rw------- 1 500 500 37842 Jul 29 20:48 install.log
-rw-r--r-- 1 0 0 0 Jul 29 20:11 vftp
ftp> !ls
anaconda-ks.cfg Desktop Documents Downloads install.log
install.log.syslog Music Pictures Public Templates vftp
ftp> put install.log.syslog
local: install.log.syslog remote: install.log.syslog
227 Entering Passive Mode (192,168,1,88,131,160).
150 Ok to send data.
226 Transfer complete. #上传成功
8529 bytes sent in 0.0302 secs (282.41 Kbytes/sec)
ftp> get vftp
local: vftp remote: vftp
227 Entering Passive Mode (192,168,1,88,245,183).
550 Permission denied. #下载失败
ftp>
测试vuser3用户登录
[root@localhost ~]# ftp 192.168.1.88
ftp 192.168.1.88
Connected to 192.168.1.88 (192.168.1.88).
220 (vsFTPd 2.2.2)
Name (192.168.1.88:root): vuser3
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX. #用户vuser3登录成功
Using binary mode to transfer files.
ftp> ls
-rw-r--r-- 1 0 0 0 Jul 29 20:11 vftp
ftp> !ls
anaconda-ks.cfg Desktop Documents Downloads install.log
install.log.syslog Music Pictures Public Templates Videos
ftp> put install.log
local: install.log remote: install.log
227 Entering Passive Mode (192,168,1,88,143,119).
150 Ok to send data.
226 Transfer complete. #上传成功
37842 bytes sent in 0.000243 secs (155728.39 Kbytes/sec)
ftp> ls
-rw------- 1 500 500 37842 Jul 29 20:23 install.log
-rw-r--r-- 1 0 0 0 Jul 29 20:11 vftp
ftp> get vftp
local: vftp remote: vftp
227 Entering Passive Mode (192,168,1,88,232,49).
150 Opening BINARY mode data connection for vftp (0 bytes).
226 Transfer complete. #下载成功
ftp>