0、安装vsftpd、ftp、db4-utils
[root@c ~]# yum install -y vsftpd ftp db4-utils
1、创建用于进行FTP认证的用户数据库文件
[root@c ~]# cd /etc/vsftpd/ [root@c vsftpd]# vim user.txt ftp1 ##用户ftp1 123 ##用户ftp1的密码 ftp2 ##用户ftp2 123 ##用户ftp2的密码
[root@c vsftpd]# db_load -T -t hash -f user.txt user.db [root@c vsftpd]# ll user.* -rw-r--r-- 1 root root 12288 6月 9 08:29 user.db ##用户数据库文件 -rw-r--r-- 1 root root 18 6月 9 08:21 user.txt [root@c vsftpd]# chmod 600 user.*
2、创建vsftpd用于存储文件的目录以及虚拟用户映射的系统本地用户
[root@c vsftpd]# useradd -d /var/ftp/virtual -s /sbin/nologin virtual [root@c vsftpd]# tail -1 /etc/passwd virtual:x:502:502::/var/ftp/virtual:/sbin/nologin ##刚刚创建的virtual用户 [root@c vsftpd]# chmod 777 /var/ftp/virtual/ ##直接给777权限
3、创建用于支持虚拟用户的PAM文件
PAM是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行任何修改。
[root@c vsftpd]# vim /etc/pam.d/vsftpd.u auth required pam_userdb.so db=/etc/vsftpd/user account required pam_userdb.so db=/etc/vsftpd/user
4、修改vsftpd配置文件,添加对虚拟用户的支持
参数 | 作用 |
anonymous_enable=NO | 禁止匿名开放模式 |
local_enable=YES | 允许本地用户模式 |
guest_enable=YES | 开启虚拟用户模式 |
guest_username=virtual | 指定虚拟用户账户 |
pam_service_name=vsftpd.u | 指定PAM文件 |
user_config_dir=/etc/vsftpd/vuser | 虚拟用户配置文件存放的目录 |
在vsftpd.conf末尾添加(
[root@c ~]# vim /etc/vsftpd/vsftpd.conf guest_enable=YES guest_username=virtual pam_service_name=vsftpd.u user_config_dir=/etc/vsftpd/vuser
创建虚拟用户的配置文件(为虚拟用户设置不同的权限)
新建一个目录,在里面分别创建两个以ftp1和ftp2命名的文件(ftp1和ftp2是刚才在user.txt添加的用户)
[root@c ~]# mkdir /etc/vsftpd/vuser [root@c ~]# cd /etc/vsftpd/vuser
允许ftp1用户上传、创建、修改、查看、删除文件
[root@c vuser]# vim ftp1 anon_upload_enable=YES ##允许上传文件 anon_mkdir_write_enable=YES ##允许创建目录 anon_other_write_enable=YES ##开放写入权限
只允许ftp2用户下载,ftp2文件是空文件(所以只有下载权限)
[root@c vuser]# touch ftp2
5、启动,设置开机自启
[root@c ~]# service vsftpd start 为 vsftpd 启动 vsftpd: [确定] [root@c ~]# chkconfig vsftpd on
6、验证
[root@c ~]# ftp 127.0.0.1 ##这里我用的是127.0.0.1 Connected to 127.0.0.1 (127.0.0.1). ##127.0.0.1是回送地址,指本机 220 (vsFTPd 2.2.2) ##这里是vsftpd的版本 Name (127.0.0.1:root): ftp1 ##用ftp1用户登陆 331 Please specify the password. ##331用户名正确 Password: ##输入密码 230 Login successful. ##这里显示230就OK了 Remote system type is UNIX. Using binary mode to transfer files. ftp> ##用过mysql都知道这里是啥
创建个文件夹再删除,看看ftp1用户是否具有写入权限
ftp> mkdir yun3 ##创建yun3文件夹 257 "/yun3" created ftp> ls 227 Entering Passive Mode (127,0,0,1,71,149). ##227响应码,进入被动模式 150 Here comes the directory listing. drwx------ 2 502 502 4096 Jun 09 01:36 yun3 ##显示出yun3目录了,ok 226 Directory send OK. ##226响应码,请求的文件操作成功 ftp> rm yun3 ##删除文件夹 250 Remove directory operation successful. ftp> ls 227 Entering Passive Mode (127,0,0,1,141,66). 150 Here comes the directory listing. 226 Directory send OK. ftp> exit ##退出
再验证ftp2用户,ftp2用户只有下载权限
[root@c pam.d]# ftp 127.0.0.1 Connected to 127.0.0.1 (127.0.0.1). 220 (vsFTPd 2.2.2) Name (127.0.0.1:root): ftp2 ##用ftp2用户登录 331 Please specify the password. Password: ##输入密码 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> mkdir yun3 ##创建yun目录 550 Permission denied. ##ftp2用户没有写入权限,所以创建不了 ftp> exit
end
转载请注明来源,谢谢:Linux备忘录 » CentOS 6 配置FTP虚拟用户