一、问题描述
ftp与普通用户:
1、程序运行用户prouser,用户组也为prouser
2、ftp服务用户ftpuser,用户目录/home/ftpuser
prouser对ftp目录权限要求:
1、prouser用户对/home/ftpuser有读写权限
2、prouser用户对ftpuser上传的目录和文件有读写权限
3、ftpuser用户不可登录
二、解决思路
普通用户和ftp服务用户公用一个用户组,达到如下效果:
1、用户组队ftp用户目录拥有读写权限
2、新上传的目录、文件,组用户拥有读写权限
三、实施步骤:
1、下载vsftpd对应rpm包
2、安装
root# rpm -ivh vsftpd-2.2.2-24.el6.x86_64.rpm
3、配置修改
root# vim vim /etc/vsftpd/vsftpd.conf 修改ftp服务配置
# 禁止匿名用户使用
anonymous_enable=NO
# 上传目录文件的权限为775
local_umask=002
# 将/etc/vsftpd/user_list作为白名单使用
userlist_deny=NO
root# vim /etc/vsftpd/user_list 将其他用户注释并添加ftpuser用户
ftpuser
4、新建ftp用户,用户名ftpuser,用户组为程序运行用户prouser的组名
root# useradd -g prouser -s /bin/bash ftpuser
root# passwd ftpuser 设置ftpuser用户密码为ftpuser
root# chmod -R 775 /home/ftpuser
5、修改ftp用户家目录文件权限
root# chmod -R 775 /home/ftpuser 修改家目录权限
root# su - ftpuser
ftpuser# umask 0002 修改ftp用户新创建目录文件的默认权限为775
ftpuser# mkdir record 创建上传目录
ftpuser# mkdir backup 创建上传文件解析后移动到的目录
ftpuser# exit
6、测试程序用户对ftp家目录的权限
root# su - prouser
prouser# ls -al /home/ftpuser 必须成功查看
prouser# mkdir /home/backup/test 必须成功创建目录
prouser# rm -rf /home/backup/test 必须成功删除目录
prouser# touch /home/backup/a 必须成功创建文件
prouser# rm -rf /home/backup/a 必须成功删除文件
prouser# exit
7、访问ftp目录并上传测试文件夹
ftp://ftpuser:ftpuser@ip/record
root# ll /home/ftpuser/record 查看上传文件和文件夹的组用户权限满足rw
8、回收ftpuser用户登录权限
root# usermod -s /sbin/nologin ftpuser
root# su - ftpuser 登录提示不可登录
This account is currently not available.
9、ftp服务是否依旧可正常访问
ftp://ftpuser:ftpuser@ip/record
附:
1、userlist_enable=YES时,userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP
2、当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
3、当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous