1 安装ftp软件
yum install vsftpd* -y
2 配置服务启动
#启用 firewalld 服务 systemctl start vsftpd.service #开启vsftpd服务 这条命令设置 firewalld 服务在系统启动时自动启动。systemctl enable 命令用于管理系统服务的启动和停止配置。启用服务后,它会在每次系统启动时自动运行。 [root@localhost ~]# systemctl enable vsftpd.service
返回结果
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
继续配置防火墙
#永久添加 FTP 服务到 public 区域 #这条命令将 ftp 服务永久添加到 public 区域的防火墙配置中。--permanent 选项指定更改是持久的,即即使系统重启后也会保持。--zone=public 指定了将要修改的区域(public 是一个常用的区域)。--add-service=ftp 表示允许 ftp 服务通过防火墙。 [root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=ftp success #重新加载 firewalld 配置 [root@localhost ~]# firewall-cmd --reload success
配置服务文件
/etc/vsftpd下的vsftpd.conf配置如下
anonymous_enable=YES local_enable=YES write_enable=YES guest_enable=YES guest_username=ftp user_sub_token=$USER pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES # 虚拟用户配置目录 user_config_dir=/etc/vsftpd/user_conf # 允许写入权限 local_root=/home/miot_update chroot_local_user=YES allow_writeable_chroot=YES
具体情况可以参考自己需要修改
local_root为默认访问目录
给访问目录赋予权限
chown -R ftp:ftp /home/miot_update
通常情况到此可以匿名访问ftp服务了,如果还有问题
给ftp授权
setsebool -P ftpd_full_access on
setsebool
:这是用于设置SELinux布尔值的命令。-P
:这个选项表示将更改永久保存到SELinux策略配置中。没有这个选项的话,更改只会在当前会话中生效,系统重启后会丢失。ftpd_full_access
:这是一个SELinux布尔值,允许FTP守护进程(如vsftpd
或proftpd
)访问文件系统中的所有文件,包括用户主目录。on
:表示启用这个布尔值,使其生效。
这个命令启用ftpd_full_access布尔值,使得FTP服务可以获得更高的权限,允许它访问系统上的更多文件和目录。这通常用于需要FTP访问用户主目录或其他受限区域的场景。
启用ftpd_full_access布尔值可能会有安全隐患,因为它允许FTP服务访问更多的文件和目录。务必确保在启用之前,了解相关安全影响和你的系统需求。
3 配置虚拟用户
如果有更多的需求,可以配置虚拟用户,用来管理ftp的上传目录,以及权限,强烈反对通过新增Linux系统用户的方式来设置访问权限
/etc/vsftpd新增vusers.txt
ruihao
ruihao
rqadmin
rqadmin
奇数行为用户名,偶数行为密码,最后一个密码结束后一定要加回车换行,否则可能解析错误
使用dbload命令把文本转成数据库
安装dbload,如果已经支持,可以省略
sudo yum install vsftpd db4-utils # 或者在 Debian/Ubuntu 上 sudo apt-get install vsftpd db-util 使用 db_load 创建虚拟用户数据库。首先,创建一个文本文件 vsftpd_virtual_users.txt,内容如下:
转换数据库
db_load -T -t hash -f vusers.txt vusers.db
确认下转换是否成功
db_dump -p /etc/vsftpd/vusers.db
设置pam认证信息,
cd /etc/pam.d
打开vsftpd编辑
#%PAM-1.0 auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers #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
#auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
#account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
新建
/etc/vsftpd 下user_conf文件夹
新建两个用户名的文件
rqadmin文件内容
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/miot_update write_enable=YES
ruihao文件内容,只读
anon_world_readable_only=NO local_root=/home/miot_update
重启ftp服务
systemctl restart vsftpd
4 测试
使用filezilla验证
只读用户ruihao,可以查看,无法修改上传
管理员用户,可以任意操作
5 常见问题
5.1 命令: USER ruihao 响应: 530 Permission denied. 错误: 无法连接到服务器
用户配置文件有冲突,user_list文件是否包含了新用户,默认user_list为黑名单用户
5.2 530 Login incorrect. Login failed
用户配置文件包含空格,导致识别错误
5.3 bad bool value in config file for: anon_world_readable_only
同上,检查配置文件,包含空格或者其它字符导致
5.4 authentication failure; logname= uid=0 euid=0 tty=ftp ruser=rqadmin rhost=192.168.1.169
把pam下的无用配置注释后重启服务尝试
标签:ftp,enable,CentOS,etc,vsftpd,vsftp,Linux,YES,pam From: https://www.cnblogs.com/MarsPanda/p/18338416