CentOS 8.2学习笔记之FTP(5)创建一个FTP用户

CentOS中的FTP是如此的简单,简单到只要安装了vsftpd,把防火墙一关,什么设置都不用,就可以使用本地用户登录了。
但是,正因为太简单,反而不太适用。
一般来说,使用FTP只是用来上传和下载文件,不需要太多功能,而本地用户,权限就大得多了。
因此,可以创建一个专用的FTP用户,用来上传和下载文件。

1、创建一个FTP用户组。

因为在CentOS里,每个用户都会默认一个用户组,如果在添加用户的时候,不指定用户组,则会创建一个与他同名的用户组。这样不方便管理,所以,先创建一个FTP用户组,所有的FTP用户,都归在这个用户组中。

groupadd ftpgroup

2、添加一个FTP用户

添加FTP用户时,需要注意几个方面:
1)需要将这个用户添加到上面创建的FTP用户组中,参数为:-g ftpgroup
2)因为是FTP传文件专用,所以要禁止这个用户登录CentOS,参数:-s /sbin/nologin
3)CentOS在添加用户时,默认的家目录是/home/用户名,很显然,这个目录不适合用来上传文件,所以可以指定一个FTP目录,并将这个目录设为FTP用户的家目录。在这里,假定FTP目录为/opt/ftp,参数为:-d /opt/ftp
4)可以在添加用户的时候,直接创建/opt/ftp目录,省去手动添加,参数为:-m
添加FTP用户代码为:

useradd -g ftpgroup -d /opt/ftp -s /sbin/nologin -m ftpuser1

3、设置FTP用户密码

为ftpuser1用户设置密码,要不然没法登录。

passwd ftpuser1

4、修改/etc/shells文件

为ftpuser1用户设置密码后,迫不及待地试试FTP功能,结果很失望,不能登录。
在这里插入图片描述
这是因为,在添加FTP用户的时候,使用了-s /sbin/nologin,阻止了FTP用户登录CentOS,同时也阻止了他登录FTP。因为vsftpd会通过/etc/shells文件来判断一个用户是否为有效的FTP用户。使用以下代码,可以查看这个文件的内容

vim /etc/shells

在这里插入图片描述
如上图所示,/sbin/nologin并没有在这个文件内,所以vsftpd会认为FTP用户不是一个有效的用户,阻止登录。
i键,进入编辑状态,在文件最后添加/sbin/nologin
再按esc键,进入命令状态,输入:wq,存盘退出。

然后就可以使用FTP客户端登录了。如下图所示:
在这里插入图片描述
在上图中,可以看到登录后的目录为/opt/ftp

试着上传一个文件,结果……
在这里插入图片描述
如果出现这种情况,首先查看一下vsftpd是否启动,如果启动了,查看一下防火墙是否阻止了,如果还不是,那是因为Selinux阻止了,处理方法有三种:
1)在Selinux里添加策略。
2)使用setenforce 0,临时将Selinux模式改为宽容模式,但服务器重启后,还是会回到原来的状态。
3)使用《CentOS 8.2学习笔记之FTP(3)关闭防火墙和Selinux》中的方法彻底关闭Selinux。

处理完毕之后,在FTP客户端就没有任何限制了。可以上传文件、下载文件、为文件重命名,也可以添加文件夹、删除文件夹、为文件夹重命名。

5、锁定FTP目录

到目前为止,我们创建了FTP用户、禁止了FTP用户登录CentOS、设置了专用的FTP目录、并且可以上传下载了,看上去万事大吉了,可是,又发现了一个问题,如下图所示,这个FTP用户,通过FTP客户端,还是可以查看其他目录,这个可不是我们所需要的。
在这里插入图片描述
因此,我们需要把FTP用户访问权限锁定在FTP目录里。这就需要使用到vsftpd的配置文件/etc/vsftpd/vsftpd.conf了。

#备份配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak
#编辑配置文件
vim /etc/vsftpd/vsftpd.conf

其中相关的配置包括:
1)chroot_local_user,如果为YES,将所有用户都锁定在家目录,不能访问其他目录;如果为NO,则所有用户都不锁定在家目录。默认值为NO,所以在本节中的ftpuser1用户和上节中的centos用户都可以访问其他目录。如果改为YES的话,ftpuser1就只能访问/opt/ftp目录及子目录,centos用户就只能访问/home/centos目录及子目录。
一般来说,还是建议FTP用户只访问FTP目录,所以建议将chroot_local_user的值设为YES
2)由于chroot_local_user比如霸道,只要设为YES,所有的用户都会被锁定在家目录中,但凡事总有例外,万一有一个用户希望使用FTP上传文件到其他目录怎么办呢?所以CentOS有一个参数chroot_list_file可以用来指定一个列表,这个列表中可以添加不受chroot_local_user控制的用户名。
3)使用chroot_list_enable来启用或不启用chroot_list_file指定的列表。

所以,这是一套组合拳。
1)无论是否将用户锁在家目录,都可以使用chroot_list_file来指定“例外”用户。
如果chroot_local_userYES,那么chroot_list_file中的用户,就是不被锁定的用户;
如果chroot_local_userNO,那么chroot_list_file中的用户,就是被锁定的用户。
2)如果要使用chroot_list_file列表,就必须使用chroot_list_enable=YES来启用。所以:
如果chroot_local_userYES,那么chroot_list_enable就必须为YES,要不然,所有用户都会被强制锁在家目录了;
如果chroot_local_userNO,那么chroot_list_enable可以为YESNO,可以指定例外,或不指定例个。
3)如果使用chroot_list_enable=YES启用了例外列表,就一定要使用chroot_list_file来指定例外列表的位置。
4)如果使用chroot_list_file来指定例外列表的位置,这个位置上就必须要有文件,哪怕是个空文件。

6、文件夹权限设置

CentOS规定,如果用户被锁定在家目录的话,这个目录就不能再有可写权限,否则,FTP无法登录。解决方式有两种:

1、移除家目录的写权限,另外添加有上传权限的目录。
1)移除家目录的写权限。

chmod a-w /opt/ftp

2)添加一个上传文件夹
移除家目录写权限之后,家目录就不再有可写权限,也就不能上传文件、新建目录、重命名文件和文件夹了,只能下载文件。变通方法只能在家目录里,再添加一个文件夹。

mkdir -p /opt/ftp/uploads

3)修改文件夹权限
如果使用root用户添加的话,默认文件夹的文件宿主和群宿主都为root,默认权限为rwxr-xr-x,而登录的FTP用户为ftpuser1,所以需要修改一下权限,否则还是无法上传文件。
最简单的办法,就是为文件夹的other用户直接添加写权限。chmod o+w /opt/ftp/uploads
也可以将文件宿主改成上面的ftpuser1,或将群宿主改成上面的ftpgroup,当然也可以两个都改。chown ftpuser1:ftpgroup /opt/ftp/uploads,然后再使用chmod需要设置一下文件夹的对应的权限。假设只修改了文件宿主,那么就要把文件夹的user权限设为7(读、写、执行都需要);假设只修改了群宿主,那么就要将文件夹的group权限设为7;other权限随意。chmod 770 /opt/ftp/uploads

2、让家目录可以拥有写权限
修改/etc/vsftpd/vsftpd.conf文件,添加allow_writeable_chroot=YES,让家目录可以有可写权限,这种方法比较简单。

7、添加例外列表

添加/etc/vsftpd/chroot_list文件,里面不需要添加内容。

touch /etc/vsftpd/chroot_list

8、总结

创建专用的FTP用户,需要以下几个步骤:

  1. 创建FTP用户组,groupadd ftpgroup
  2. 创建FTP用户,指定上传目录为家目录,添加到FTP组中,设置为不能登录,同时创建上传目录文件夹,useradd -g ftpgroup -d /opt/ftp -s /sbin/nologin -m ftpuser1
  3. 为FTP用户添加密码,passwd ftpuser1
  4. 修改/etc/shells,将/sbin/nologin添加其中,这样vsftpd就会让FTP用户登录了。
  5. 锁定FTP目录
    • chroot_local_user=YES,将所有用户都锁定在家目录
    • chroot_list_enable=YES,启用例外列表
    • chroot_list_file=/etc/vsftpd/chroot_list,设置例外列表位置
  6. 选择是为家目录称除写权限,还是让家目录可以拥有写权限
    • allow_writeable_chroot=YES,让家目录可以拥有写权限。
    • 移除家目录的写权限,并添加一个上传目录。
      • chmod a-w /opt/ftp,移除家目录权限。
      • mkdir -p /opt/ftp/uploads,添加一个用于上传的文件夹
      • chown ftpuser1:ftpgroup /opt/ftp/uploads,修改文件夹的宿主。
      • chmod 770 /opt/ftp/uploads,设置文件夹的权限。
  7. touch /etc/vsftpd/chroot_list,添加例外列表文件
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值