/etc/vsftpd/vsftpd.conf
里边有几项跟vsftpd
虚拟用户有关的主要配置:
guest_enable=YES,允许匿名用户登录
vsftpd
guest_username=virtual,指定虚拟用户账户为virtual
,就是把虚拟用户映射成Linux本地用户,这样可以使用Linux文件权限进行读取和写入文件
user_config_dir=/etc/vsftpd/vuserconfig,设置用户权限配置目录
allow_writeable_chroot=YES,允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
pam_service_name=vsftpd.vu,指定PAM文件
接下来就演示一下如何添加vsuser1
、vsuser2
和vsuser3
三个vsftpd虚拟用户。
1.先创建一个虚拟用户用来映射。
useradd vsvirtual -d /data/ftp -s /sbin/nologin
创建一个本地用户vsvirtual
,家目录设置为/data/ftp
,shell设置为/sbin/nologin
,不能用来登录。
echo "good" >> /data/ftp/good.txt
创建一个文件为good.txt
,并向里边写入good
。
2.添加虚拟用户,配置密码。
/etc/vsftpd/vuser.temp
里边写入下边的内容:
vsuser1
Good#123
vsuser2
Good#1223
vsuser3
Good@1223
我这里直接使用下边的命令进行写入操作:
echo "vsuser1" >> vuser.temp
echo "Good#123" >> vuser.temp
echo "vsuser2" >> vuser.temp
echo "Good#1223" >> vuser.temp
echo "vsuser3" >> vuser.temp
echo "Good@1223" >> vuser.temp
/etc/vsftpd/vuser.temp
里边奇数行是用户名,偶数行是密码。
db_load -T -t hash -f /etc/vsftpd/vuser.temp /etc/vsftpd/vuser.db
把/etc/vsftpd/vuser.temp
通过hash
的方法生成/etc/vsftpd/vuser.db
文件,chmod 600 /etc/vsftpd/vuser.db
只能让root
拥有读写权限。
3.建立用于支持虚拟用户的PAM文件
vim /etc/pam.d/vsftpd.vuser
把下边的内容添加进去:
auth required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
4./etc/vsftpd/vsftpd.conf
主文件里边进行配置。
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/bak_vsftpd.conf
把/etc/vsftpd/vsftpd.conf
复制成/etc/vsftpd/vsftpd.conf
,rm -rf /etc/vsftpd/vsftpd.conf
把/etc/vsftpd/vsftpd.conf
删除,grep -v '^#' /etc/vsftpd/bak_vsftpd.conf >> /etc/vsftpd/vsftpd.conf
把注释的内容删除,然后写入到/etc/vsftpd/vsftpd.conf
。
最后的内容使用cat /etc/vsftpd/vsftpd.conf
可以显示出来,只有以下内容:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YESpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
最后把上边的内容添加修改为如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
# 允许匿名用户登录vsftpd
guest_enable=YES
# 指定虚拟用户账户为 vsvirtual
guest_username=vsvirtual
# 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
allow_writeable_chroot=YES
# 指定PAM文件,因为vsftpd.vuser里边只配置了虚拟用户,所以本地用户和匿名用户就不能使用vsftpd
pam_service_name=vsftpd.vuser
# 设置用户权限配置目录
user_config_dir=/etc/vsftpd/vuserconfig
userlist_enable=YES
tcp_wrappers=YES
5.配置用户权限文件
mkdir /etc/vsftpd/vuserconfig
创建用户权限配置目录/etc/vsftpd/vuserconfig
。
vim /etc/vsftpd/vuserconfig/vsuser1
,把下边的内容写进去:
# 登录进来后的目录
local_root=/data/ftp
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
download_enable=YES
6.重新启动并且验证。
systemctl restart vsftpd.service
重新启动。
重新开启一个主机远程登录,ftp 172.31.0.180
进行ftp
进行连接,然后输入用户名和密码,密码没有显示出来,等待时间有点久。
ls
可以看到上边Sea1
上边创建的good.txt
文件信息。
get good.txt
从服务器上下载good.txt
,!cat good.txt
看一下本地good.txt
里边的内容。
quit
退出。
此文章为9月Day 2学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。