CentOS 服务ftp(vsftpd)
1、检查是否已经安装vsftpd
yum list installed | grep vsftpd
2、安装vsftpd
yum install -y vsftpd
3、检查vsftpd
systemctl status vsftpd.service
4、设置ftp服务自动启动
开启自动启动
systemctl enable vsftpd.service
关闭自动启动
systemctl disable vsftpd.service
5、启动ftp服务
systemctl start vsftpd.service
6、防火墙端口设置
查看zone信息,一般是public firewall-cmd --get-active-zones
永久打开21端口,--zone=public参数可以省略 firewall-cmd --zone=public --add-port=21/tcp --permanent
添加ftp服务 firewall-cmd --permanent --zone=public --add-service=ftp
添加ftp服务后,一般可以不用添加21端口,这个端口会被默认打开,在/etc/services文件中,这个端口已经被注册给ftp服务使用
如果要修改缺省的ftp21端口,需要修改/etc/services里的注册端口号,并且vsftpd的配置文件vsftpd.conf需要修改listen_port的端口号
重新加载防火墙配置 firewall-cmd --reload
7、添加ftp用户
添加用户xu.dm.ftp,在root组,目录是/home/data,禁止登录,只能ftp useradd -g root -d /home/data -s /sbin/nologin xu.dm.ftp
设置密码 passwd xu.dm.ftp
8、设置ftp权限
和SElinux相关,一般情况下都是直接把SELinux禁用了
setsebool -P ftpd_full_access on
vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - SELinux is fully disabled. SELINUX=enforcing #SELINUX=disabled # SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted #SELINUX有「disabled」「permissive」,「enforcing」3种选择。 模式的设置 : enforcing:强制模式,只要selinux不允许,就无法执行 permissive:警告模式,将该事件记录下来,依然允许执行 disabled:关闭selinux;停用,启用需要重启计算机。
9、修改vsftp配置文件,禁止匿名登录
vi /etc/vsftpd/vsftpd.conf 把:anonymous_enable=YES 改为: anonymous_enable=NO
10、done
用FileZilla连接,一切OK。
11、vsftpd.conf主要参数
listen=[YES|NO] 是否以独立运行的方式监听服务 listen_address=IP 地址 设置要监听的 IP 地址 listen_port=21 设置 FTP 服务的监听端口 download_enable=[YES|NO] 是否允许下载文件 userlist_enable=[YES|NO] userlist_deny=[YES|NO] 设置用户列表为“允许”还是“禁止”操作 max_clients=0 最大客户端连接数,0 为不限制 max_per_ip=0 同一 IP 地址的最大连接数,0 为不限制 anonymous_enable=[YES|NO] 是否允许匿名用户访问 anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件 anon_umask=022 匿名用户上传文件的 umask 值 anon_root=/var/ftp 匿名用户的 FTP 根目录 anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录 anon_other_write_enable=[YES|NO] 是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限) anon_max_rate=0 匿名用户的最大传输速率(字节/秒),0 为不限制 local_enable=[YES|NO] 是否允许本地用户登录 FTP local_umask=022 本地用户上传文件的 umask 值 local_root=/var/ftp 本地用户的 FTP 根目录 chroot_local_user=[YES|NO] 是否将用户权限禁锢在 FTP 目录,以确保安全 local_max_rate=0 本地用户最大传输速率(字节/秒),0 为不限制
12、登录模式
vsftpd 以三种认证模式登录到FTP服务器上。 1)是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到 FTP 服务器。 2)是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。上例就是使用本地账户进行认证的。 3)是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,
而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。
12.1、匿名登录模式参数:
anonymous_enable=YES 允许匿名访问模式 anon_umask=022 匿名用户上传文件的 umask 值 anon_upload_enable=YES 允许匿名用户上传文件 anon_mkdir_write_enable=YES 允许匿名用户创建目录 anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录
12.2、本地用户登录参数:
anonymous_enable=NO 禁止匿名访问模式 local_enable=YES 允许本地用户模式 write_enable=YES 设置可写权限 local_umask=022 本地用户模式创建文件的 umask 值 userlist_enable=YES 启用“禁止用户名单”,名单文件为 ftpusers 和 user_list userlist_deny=YES 开启用户作用名单文件功能(default)
#vsftpd服务的目录里默认存放这两个文件ftpusers和user_list,默认情况下,在这两个文件列表里的用户是不允许使用ftp登录 [root@bigdata-senior01 vsftpd]# cat ftpusers # Users that are not allowed to login via ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody
#user_list列表里的用户是允许登录还是不允许主要是看配置 [root@bigdata-senior01 vsftpd]# cat user_list # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody