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文件,添加需要例外的用户名,每个用户名占一行
重启服务使配置生效

posted @ 2023-07-14 09:27  谭五月  阅读(56)  评论(0)    收藏  举报