在企业里常越到这样的情况,需要创建一些FTP账户让他们管理ftp服务,而又不想让他们拥有系统账号。尽管可以设置让他们无法登陆系统,如果有一堆Ftp账号需要建议,创建那么多系统账号也感觉很不爽,而且不是很安全。
下面的方法就是配置FTP的虚拟用户,他们只能登陆ftp,而不属于系统上的账号,爽吧
yum -y install vsftpd
一、建立Vsftpd虚拟用户:
1、添加虚拟用户口令文件安装Vsftpd
[root@localhost ~]#vi /etc/vsftpd/vftpuser.txt
添加虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。
ftp1 #用户名
123456 #密码
ftp2 #用户名
123456 #密码
2、生成虚拟用户口令认证文件
将刚添加的vftpuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。
首先查看系统有没有安装生成口令认证文件所需的软件db4-utils。
下面使用db_load命令生成虚拟用户口令认证文件。
[root@localhost ~]# [root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vftpuser.txt
/etc/vsftpd/vftpuser.db
3、编辑vsftpd的PAM认证文件
在/etc/pam.d目录下,
[root@localhost ~]#vi /etc/pam.d/vsftpd
将里面其他的都注释掉,添加下面这两行:(64位操作系统)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
4、建立本地映射用户并设置宿主目录权限
所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。
[root@localhost ~]#useradd -d /home/vftpsite -s /sbin/nologin vftpuser
[root@localhost ~]#chmod 755 /home/vftpsite //网上为700,设置为700后FTP用户无上传权限
5、配置vsftpd.conf(设置虚拟用户配置项)
[root@localhost ~]#vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
local_umask=022
#dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
one_process_model=NO
chroot_local_user=YES
ftpd_banner=Welcome to blah FTP service.
anon_world_readable_only=NO
guest_enable=YES
guest_username=vftpuser
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/userconf
多个虚拟用户区分不同的根目录,添加多个配置文件就OK
vi userconf/xxxxx01
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vftpsite/xxxxx01
mkdir /home/vftpsite/xxxxx01
chmod 700 /home/vftpsite/xxxxx01
chown -R vftpuser:vftpuser /home/vftpsite/xxxxx01
ll /home/vftpsite
drwx------ 2 vftpuser vftpuser 4096 7月 14 19:45 xxxxx01
drwx------ 3 vftpuser vftpuser 4096 7月 14 19:48 xxxxx02
6、重启vsftpd服务
[root@localhost ~]#service vsftpd restart
7、测试虚拟用户登录FTP