lenchio 2013-08-19
开发中有个需求,需要在服务器开通一个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 一定要存在