CentOS7安装配置vsftp搭建FTP

96
Otone
2018.08.29 15:05 字数 1610

为什么要安装配置vsftpd做FTP服务?
其实是考虑到可能需要给其他人修改内容,总不能给个最高权限的就给别人,于是就自己琢磨着弄了下vsftpd,记录一下安装配置过程。

安装

在安装前查看是否已安装vsftpd

** 查看是否已安装 方法一 **

[root@localhost ~]# rpm -q vsftpd

vsftpd-3.0.2-21.el7.x86_64

** 查看是否已安装 方法二 **

[root@localhost ~]# vsftpd -v

vsftpd: version 3.0.2

** 安装 vsftpd **

[root@localhost ~]# yum -y install vsftpd

查看位置

[root@localhost ~]# whereis vsftpd

vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz

启动vsftpd服务

systemctl start vsftpd.service

// 在centos7以下的版本使用的是service vsftpd start

同时,你需要把vsftpd服务添加进系统的启动项中(不然重启又得开一次ww

systemctl enable vsftpd.service

// 在centos7以下的版本使用的是chkconfig vsftpd on

不确定是否添加进系统启动项,可以使用systemctl list-unit-files
过滤查询可以systemctl list-unit-files | grep [服务名]

更多CentOS7与中systemctl的使用与7之前版本的对比可以看这个

https://www.cnblogs.com/shanwater/p/6847196.html

关闭firewall和SELinux

setenforce 0 // 设置SELinux 成为permissive模式 (关闭SELinux)

setenforce 1 // 设置SELinux 成为enforcing模式 (开启SELinux)

systemctl stop firewalld.service
//停止firewall

systemctl disable firewalld.service
//禁止firewall开机启动

*关闭的原因是一般系统中默认开启了防火墙,SELinux也处于启动状态,一般状态为enforing。致使很多服务端口默认是关闭的。有可能导致配置明明正确却无法正常使用(然后你就找半天找不出原因

如果你不愿意关闭防火墙,需要防火墙添加FTP服务。

firewall-cmd --permanent --zone=public --add-service=ftp

firewall-cmd --reload

ps:在服务器的安全组设置中放开端口应该也是可以的(大概,我也没试过

配置

** 配置文件/etc/vsftpd/vsftpd.conf修改配置文件(重要步骤) **

anonymous_enable=NO // 不允许匿名访问,禁用匿名登录

chroot_local_user=YES // 启用限定用户在其主目录下

use_localtime=YES // 使用本地时(自行添加)

chroot_list_enable=YES

local_enable=YES // 允许使用本地帐户进行FTP用户登录验证

allow_writeable_chroot=YES // 如果启用了限定用户在其主目录下需要添加这个配置,解决报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

xferlog_enable=YES // 启用上传和下载的日志功能,默认开启。

local_umask=022 // 设置本地用户默认文件掩码022

// FTP上本地的文件权限,默认是077,不过vsftpd安装后的配置文件里默认是022

很多人配置ftp最后用户没有权限和这里的步骤有关系(不要问我怎么知道的)

当virtual_use_local_privs=YES 时,虚拟用户和本地用户有相同的权限;虚拟用户高级参数

  • 当virtual_use_local_privs=NO 时,虚拟用户和匿名用户有相同的权限,默认是NO。

  • 当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。

  • 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。

  • 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。

  • 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。

  • 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。

  • 当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。

多用户配置

多用户配置需要自己手工添加配置,下面内容到vsftpd.conf末尾

use_localtime=YES // 使用本地时(自行添加)

listen_port=21

chroot_local_user=YES // 启用限定用户在其主目录下

idle_session_timeout=300

data_connection_timeout=120 // 数据连接超时时间

guest_enable=YES // 设定启用虚拟用户功能

guest_username=ftpuser // 指定虚拟用户的宿主用户 ftpuser(就是我们后面会新建这个用户)

// guest_username=www

// 如果ftp目录是指向网站根目录,用来上传网站程序

// 可以指定虚拟用户的宿主用户为nginx运行账户www,可以避免很多权限设置问题

//这方面自行百度

user_config_dir=/etc/vsftpd/vuser_conf // 虚拟用户配置文件目录
virtual_use_local_privs=YES // NO时,虚拟用户和匿名用户有相同的权限,默认是NO

pasv_min_port=10060 // 被动模式最小端口号10060

pasv_max_port=10090 // 被动模式最大端口号10090

accept_timeout=5

connect_timeout=1

创建宿主用户

// 方法一(我用的是这个)

// 创建用户 ftpuser 指定 /home/vsftpd 目录

useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser

// 设置用户 ftpuser 的密码

passwd ftpuser

// 把 /home/vsftpd 的所有权给ftpuser.root

chown -R ftpuser.root /home/vsftpd

// 注意不要漏了,没设置好的话新建的用户就没权限了

// 方法二(没用过,有兴趣的可以自己尝试)

useradd ftpuser -d /home/vsftpd -s /bin/false

chown ftpuser:ftpuser /home/vsftpd -R

// 如果虚拟用户的宿主用户为www,需要这样设置

// www目录是你应用的目录

chown www:www /home/www -R

最后重启vsftpd服务器

systemctl restart vsftpd.service

然后,刚刚创建的用户就可以登录ftp了

关于服务运维

systemctl restart vsftpd.service # 重启服务

systemctl start vsftpd.service # 启动服务

systemctl status vsftpd.service # 服务状态查看

关于一些虚拟用户与目录设置相关等更详细内容,可以查看

http://blog.51cto.com/11728495/2057661?utm_source=oschina-app


我创建的用户需要的权限是能正常修改内容,但是是限定那个目录下的,不能到达上一层目录

如果需要设置别的不同权限,可以根据上面的举一反三一下啦~

有问题可以留言,虽然我不一定懂(大概?),也许能交流出答案~

日记本
Gupao