ftp安装
FTP介绍
VSFTP,全称为Very Secure FTP,是一种高度安全的FTP服务器软件。它是一款针对安全和性能进行优化的FTP服务器,拥有速度快、稳定、易用和安全性高的特点。VSFTP是在GPL许可证下发布的自由软件,可以在大多数类UNIX系统中使用。VSFTP支持IPv6、SSL/TLS加密传输,同时还提供了多种认证方式,包括本地用户、PAM、LDAP等等。同时,VSFTP也支持虚拟用户和虚拟目录,便于管理员进行用户管理。总之,VSFTP是一款功能强大且安全性高的FTP服务器软件,深受系统管理员和开发者的欢迎。
安装
yum -y install vsftpd |
安装Vsftpd及相关依赖
yum -y install vsftpd* pam* db4* |
vsftpd: ftp软件
pam: 认证模块
db4: 支持文件数据库
启动
systemctl start vsftpd |
配置文件
*配置文件* | *作用* |
---|---|
/etc/vsftpd/vsftpd.conf | vsftpd的核心配置文件 |
/etc/vsftpd/ftpusers | 用于指定哪些用户不能访问FTP服务器 |
/etc/vsftpd/user_list | 指定允许使用vsftpd的用户列表文件 |
/etc/vsftpd/vsftpd_conf_migrate_sh | 是vsftpd操作的一些变量和设置脚本 |
/etc/ftp/ | 默认情况下匿名用户的根目录 |
vsftpd 配置详解
属性 | 属性值 | 含义 |
---|---|---|
anonymous_enable | YES/NO | 是否允许匿名用户(anonymous)登录FTP,如果该设置被注释,则默认允许。 |
local_enable | YES/NO | 是否允许本地系统用户登录 |
write_enable | YES/NO | 是否开启任何形式的FTP写入命令,上传文件 |
local_umask | xxx | 本地用户的umask设置,如果注释该设置则默认为077,但一般都设置成022 |
anon_upload_enable | YES/NO | 是否允许匿名用户上传文件,如果要设置为允许,则需要先开启write_enable,否则无效,此外对应目录还要具有写权限 |
anon_mkdir_write_enable | YES/NO | 是否允许匿名用户创建新目录 |
dirmessage_enable | YES/NO | 当进入某个目录时,发送信息提示给远程用户 |
xferlog_enable | YES/NO | 是否开启上传/下载的日志记录 |
connect_from_port_20 | YES/NO | 是否使用20端口来连接FTP |
chown_uploads | YES/NO | 匿名上传的文件时是否由某一指定用户chown_username所有 |
chown_username | 有效用户名 | 匿名上传的文件由该设定用户所有 |
xferlog_file | 有效路径 | 设置日志文件的保存位置,默认为/var/log/xferlog |
常用的匿名FTP配置项
anonymous_enable=YES # 是否允许匿名用户访问 |
身份验证访问
创建虚拟用户
创建用户:
useradd -s /sbin/nologin vu |
创建数据文件
db_load -T -t hash -f user user.db |
建立支持虚拟用户的PAM认证文件
vi /etc/pam.d/vsftpd.vu |
编写配置文件,对应刚才生成user.db文件
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/user |
修改配置文件
vi vsftpd.conf |
常用的全局配置项
listen=YES #是否以独立运行的方式监听服务 |
为用户建立独立的配置目录及文件
mkdir /etc/vsftpd/user_dir |
进入刚创建的文件夹:
cd /etc/vsftpd/user_dir |
创建虚拟用户数据存放位置
cd .. |
- 本地用户和虚拟用户不能同时登录、因为认证方式只有一种
- 本地是 pam_service_name =vsftpd
- 虚拟是 pam_service_name =vsftpd.vu
使用示例:
创建一个系统用户供予虚拟用户映射
useradd vsftpd -d /home/vsftpd -s /bin/nologin |
useradd
: 这是用于创建新用户的命令。vsftpd
: 这是你要创建的用户名。在这个例子中,用户名是vsftpd
。-d /home/vsftpd
: 这个选项指定用户的主目录。在这个例子中,用户的主目录被设置为/home/vsftpd
。-s /bin/nologin
: 这个选项指定用户的登录Shell。在这个例子中,用户的登录Shell被设置为/bin/nologin
。/bin/nologin
是一个特殊的Shell,它会阻止用户通过命令行登录系统。这通常用于创建系统用户或服务用户,这些用户不需要交互式登录权限。
vsftpd.conf配置
进入/etc/vsftpd 目录下,执行 vi vsftpd.conf
anonymous_enable=NO #关闭匿名登录 |
生成虚拟用户数据文件
vi /etc/vsftpd/vsftpd_login.txt,写入用户名密码
执行:
db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db |
配置PAM验证文件
执行:vi /etc/pam.d/vsftpd 注释掉原文件的内容,输入以下内容:
32位系统:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
64位系统:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
创建用户配置目录
这个目录和vsftpd.conf中的参user_config_dir配置的路径一致,当前配置的
目录为user_config_dir=/etc/vsftpd/vsftpd_user_conf,所以在/etc/vsftpd路
径下创建vsftpd_user_conf目录。执行:mkdir vsftpd_user_conf
进入vsftpd_user_conf目录,创建与vsftpd_login.txt目录配置的用户名称一样的文件,当前配置的用户为joachiming,所以执行: vi zhuang
加入配置:
anon_world_readable_only=NO |
创建数据目录并赋权
配置的joachiming用户数据目录为:/home/vsftpd/joachiming,zhuang用户数据目录为:/home/vsftpd/zhuang,,执行创建目录命令:mkdir -p /home/vsftpd/ding 以及 mkdir -p /home/vsftpd/zhuang 分别创建用户目录
这时候要修改目录的执行权限以及目录所有权,把目录的所有权赋予给虚拟vsftpd用户,执行:chown -R vsftpd:vsftpd /home/vsftpd/ding 以及 chown -R vsftpd:vsftpd /home/vsftpd/zhuang
启动
systemctl start vsftpd.service #启动
systemctl restart vsftpd.service #重启
systemctl status vsftpd.service #查看运行状态
问题
虚拟用户登录的时候提示该用户密码无法登录
;
问题排查:
1,查看相关日志
/var/log/vsftpd.log
/var/log/auth.log
/var/log/secure
/var/log/audit/audit.log
2,在audit.log中发现SELinux阻止了FTP服务的一些关键操作,具体是因为ftpd_t
域没有足够的权限来执行某些操作。
3,解决
设置:
setsebool -P ftpd_full_access on |
执行这个命令后,SELinux应该会允许FTP服务执行更多的操作,从而解决你遇到的问题。如果问题仍然存在,请检查其他可能的SELinux布尔值或文件上下文设置。