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
重启机器即可