首先网络、防火墙方面的基本要求要满足,比如静态ip、防火墙是否可以通过ftp的流量。
一、安装vsftpd并匿名用户访问
$ yum install vsftpd
$ systemctl start vsftpd
默认安装完成并启动后就可以匿名访问ftp服务器了,虽说匿名,不过也是有相应的系统账号ftp
。默认匿名用户的ftp根目录是/var/ftp
,只有读取的权限,若匿名用户需要更大的权限,那么就需要更改vsftpd服务的配置文件了!
$ vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
#########################主要是开启这两个选项#########################
anon_upload_enable=YES
anon_mkdir_write_enable=YES
##########################默认存在,开启即可##########################
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
匿名用户常见配置项的含义说明:
anonymous_enable=YES
:是否允许匿名访问;
anon_umask=022
:设置匿名用户所上传文件的默认权限掩码值(反掩码);
anon_root=/var/ftp
:设置匿名用户的FTP根目录;
anon_upload_enable=YES
:是否允许匿名用户上传文件;
anon_mkdir_write_enable=YES
:是否允许匿名用户由创建目录的写入权限;
anon_other_write_enable=YES
:是否允许匿名用户有其他写入权限,如对文件改名、覆盖及删除文件等;
二、基于用户验证的FTP服务
$ vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#########################默认不存在,手动添加即可#########################
chroot_local_user=YES
allow_writeable_chroot=YES
以上配置文件最终的效果是,每个系统用户都可登录ftp服务器,并且权限最大,ftp的默认根目录为系统用户的宿主目录下。(对于本地系统用户设置权限,直接更改用户宿主目录的权限更方便些)
关于本地用户常见的配置项及含义说明:
local_enable=YES
:是否允许本地用户访问;
local_umask=022
:设置本地用户所上传文件的默认权限掩码值(反掩码);
local_root=/var/ftp
:设置本地用户的FTP根目录(默认为用户的宿主目录);
chroot_local_user=YES
:是否将FTP本地用户禁锢在宿主目录中;
allow_writeable_chroot=YES
:允许被限制用户的主目录具有写权限;
local_max_rate=0
:限制本地用户的最大传输速率(0为无限制),单位为字节/秒(B/s)
在/etc/vsftpd/
目录下还有两个配置文件ftpusers
和userlist
:
ftpusers
文件:此文件中列出的用户将禁止登录vsftpd服务器。默认包含root、bin、daemon等用于系统运行的特殊用户;user_lis
t文件:此文件中包含的用户可能被禁止,可能被允许,具体取决于主配置文件vsftpd.conf
中的设置,当存在userlist——enable=YES
时,user_list列表文件方可生效,若继续指定userlist_deny=YES
,则功能与ftpusers文件一样,表示禁止此列表中的用户登录;若指定userlist_deny=NO
,则仅允许列表中的用户登录。
三、ftp所有配置项的详细解释
3.1 关于匿名用户
anonymous_enable=YES
:是否允许匿名访问;
anon_umask=022
:设置匿名用户所上传文件的默认权限掩码值(反掩码);
anon_root=/var/ftp
:设置匿名用户的FTP根目录;
anon_upload_enable=YES
:是否允许匿名用户上传文件;
anon_mkdir_write_enable=YES
:是否允许匿名用户由创建目录的写入权限;
anon_other_write_enable=YES
:是否允许匿名用户有其他写入权限,如对文件改名、覆盖及删除文件等;
3.2 关于本地用户
local_enable=YES
:是否允许本地用户访问;
local_umask=022
:设置本地用户所上传文件的默认权限掩码值(反掩码);
local_root=/var/ftp
:设置本地用户的FTP根目录(默认为用户的宿主目录);
chroot_local_user=YES
:是否将FTP本地用户禁锢在宿主目录中;
allow_writeable_chroot=YES
:允许被限制用户的主目录具有写权限;
local_max_rate=0
:限制本地用户的最大传输速率(0为无限制),单位为字节/秒(B/s)
3.3 关于全局配置
listen=NO
: 是否以独立运行的方式监听服务;
listen_address=0.0.0.0
:设置监听f t p服务的ip地址;
listen_port=21
:设置监听ftp服务的端口号;
write_enable=YES
:启用任何形式的写入权限,(如上传、删除文件等)都需要开启此项;
download_enable=YES
:是否允许下载文件(建立仅限于浏览、上传的FTP服务器时,可将此项设置为“NO”);
dirmessage_enable=YES
:用户切换进入目录时显示 “.message”文件(如果已存在)的内容;
xferlog_enable=YES
:启用xferlog日志,默认记录到 /var/log/xferlog;
xferlog_std_format=YES
:启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式;
connect_from_port_20=YES
:允许服务器主动模式(从20端口建立数据连接);
pasv_enable=NO
:禁止被动模式连接;默认允许被动模式连接;
pasv_max_port=24600
:设置用于被动模式的服务器最大端口号;
pasv_min_port=24500
:设置用于被动模式的服务器最大端口号;
pam_service_name=vsftpd.vu
:设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名);
userlist_enable=YES
:是否启用userl_ist用户列表文件;
userlist_deny=YES
:是否禁用user_list列表文件中的用户账号;
max_clients=0
:最多允许多少个客户端同时连接(0为无限制);
max_per_ip=0
:对来自同一个ip地址的客户端,最多允许多少个并发连接(0为无限制);
tcp_wrappers=YES
:是否启用tcp_wrappers主机访问控制;
3.4 关于虚拟用户的配置项:
guest_username=test
:指定映射的系统用户名称;
guest_enable=YES
:是否启用虚拟用户;
allow_writeable_chroot=YES
:允许被限制用户的主目录具有写权限(此项必须写入,否则可能会报错)
anon_world_readable_only=NO
:允许用户下载目录内容
anon_other_write_enable=YES
:允许匿名用户有其他写入权限,如重命名、覆盖及删除文件等;
user_config_dir=/etc/vsftpd/vusers_dir
:指定虚拟用户独立的配置文件目录;