Linux下的ftp大多是vsftpd服务,OS初始安装后需要自行安装vsftpd服务。在类redhat系统下联机安装是很容易的:yum install vsftpd 即可。离线安装方法自行查找。
默认安装ftpd服务后,一般的文件上下传输文件是没问题的。但如果对ftp有额外要求:比如针对不同ftp用户设置不同ftp权限,设置不同ftp家目录等,就需要再研究一番了。
1.设置多个ftp用户—user_config_dir配置项
vsftpd的默认配置文件/etc/vsfptd/vsftpd.conf ,若设置多个ftp用户需要增加user_config_dir配置,如:user_config_dir=/etc/vsftpd/myftpconfig

user_config_dir项配置目录
其中myftpconfig是自定义的目录名,里面存各个ftp用户配置。比如用户名为user1的ftp用户,就在myftpconfig中对应建立名为user1的ftp配置文件。user1文件可以从/etc/vsftpd/vsftpd.confg复制,毕竟只是修改其中几项。
这样,当以user1登录ftp时,就使用/etc/vsftpd/myftpconfig/user1配置文件。当其他用户登录时,仍然使用默认的/etc/vsftpd/vsftpd.config文件。
2.local_root配置项
local_root项用于指定ftp根目录。示例:

local_root指定ftp用户家目录
若以某个ftp用户登录报"500 OOPS: cannot changedirectory:/home/use1/xx/xx"这样的错,
首先要考虑权限问题,因为ftp用户对目标目录有操作权限才是ftp正确执行的前提之一,因此,要确保ftp用户对local_root指向目录具有读写权限。
3.allow_writeable_chroot配置项
当遇到报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
这可能是缺少allow_writeable_chroot项导致的,设置为:
allow_writeable_chroot=YES
4.如何把ftp用户可见目录限制在家目录下?
默认配置下用户可以退出到家目录以外,但这样存在安全隐患。
限制ftp用户退出家目录的方法:
步骤一:在/etc/vsftp/vsftpd.conf中修改两项:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

启用chroot_list设置
步骤二:把要限制在家目录的ftp用户名添加到/etc/vsftpd/chroot_list文件中。

列表中增加例外的ftp用户名
生效修改 service vsftd restart (高版本推荐 systemctl restart vsftpd.service)
完成以上修改,再以user1用户ftp登录后,可见目录就限制在家目录以内。