Linux 使用 vsftpd 搭建 ftp 服务器

来源:互联网 发布:惠普spectre 13知乎 编辑:程序博客网 时间:2024/05/18 05:59

首先通过命令检查当前服务器是否安装了 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 ftpuserChanging 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 restartRedirecting 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  写入权限;


0 0