首页 > 技术文章 > 【linux】centos6.xFTP添加用户,设置权限和目录

xuzhengzong 2018-03-25 18:43 原文

(本文更新于 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 目录)

 

 

 

推荐阅读