记录一次CentOS/Linux下安装vsftp服务器的过程

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守护进程(如vsftpdproftpd)访问文件系统中的所有文件,包括用户主目录。
  • 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下的无用配置注释后重启服务尝试

 

posted on 2024-08-02 11:35  火星大能猫  阅读(1)  评论(0编辑  收藏  举报