linux搭建ftp服务问题汇总(持续更新)
1、更改用户主目录方式
(1)切换到root用户,直接修改/etc/passwd文件,找到你的用户名你一行,如下图所示修改路径,然后保存即可。
(2)切换到root用户,使用usermod命令,例如usermod -d /tmp test (test为你的用户名),使用该命令请确保该用户下没有运行的软件或进程
2、linux查看所有用户
查看所有用户列表是cat /etc/passwd
3、设置只能访问用户主目录
这时候我就需要使用到chroot_local_user,chroot_list_enable,chroot_list_file这三个选项了。vi /etc/vsftpd/vsftpd.conf
如下设置
chroot_local_user=YES chroot_list_enable=NO
对于chroot_local_user与chroot_list_enable的组合效果,可以参考下表:
chroot_local_user=YES |
chroot_local_user=NO |
|
chroot_list_enable=YES |
1.所有用户都被限制在其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制 |
1.所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制 |
chroot_list_enable=NO |
1.所有用户都被限制在其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 |
1.所有用户都不被限制其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 |
另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:
allow_writeable_chroot=YES
好了,这样就只能访问自身所属目录。如果希望某个用户可以访问根目录,配置chroot_list_enable=YES,再把用户名加入文件/etc/vsftpd/chroot_list,不存在就创建这个文件,一行一个用户名。
4、linux中ftp查看不到文件列表的问题
在linux上配置好FTP服务器,使用ftp工具登录后,目录/home可以通过手工写路径访问,但是文件夹和文件列表看不到数据。
原因:跟SELinux有关
解决方法:关闭SELinux
查看SELinux状态:/usr/sbin/sestatus -v #如果SELinux status参数为enabled即为 开启状态
方法一:临时关闭(不用重启机器)
setenforce 0 #设置SELinux 成为permissive模式
#setenforce 1 设置SELinux 成为enforcing模式
方法二:修改配置文件需要重启机器
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可