首先通过命令检查当前服务器是否安装了 vsftpd:
若只有下面一行证明未安装。
如果未安装可以通过在线安装:yum install vsftpd -y 。
安装完成后需要修改配置文件:
[root@iZ94nqhgta3Z /]# vi /etc/vsftpd/vsftpd.conf
关闭匿名登陆
anonymous_enable=NO
允许使用ascii码上传
ascii_upload_enable=YES
允许使用ascii码下载
ascii_download_enable=YES
限定在用户自己的主目录,不能跳出主目录之外目录
chroot_user_local=YES
到此,vsftpd 的配置已经完毕,接下来就是添加ftp账号。
我需要一个ftp账号,只对某个目录有读写权限,例如 /www 文件夹:
第一步,创建 www文件夹。
[root@iZ94nqhgta3Z /]# mkdir /www
第二步,创建用户。
[root@iZ94nqhgta3Z /]# adduser -d /www -g ftp -s /sbin/nologin -M ftpuser
[root@iZ94nqhgta3Z /]# passwd ftpuser
Changing password for user ftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@iZ94nqhgta3Z /]#
在adduser中:
-d 指定登陆后的目录
-g 指定用户组
-s 指定用户登陆入所使用的 shell
-M 不要使用创建用户时自动创建的目录(在不指定 -d 的情况下创建用户程序会自动创建对应的目录)
重启 vsftpd
[root@iZ94nqhgta3Z /]# service vsftpd restart
Redirecting to /bin/systemctl restart vsftpd.service
自 centos7 开始,为了简化操作,systemctl命令将service和chkconfig命令结合在一起,这样通过一个命令就能实现两个命令的功能,所以此处重启提示为重定向到systemctl重启,即使用service重启也不影响。
若 ftp 创建完成后,连接上去发觉只能下载,上传时报 503 permission denied 错误,这是因为创建的用户组没有操作权限,你的文件夹所属用户组及用户都是root 或者其它组的,所以需要改变 ftp 指向目录的拥有者:
chown -R ftpuser:ftp /www
-R 处理目录及其子目录的所有文件
ftpuser:ftp [ 用户:用户组 ]
在修改了 chroot_local_user 属性以后,若出现:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
经了解,问题在于启用chroot,必须保证ftp根目录不可写,这样对于ftp根直接为网站根目录的用户不方便,所以建议假如ftp根目录是/www,则将访问权限改写如下:
chmod a-w /www
a All,即指所有用户;
- 取消、减去;
w 写入权限;