【linux】centos6.xFTP添加用户,设置权限和目录
(本文更新于 2021-01-27日 --- linux环境 centos6.x FTP3.x 添加用户,设置权限和目录)
tips:
1)设置linux防火墙,开放20/21端口: : (注意,客户端环境防火墙也得关闭,建议测试阶段直接关闭windows防火墙,调通ftp后,再添加入站规则,开放20 21端口)
windows7、10配置入站规则:https://www.cnblogs.com/LMIx/p/10789410.html
-- 添加完毕,还需要设置 防火墙>允许应用通过防火墙>更改设置>winScp都√上,确定即可开启防火墙
2)阿里云安全组也得添加 规则 20/21端口
优化小技巧:查看服务器是否已开启21 20端口,直接telnet ip port
3)各类ftp工具使用【主动模式】连接
一、目的,新建一个用户 test2,登录ftp,它只有自己的主目录权限,其他同级和上级目录没有权限
二、ftp卸载、安装、配置
卸载:
如果服务器上安装了vsftpd,配置出错需要卸载vsftpd
先执行
$>service vsftpd stop
[root@localhost ~]# rpm -aq vsftpd
vsftpd-2.0.5-16.el5_5.1 #此处是查找vsftpd的返回结果
[root@localhost ~]# rpm -e vsftpd-2.0.5-16.el5_5.1
#用rpm -e 查找结果 进行删除就ok了。
warning: /etc/vsftpd/user_list saved as etc/vsftpd/user_list.rpmsave
warning: /etc/vsftpd/ftpusers saved as /etc/vsftpd/ftpusers.rpmsave #删除时将备份vsftp的用户列表文件。
看下是否卸载了vsftpd,进行stop及start操作:
[root@localhost ~]# /sbin/service vsftpd stop
vsftpd: unrecognized service #找不到vsftpd
[root@localhost ~]# /sbin/service vsftpd start
vsftpd: unrecognized service #找不到vsftpd记住,在卸载vsftpd之前,先停止vsftpd。
安装:
yum -y install vsftpd //通过yum来安装vsftpd
chkconfig vsftpd on //设置为开机启动
vi /etc/vsftpd/vsftpd.conf #设置配置文件
1、相关配置释义:
anonymous_enable=YES #设置是否允许匿名用户登录
local_enable=YES #设置是否允许本地用户登录
local_root=/home #设置本地用户的根目录
write_enable=YES #是否允许用户有写权限
local_umask=022 #设置本地用户创建文件时的umask值
anon_upload_enable=YES #设置是否允许匿名用户上传文件
anon_other_write_enable=YES #设置匿名用户是否有修改的权限
anon_world_readable_only=YES #当为YES时,文件的其他人必须有读的权限才允许匿名用户下载,单单所有人为ftp且有读权限是无法下载的,必须其他人也有读权限,才允许下载
download_enbale=YES #是否允许下载
chown_upload=YES #设置匿名用户上传文件后修改文件的所有者
chown_username=ftpuser #与上面选项连用,表示修改后的所有者为ftpuser
ascii_upload_enable=YES #设置是否允许使用ASCII模式上传文件
ascii_download_enable=YES #设置是否允许用ASCII模式下载文件
(以上参数按需修改,都不涉及到核心变动)
下面3个参数重点介绍:(涉及到禁止访问上一目录权限):推荐使用YES YES
- chroot_local_user #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
- chroot_list_enable #是否启动限制用户的名单 YES为启用 NO禁用(包括默认注释掉也为禁用)
- chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!
对于chroot_local_user与chroot_list_enable的组合效果,可以参考下表:
chroot_list_file=/etc/vsftpd/chroot_list #定义“例外”用户 (去/etc/vsftpd/chroot_list文件增加用户名,一行一个)
2、用户登录白名单、黑名单:参考https://blog.csdn.net/feit2417/article/details/82903314 【vsftpd --用户名单文件ftpusers和user_list】
(如无特殊情况,不需要动下面参数,保持默认即可。我配了几次都没动下面这几个参数,即默认都是YES,黑名单-user_list不需要添加test2)
userlist_enable=YES(默认) #当为YES时表示由userlist_file文件中指定的用户才能登录ftp服务器
userlist_deny=YES(默认) #当为YES时表示由userlist_file文件中指定的用户才能登录ftp服务器
userlist_enable=YES userlist_deny=YES 黑名单,拒绝文件中的用户FTP访问--默认情况
userlist_enable=YES userlist_deny=NO 白名单,拒绝除文件中的用户外的用户FTP访问
userlist_enable=NO userlist_deny=YES/NO 无效名单,表示没有对任何用户限制FTP访问
userlist_file=/etc/vsftpd/user_list #当userlist_enable为YES时才生效
3、 开始添加目标用户,并为其设置主目录/home/test2 (目录添加完毕可手动加一个755pub目录,因为根目录544没有写权限)
useradd -d /home/test2 -s /sbin/nologin test2 //-d 目录 指定用户主目录,-s 登录方式。
passwd test2 //为test2设置密码
chmod 544 /home/test2 //root修改目录权限,因为禁止访问上级目录,权限必须是544,其他的都会报错(其他组要能读r)
chown -R test2:test2 目录 //修改目录所属者
>>service vsftpd restart //重启ftp
配置完成,设置linux防火墙 : (注意,客户端环境防火墙也得关闭,建议测试阶段直接关闭windows防火墙,调通ftp后,再添加入站规则,开放20 21端口)
vi /etc/sysconfig/iptables-config
修改
IPTABLES_MODULES="ip_conntrack_ftp"
开放20/21端口:(阿里云安全组也得添加 规则 20/21)
vi /etc/sysconfig/iptables
添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
重启 service vsftpd restart
如果此时还不能上传文件权限,关闭SELinux:
> vi /etc/sysconfig/selinux ,修改为:SELINUX=disabled
最终效果:(用户根本都看不到其他目录,只能看到自己的 -d 目录)