vsftpd
1、安装vsftpd
1、检查vsftpd软件是否安装:rpm -qa | grep vsftpd
2、安装dvsftpd:yum install -y vsftpd
3、设置开机启动:systemctl enable vsftpd
2、配置
配置文件目录:cd /etc/vsftpd/
1、备份默认的配置文件:cp vsftpd.conf vsftpd.conf.bak
2、修改参数(根据自身需求设置,修改后请重启vsftpd服务)
anonymous_enable=NO #不允许匿名用户登陆
anon_mkdir_write_enable=YES #匿名用户不可以修改文件
chroot_local_user=YES #设置指定用户列表文件中的用户,是否允许切换到上级目录
local_enable=YES #vsftpd所在系统的用户可以登录vsftpd
write_enable=YES #允许使用任何可以修改文件系统的FTP的指令
local_umask=002 #匿名用户新增文件的umask数值
anon_upload_enable=NO #匿名用户不可以上传文件
anon_mkdir_write_enable=NO #匿名用户不可以修改文件
xferlog_enable=YES #启用一个日志文件,用于详细记录上传和下载
use_localtime=YES #使用本地时间而不是GMT
vsftpd_log_file=/var/log/vsftpd.log #vsftpd日志存放位置
dual_log_enable=YES #用户登陆日志
connect_from_port_20=YES #开启20端口
xferlog_file=/var/log/xferlog #记录上传下载文件的日志
xferlog_std_format=YES #记录日志使用标准格式
idle_session_timeout=600 #登陆之后超时时间60秒,登陆之后,一分钟不操作,就会断开连接
listen=YES #开启监听
pam_service_name=vsftpd.vu #验证文件的名字
userlist_enable=YES #允许由userlist_file指定文件中的用户登录FTP服务器
tcp_wrappers=YES #支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
guest_enable=YES #起用虚拟用户
guest_username=taokey #虚拟用户名
3、创建用户
useradd -d /file/vsftpd -s /bin/false -g ftp vsftpd
- -g 指定用户所属组
- -d 指定用户目录
- -s 指定用户SHELL
- /bin/false:最严格的禁止,不允许任何登录
- /usr/sbin/nologin:不允许系统login,允许ftp登录(在AlmaLinux 8.8版本时)
- /bin/sh:可以自由登录
设置密码:passwd vsftpd
修改目录所属用户为vsftpd,所属组为ftp:chown -R vsftpd:ftp /file/vsftpd
用户新建的文件自动继承父文件夹的权限(-d参数继承):setfacl -R -d -m u:vsftpd:rwx /file/vsftpd
4、防火墙
1.开放ftp服务:firewall-cmd --zone=public --add-service=ftp --permanent
2.开放21端口:firewall-cmd --zone=public --add-port=21/tcp --permanent
5、测试
windows:ftp x.x.x.x
6、异常
异常一:这个时候,使用ftp的工具连接时,我们发现是可以连接的。传输文件的时候,会发现文件上传和下载都会出现
500、503 、200等问题。这个时候,可以进行以下操作:
解决办法:
- (推荐)修改SELINUX配置文件(关闭SELINUX):/etc/selinux/config
,设置:SELINUX=disabled
,然后重启服务器
- SELINUX不对vsftp不做任何限制:setsebool -P ftpd_connect_all_unreserved 1
异常二
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
500 OOPS: priv_sock_get_cmd
解决办法:在/etc/vsftpd/vsftpd.conf
增加以下内容
allow_writeable_chroot=YES
local_root=/file/vsftpd #设置vsftpd的根目录,其他的用户目录在其之下
local_enable=YES
7、限制用户切换目录
- 所有用户都被限制在其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制
chroot_local_user=YES
chroot_list_enable=YES #是否启用chroot_list_file配置来设置例外
chroot_list_file=/etc/vsftpd/chroot_list
- 所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
然后创建chroot_list文件,添加需要例外的用户名,每个用户名占一行
重启服务使配置生效