最近要建一个ftp服务器,服务器是CentOS7.1的操作系统,ftp软件仔细考虑后,决定采用vsftpd。想法定好后,决定开工。

先安装软件:

yum -y install vsftpd

看看能不能启动:

systemctl start vsftpd.service

很幸运,启动成功了,接下来就是把服务器设置为开机自启动:

systemctl  enable vsftpd.service

接下来是防火墙设置,把ftp服务加入防火墙放行:

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

重新加载防火墙配置:

firewall-cmd --reload

注:centos6的iptables应该这样配置:

iptables -I INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
service iptables save

接下来就是重点了,配置ftp:

vim /etc/vsftpd/vsftpd.conf

配置文件里面需要改变的几项说明:

#是否允许匿名登录,为了安全,一般不允许
anonymous_enable=NO
#是否用ASCII模式上传下载
ascii_upload_enable=YES
ascii_download_enable=YES
#ftp设置欢迎语
ftpd_banner=Welcome to xxxx FTP service.
#用户是否允许chroot,yes是不允许,no是允许,这里有点绕
chroot_local_user=YES
#是否以IPv4 standalone运行
listen=YES
#IPv4和v6只能监听一个,把v6的注释掉或者填写no
#listen_ipv6=YES
#使用本地时间
use_localtime=YES
#是否允许根目录可写
allow_writeable_chroot=YES

我们可以新建下被动模式的端口范围,方便防火墙放行,如果不设定访问,使用任意端口,如果客户端以被动模式连接过来,获取文件列表会有问题。

pasv_min_port=10090
pasv_max_port=10100

放行被动模式还有种方法,通过制定状态来放行,一般防火墙默认已经放行RELATED,ESTABLISHED连接状态,比如在redhat或者centos中,iptables默认放行规则如下:

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

因此,我们可以加载制定的ftp模块来自动放行被动模式所用的端口。
vim /etc/sysconfig/modules/ftp.modules

modprobe nf_conntrack_ftp

设置为可执行:

chmod a+x /etc/sysconfig/modules/ftp.modules

这样,即使不设定被动模式的端口范围,我们也能用被动模式传输数据了。

在CentOS7中,除了上述方法(也有效),我们还可以这样加载模块:
vim /etc/modules-load.d/ftp.conf

nf_conntrack_ftp

直接写入要加载的模块名即可生效了。

新建用户:

useradd -d /mnt/sdb/username -s /sbin/nologin -M username
chown -R username:username /mnt/sdb/username
chown -R 700  /mnt/sdb/username

需要注意的是,如果不设置allow_writeable_chroot=YES,默认连接ftp会报错:

500 OOPS: vsftpd: refusing to run with writable root inside chroot().

此时需要把根目录的写权限去除才能解决,即chown u-w /mnt/sdb/ftphome/,或者也可以给根目录写的权限,但运行:

echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf

ftp默认的目录为/var/ftp/pub/,如果要改变默认目录,可以用local_root=/ftpdir 来设置新的默认的目录。但是,我们一般都会新建用户,指定每个用户自己的目录,所以这样做似乎不是很必要。

很恶心的东西来了,ftp登录后,发现无法创建文件夹,但是我们已经完全设置根目录可写权限了。运行下面这条命令:

setsebool -P ftpd_full_access on

centos6中,对应的selinux 布尔值应该是这样的:

setsebool -P allow_ftpd_full_access 1

 

CentOS7安装vsftpd注意事项
Tagged on:     

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注