Vsftpd虚拟账户配置
一、vsftpd安装
采用
rpm
安装。
用
rpm –ql vsftpd
命令查看安装路径。
默认安装路径为:
/etc/vsftpd/
二、配置虚拟用户和权限
这里采用脚本控制虚拟用户的方式管理
ftp
虚拟用户。
虚拟用户的可以理解为:所有
ftp
用户使用的并不是系统用户,而是添加的虚拟账户,这些账户映射到系统中的一个账户。此账户设置为不允许登录。可以根据需要单独配置所有虚拟账户的各种权限。
1.添加用户
Useradd –s /sbin/nologin vftp
mkdir /ftproot //创建ftp根目录为/ftproot
2.创建用户和密码文件
创建用户和密码文件,然后用
db4
工具把用户名和密码转换成系统识别的格式。
vi vftpuser.txt //
新建文件写入用户名和密码
注:第一行写用户名,第二行写密码,以此类推,要创建多少虚拟用户,依次写下去。
例如:
abc
123
cba
321
创建了两个用户
abc
和
cba
密码分别为
123
和
321
接着使用工具将其转换,并且存放在适当的位置,如:、
db_load -T -t hash -f vftpuser.txt /etc/vsftpd/vftpuser.db //
将密码文件保存到
/etc/vsftpd/
命名为
vftpuser.db
。
注意:此时如果没有安装
db4
工具会出现错误。
解决方法:安装
rpm
的
db4
、
db4-util
包
3.配置PAM验证文件
修改
/etc/pam.d/vsftpd
在下面添加如下两行,其他全部注释掉。
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
注意这里是
vftpuser
,不是
vftpuser.db
4.新建针对虚拟用户的配置文件
mkdir –p /etc/vsftpd/vsftpd_user_conf
vi /etc/vsftpd/vsftpd_user_conf/abc //
创建名为
abc
的控制文件。
local_root=/ftproot/ //abc
这个用户登陆上来的家目录是
/ftproot
anon_upload_enable=YES //
允许上传
anon_mkdir_write_enable=YES //
允许创建目录
anon_other_write_enable=YES //
允许删除文件和目录
同样创建
cba
的配置文件。
5.修改vsftpd.conf
启用和添加修改如下选项:
pam_service_name=vsftpd //
用
vsftpd
里的脚本做
pam
验证
tcp_wrappers=YES //
开启
ip
控制
chroot_local_user=YES //
锁定用户根目录
guest_enable=YES //
开启虚拟账户
guest_username=vftp //
虚拟账户使用
vftp
(刚才建的系统账户)映射
user_config_dir=etc/vsftpd/vsftp_user_conf //
虚拟账户的控制文件路径
6.修改ftproot的权限
Chown –R vftp.vftp /ftproot
Chmod –R 700 /ftproot
重启
vsftpd
服务即可。
三、特殊需求
一个
ftp
用户只有一个根目录,可以限制他访问根目录以下的目录,但当需要他同时能访问其他路径的目录时,
vsftpd
便没有提供这个功能。
这里采用
mount --bind
这个命令来实现这个需求。
mount --bind
源路径
新路径(目的路径)
根据需求设置如下:
在
home
里新建
ftt
目录,在里面新建文件夹用来挂载其他目录的文件夹。
[root@RedDNS ftp]# mkdir -p nba
[root@RedDNS ftp]# mkdir -p cba
[root@RedDNS ftp]# mount --bind /home/123 nba //
把
123
目录挂载在
home/ftp
里
[root@RedDNS ftp]#mount –bind /home/abc cba //
把
abc
目录挂载在
home/ftp
里
这时,用户ftp目录下就有nba和cba两个文件夹,里面分别“通往”各自的目录。
注意:
1
、挂载时权限是集成被挂载的文件夹的。
2
、文件挂载相当于镜像一份目录,会增加一倍的空间大小。。