这里吃过大坑,一定要关闭SELinux。
vi /etc/sysconfig/selinux
SELINUX=disabled
重启系统才会生效
临时关闭:
setenforce 0
查看:getenforce
yum install vsftpd
# 先备份原配置文件
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_backup
/etc/vsftpd/ftpusers文件内的用户名禁止登录 FTP,文件内已有的默认禁止的用户名有 root、daemon、bin、sys 等。如果需要禁止某个用户登录,可将用户名添加到该文件(每行一个用户名)。该文件由 PAM 模块的/etc/pam.d/vsftpd配置文件指定:
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
vsftpd 也有自己的限制用户登录的管理机制,详见/etc/vsftpd/vsftpd.conf文件中userlist_file字段介绍。
PS: 如果有本地用户没有在 /etc/ftpusers 文件内,却依然无法登录,打开sudo vim /etc/pam.d/vsftpd,找到下面这句话,注释掉,重启服务,再尝试登录:
#auth required pam_shells.so
添加本地FTP账号,并且不允许这些账号作为系统登入使用:
useradd test1 -s /sbin/nologin -d /home/test1
passwd test1
#-s /sbin/nologin,不允许该账号作为系统登入;
#-d /home/test1,手工指定该账号家目录,可选。
打开/etc/vsftpd/vsftpd.conf文件:配置如下:
local_root=/home/ftp
chroot_local_user=YES
# 默认chroot_local_user这条代码是被注释掉的,
# 如果没有配置local_root,而配置了chroot_local_user,会导致用户无法登入FTP问题。
注意:/home/ftp这个目录权限不能是777,否则会因为权限原因访问不了,可以配置成chmod 755 /home/ftp,然后添加一个文件夹配置成777权限,作为用户使用。也可以为每一个用户创建一个文件夹,然后使用:mkdir test、chown bruce test,把新建文件夹,作为用户的拥有者,那么这个用户就有增删改查的权限了。
vsftpd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的。
chroot_local_user=YES,账号锁定主目录,账号登入后访问主目录路径。
经过测试,不能用账号的家目录做主目录,否则访问会失败:
如:test1账号主目录为/var/test1;test2账号主目录为/var/test2.
vim /etc/vsftpd/vsftpd.conf
local_enable=YES
local_root=/home/ftp
chroot_local_user=YES
# 用户配置目录
user_config_dir=/etc/vsftpd/userconfig
然后在vsftpd目录下,创建userconfig目录,并生成对应账号test1、test2的文件,然后在文件里指定主目录路径:
mkdir userconfig
cd userconfig
vi test1
local_root=/var/test1
vi test2
local_root=/var/test2
文件路径 | 说明 |
---|---|
/etc/vsftpd/vsftpd.conf | 主配置文件 |
/usr/sbin/vsftpd | Vsftpd的主程序 |
/etc/rc.d/init.d/vsftpd | 启动脚本 |
/etc/pam.d/vsftpd | PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户) |
/etc/vsftpd/ftpusers | 禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下) |
/etc/vsftpd/user_list | 禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下) |
/var/ftp | 匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录 |
/var/ftp/pub | 匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除) |
/etc/logrotate.d/vsftpd.log | Vsftpd的日志文件 |
默认情况下,匿名用户所有上传下载,所使用的用户都是ftp用户的权限,若要上传文件,则需要ftp用户有写的权限,若要下载,则需要ftp用户有读的权限。
#打开匿名用户模式
anonymous_enable=YES
#打开全局写权限
write_enable=YES
#开启匿名用户上传权限
anon_upload_enable=YES
#开启匿名用户创建目录的权限
anon_mkdir_write_enable=YES
#开启匿名用户可以删除目录和文件,需自己添加
anon_other_write_enable=YES
#开启匿名用户下载权限,需自己添加
anon_world_readable_only=YES
#设置匿名用户可以下载自己上传的文件,需自己添加
anon_umask=022
#设置匿名用户的登录目录(如需要,需自己添加并修改)
anon_root=/home/ftp
注意:/home/ftp这个目录权限不能是777,否则会因为权限原因访问不了,可以配置成755,然后添加一个文件夹配置成777权限,作为匿名用户使用。vsftpd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的。
配置空闲的用户会话的中断时间:如下配置将在用户会话空闲5分钟后被中断,以释放服务器的资源:
Idle_session_timeout=300
配置空闲的数据连接的中断时间:如下配置将在数据空闲连接1分钟后被中断,同样也是为了释放服务器的资源
Data_connection_timeout=60
配置客户端空闲时的自动中断和激活连接的时间:如下配置将使客户端空闲1分钟后自动中断连接,并在30秒后自动激活连接
Accept_timeout=60
Connect_timeout=30
控制端口为21,数据端口一般为20;
有两种工作模式:被动和主动模式,差别在于建立数据连接时是由谁来主动建立连接,被动模式是由客户端来主动连接服务器提供的数据侦听端口。而主动模式是由服务端来主动连接客户端,但是由于客户端的防火墙等策略,可能会失败。
默认是passive模式
在命令行输入vim /etc/vsftpd/vsftpd.conf:
active mode配置:
pasv_enable=NO (passive模式关闭)
pasv_min_port=3000
pasv_max_port=4000
port_enable=YES (active模式开启)
connect_from_port_20=YES (即默认情况下,FTP PORT主动模式进行数据传输时使用20端口(ftp-data)。YES使用,NO不使用。)
passive mode配置:
pasv_enable=YES
pasv_min_port=3000
pasv_max_port=4000
设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意(1024 – 65535端口)。默认值为0。把端口范围设在比较高的一段范围内,比如3000-4000。
如果不配置pasv_enable=NO,默认是passive模式
在FTP服务器的管理中,无论对本地用户还是匿名用户,对于FTP服务器资源的使用都需要进行控控制,避免由于负担过大造成FTP服务器运行异常,可以添加以下配置项对FTP客户机使用FTP服务器资源进行控制:
对vsftpd.conf文件中配置:
max_client:设置项 用于设置FTP服务器所允许的最大客户端连接数,值为0时表示不限制。例如max_client=100表示FTP服务器的所有客户端最大连接数不超过100个。
max_per_ip:设置项 用于设置对于同一IP地址允许的最大客户端连接数,值为0时表示不限制。例如max_per_ip=5表示同一IP地址的FTP客户机与FTP服务器建立的最大连接数不超过5个。
local_max_rate:设置项 用于设置本地用户的最大传输速率,单位为B/s,值为0时表示不限制。例如local_max_rate=500000表示FTP服务器的本地用户最大传输速率设置为500KB/s.
anon_max_rate:设置项 用于设置匿名用户的最大传输速率,单位为B/s,值为0表示不限制。例如ano_max_rate=200000,表示FTP服务器的匿名用户最大传输速率设置为200KB/s.