在Linux系统中添加FTP用户,本质上就是创建一个系统用户,并配置FTP服务使其能够通过文件传输协议登录和上传下载文件。很多运维新手会遇到权限不足、登录失败或目录无法访问的问题,其实只要理解用户、目录和FTP配置这三者的关系,操作起来并不复杂。下面我会从实际操作角度,把整个流程和关键细节说清楚。
创建系统用户是第一步

要添加FTP用户,必须先有一个系统账号。Linux下用useradd命令就能完成创建,比如我想新增一个叫ftpuser的账号,直接执行useradd ftpuser。这个命令会创建用户,同时生成一个同名组,默认家目录在/home/ftpuser。如果希望用户只能访问特定目录,可以用-d参数指定家目录,比如useradd -d /data/ftp ftpuserlinux如何添加ftp用户,这样用户登录后直接进入/data/ftp目录。
创建完用户后,必须设置密码才能登录。用passwd ftpuser命令,系统会提示输入两次密码。这里要注意,密码尽量复杂一些,避免被暴力破解。如果用户只用于FTP登录,不希望它有SSH登录权限,可以设置shell为/sbin/nologin,命令是useradd -s /sbin/nologin ftpuser,这样用户即使有密码也无法通过SSH登录系统,安全性会高很多。

配置FTP服务限制用户权限
用户创建好了,但FTP服务不一定允许它登录,这取决于FTP软件的配置。以最常见的vsftpd为例,需要修改/etc/vsftpd/vsftpd.conf文件。关键参数有几个:local_enable=YES表示允许本地用户登录,write_enable=YES允许写入,chroot_local_user=YES会限制用户只能在自己的家目录活动,不能跑到系统其他目录去。如果启用了chroot,很多版本会要求家目录不可写,否则登录会报错,解决办法是设置一个可写的子目录,比如在家目录下创建upload文件夹,并修改权限。

对于特定用户的管理,vsftpd支持用户列表。在/etc/vsftpd目录下创建user_list文件,把允许登录的用户名写进去,然后在配置中设置userlist_enable=YES和userlist_deny=NO,这样只有列表中的用户才能登录FTP。如果需要禁止某些用户登录,可以保持userlist_deny=YES,被列入列表的用户就会被拒绝。这种细粒度控制在实际运维中非常实用,能有效管控访问权限。
目录权限设置避免访问报错

很多FTP用户添加后无法上传文件,原因往往是目录权限不对。比如上面提到的chroot环境,如果家目录是755权限,但用户想上传文件,至少要给家目录下的子目录写入权限。可以用chown ftpuser:ftpuser /home/ftpuser/upload将upload目录归属给用户,权限设为755或750。如果用户需要上传到多个目录,可以提前规划好目录结构,并把相应目录的属主改为该用户。
还要注意SELinux和防火墙的影响。很多Linux发行版默认开启SELinux查看系统版本linux,如果没关闭或配置,FTP用户可能无法读取文件。可以用setsebool -P ftp_home_dir on允许FTP访问家目录。防火墙方面,确保放行了21端口,如果有被动模式,还需要放行相关端口范围linux如何添加ftp用户,比如在iptables或firewalld中开放30000-31000端口,并在vsftpd配置中设置pasv_min_port=30000和pasv_max_port=31000。

上面的步骤都完成后,用ftp客户端软件连接服务器,输入用户名和密码就能正常登录了。如果遇到530 Login incorrect这类错误linux安装,先检查用户名密码是否正确,再看vsftpd的日志文件/var/log/vsftpd.log,错误原因都在里面。日志会明确提示是密码错误、用户被拒绝还是目录权限问题,根据提示调整即可。FTP用户管理其实不难,关键是把系统用户、服务配置和文件权限这三个环节打通,任何一个环节出问题都可能导致登录失败。
