vsftpd
软件官网:http://vsftpd.beasts.org/
控制用户是否允许切换到上级目录
在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录。
1、chroot_list_enable=YES/NO(NO)
设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
2、chroot_list_file=/etc/vsftpd.chroot_list
用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
3、chroot_local_user=YES/NO(NO)
用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
通过搭配能实现以下几种效果:
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。
鸟哥建议用①
/etc/vsftpd
[root@localhost vsftpd]# ls
chroot_list ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
vsftpd.conf 中开启如下:
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
systemctl stop vsftpd
systemctl start vsftpd
添加一个ftp用户,只能登陆ftp服务器,不能登陆系统
useradd ftpuser -s /sbin/nologin
登录后默认的路径为 /home/ftpuser.
local_root=/ftpdata/ftpuser 用户登入时,所在目录
总结:
最佳实践配置:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
touch /etc/vsftpd/chroot_list
useradd ftpuser -s /sbin/nologin
local_root=/ftpdata/ftpuser
allow_writeable_chroot=YES
anonymous_enable=NO
问题一、本地用户使用/sbin/nologin作为shell后无法登录
原因:vsftpd默认会检查用户的shell,如果用户的shell在/etc/shells没有记录,则无法登陆ftp
解决方法:将/sbin/nologin追加到文件/etc/shells中
echo "/sbin/nologin" >> /etc/shells
补充:/etc/shells文件的作用
1.系统某些服务在运行过程中,回去检查用户使用的shells,而这些shell查询就是借助/etc/shells这个文件。
2.修改该文件不会影响用户登陆服务器主机的权限,该文件提供给解释器给系统的某些服务判断一个用户是否是有效用户,例如我创建的ftp用户解释器为/sbin/nologin,我系统的/etc/shells文件里面没有添加/sbin/nologin,所以我创建的ftp用户登陆不了ftp服务,后面将/sbin/nologin添加进/etc/shells文件,则问题解决。