#ftp服务器上创建虚拟用户并分别配置不同权限#
以下内容均为本人切身实践操作所得,之间过程也比较曲折,查了许多资料更是也踩了许多坑,希望对各位朋友有所帮助!!
1.创建用户密码列表文件
cd /etc/vsftpd/
vim ./vusers.list(创建虚拟用户文件并按如下格式输入添加的账号及密码)
用户a
用户a密码
用户b
用户b密码
用户c
用户c密码
2.创建虚拟账号数据库
db_load -T -t hash -f vusers.list vusers.db(生成的库名)
file vusers.db(查看数据库信息)
3.添加虚拟账号映射账号(此账号为ftp服务器上真实存在的,为了安全此用*户一般设置为不可登录)
useradd -d /home/user1 -s /sbin/nologin user1
passwd user1(123456)(给用户设置密码)
chmod 755 /home/user1/(设置此用户家目录的权限,若虚拟用户的家目录不打算指定到此目录下,此步可以省略)*
3.增加pam认证(安全考虑)
vim /etc/pam.d/vsftpd.vu(添加此文件)
auth required pam_userdb.so db=/etc/vsftpd/vusers(结尾不带.db)
account required pam_userdb.so db=/etc/vsftpd/vusers
保存退出即可
4.修改vsftpd.conf配置文件并重启服务(以下内容是修改的部分)
*anonymous_enable=NO(关闭匿名用户功能)
local_enable=YES 本地用户功能开启
write_enable=YES 本地用户写权限
local_umask=022 文件的掩码
anon_umask=022(添加,本人不太清楚为啥添加,不过不添加可能报错)
chroot_local_user=YES限制用户在家目录中
chroot_list_enable=YES (开启访问用户列表,下边需要创建chroot_list并将user1写入到文件中)
allow_writeable_chroot=YES(centos6有时需要去掉此行,否则报错)
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_ipv6=NO
guest_enable=YES(添加)开启虚拟用户功能
guest_username=user1 映射虚拟用户的本地账号
user_config_dir=/etc/vsftpd/config 虚拟用户的配置文件
pam_service_name=vsftpd.vu(修改为与前边对应的文件名)
创建需要的文件及目录
mkdir -p /etc/vsftpd/config(此目录下放置虚拟用户的配置文件)
touch -p /etc/vsftpd/chroot_list
echo ‘user1’>chroot_list
重启ftp服务(本人用的是centos7系统)
ss -anpt |grep vsftpd
kill 1181(进程号)*
5.实现每个虚拟用户不同跟目录,不同权限的管控
创建用户家目录,并创建虚拟用户的同名配置文件
cd /etc/vsftpd/config
touch usera userb userc
cd /home
mkdir USERa USERb USERc
修改家目录的属主属组为user1,权限为777
chown user1.user1 USERa
chown user1.user1 USERb
chown user1.user1 USERc
chmod 777 USERa
chmod 777 USERb
chmod 777 USERc
6.分别设置虚拟用户权限
设置usera用户只有上传的权限
vim /etc/vsftpd/config/usera
local_root=/home/USERa
write_enable=YES
download_enable=NO
anon_umask=022
anon_world_readable_only=NO(关闭只可读权限)
anon_upload_enable=YES(上传)
anon_mkdir_write_enable=YES(创建目录权限)
anon_other_write_enable=YES(其他写权限,改,删)(此行改为NO后,便没有了删除权限,其他权限不变)
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,RETR
设置userb用户只有下载的权限
vim /etc/vsftpd/config/userb
local_root=/home/USERb
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=NO
anon_other_write_enable=YES(此行改为NO后,便没有了删除权限,其他权限不变)
设置userc用户有所有权限
vim /etc/vsftpd/config/userc
local_root=/home/USERc
guest_enable=YES
guest_username=user1
anon_world_readable_only=NO
anon_other_write_enable=YES(此行改为NO后,便没有了删除权限,其他权限不变)
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_umask=022
在此配置中加上download_enable=NO后则账号取消了下载权限
7.重启服务器
systemctl restart vsftpd
成功!!!!!!
补充:
ftp启动时报错:
Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details
问题解决: