实体用户
主动模式
- 实现目的
希望使用本地时间而不是GMT时间;
用户登录时显示一些欢迎信息; 系统账户不可以登录主机 (亦即UID小于500以下账户);
一般实体用户可以进行上传、下载、建立目录及修改文件等操作;
用户建立文件、目录的umask希望设置为002
其他主机设置值保留默认值即可。 - 修改配置文件,如下
将匿名登录取消
anonymous_enable=NO
# 允许实体用户登录
local_enable=YES
write_enable=YES
local_umask=002
userlist_enable=YES
userlist_deny=YES
# /etc/vsftpd/user_list这个文本一定要存在 默认有此文件
userlist_file=/etc/vsftpd/user_list
# 与服务器环境相关配置
use_localtime=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
# /etc/vsftpd/welcome.txt 该文件必须存在 需手动创建
banner_file=/etc/vsftpd/welcome.txt
2. 防火墙放行ftp端口
firewall-cmd --permanent --zone=public --add-port=20-21/tcp
3. 防火墙重新加载
firewall-cmd --reload
4. 重启vsftpd服务
systemctl restart vsftpd.service
5. 测试结果
扩展一:实体账户与selinux议题
默认下,Vsftpd是不允许实体账号登录取得用户主目录数据的,这是因为selinux的问题,若在ftp localhost中,在bye离开ftp之前执行过dir的话,那你会发现没有任何显示资料,就是selinux原因;如下处理即可;
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> off //把off设置成on即可;
ftpd_anon_write --> on
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
设置命令
setsebool -P ftp_home_dir=1
被动模式
- 修改配置文件
#FTP configiuration
# 将匿名登录取消
anonymous_enable=NO
# 允许实体用户登录
local_enable=YES
write_enable=YES
local_umask=002
userlist_enable=YES
userlist_deny=YES
# /etc/vsftpd/user_list这个文本一定要存在 默认有此文件
userlist_file=/etc/vsftpd/user_list
# 与服务器环境相关配置
use_localtime=YES
dirmessage_enable=YES
xferlog_enable=YES
port_enable=YES
pasv_min_port=65400
pasv_max_port=65406
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
# /etc/vsftpd/welcome.txt 该文件必须存在 需手动创建
banner_file=/etc/vsftpd/welcome.txt - 防火墙放行端口
firewall-cmd --permanent --zone=public --add-port=65400-65406/tcp - 防火墙重新加载
firewall-cmd --reload - 重启vsftpd服务
systemctl restart vsftpd.service - 测试结果
虚拟用户
- 修改主配置文件
anonymous_enable=NO
write_enable=YES
chroot_local_user=YES
use_localtime=YES
local_enable=YES
allow_writeable_chroot=YES
xferlog_enable=YES
local_umask=022
pam_service_name=vsftpd
use_localtime=YES
listen_port=21
chroot_local_user=YES
idle_session_timeout=120
data_connection_timeout=120
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES
pasv_min_port=65400
pasv_max_port=65406
accept_timeout=5
connect_timeout=1
2. 创建宿主用户
useradd -g root -d /home/vsftpd -s /sbin/nologin ftpuser
宿主用户设置密码
passwd ftpuser
3. 修改ftpuser家目录的权限
chown -R ftpuser.root /home/vsftpd
4. 建立虚拟用户的文件
vim /etc/vsftpd/vuser 一行用户名 一行密码
student1
1234567
student2
1234567
:wq
5. 生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
6. 修改数据文件的权限
chmod 600 /etc/vsftpd/vuser.db
7. 创建用户配置文件及目录
mkdir /etc/vsftpd/vuser.conf
touch /etc/vsftpd/vuser.conf/student1
touch /etc/vsftpd/vuser.conf/student2
8. 添加用户配置文件
vim touch /etc/vsftpd/vuser.conf/student1
local_root=/home/vsftpd/student1 //写用户实际存储位置 student2与之类似
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
:wq
9. 创建用户主目录
mkdir /home/vsftpd/student1
mkdir /home/vsftpd/student2
10. 修改pam.d文件
vim /etc/pam.d/vsftpd 添加以下两行,其他注释掉,修改如下:
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
#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
11. 重启服务
systemctl restart vsftpd.service
12. 测试结果。