Linux 使用 vsftpd 限制登陆用户访问和修改某个文件夹 (FTP)

开发中有个需求,需要在服务器开通一个FTP账号给其他人用,让他们上传东西到我们的服务器。但是又不能让他们访问主机的其他目录,所以用到vsftpd这个东西。

我们的主机系统是RHEL 9 ,自带了 vsftpd,如果你的系统没有vsftpd,先自行安装一个,可以上网搜索如何安装。

设置步骤:

1.假设需要建立FTP登陆用户名为test。被限制路径为/home/test

2.linux建立用户 :

useradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/test
passwd test //为test设置密码

3.权限设置

   a.关闭用户test telnet权限,使其不能通过ssh登陆,只能通过vsftpd的调用登陆

      usermod -s /sbin/nologin test

   b.vsftpd调用系统验证用户登录时的bin目录

      usermod -s /bin/bash test

   c.usermod -d /home/test test 更改用户test的主目录为/home/test

4.限制用户只能访问/home/test,不能访问其他路径

修改/etc/vsftpd/vsftpd.conf如下:

chroot_list_enable=YES //限制访问自身目录
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

保存退出

5.修改 /etc/vsftpd/vsftpd.chroot_list  (将受限制的用户添加进去,每个用户名一行)

在第一行加上 test

6 重启vsFTPd服务器
/etc/init.d/vsftpd restart 或者 service vsftpd restart

7.如果需要允许用户修改密码,但是又没有telnet登录系统的权限:

usermod -s /usr/bin/passwd test //用户telnet(SSH)后将直接进入改密界面

可能出现问题

1.vsftp 500 OOPS: cannot change directory

在终端输入命令:

setsebool -P ftpd_disable_trans 1

service vsftpd restart

这样每次重启机器都可以了·

原因就在SELinux。

2.连接时出现

530 Login incorrect

这种情况多数是配置用户的问题,网上的解决方法不一

如果出现这种情况,再执行一次

usermod -s /bin/bash test 试试

目录 /bin/bash 一定要存在

相关推荐