学习参考链接:基于CentOS7系统配置vsftpd服务(1)—虚拟用户模式 - 知乎 (zhihu.com)
学习目标
- 1.安装vsftpd
- 2.创建用户 caroot 拥有管理 /home/ftp/root 的最高权限,上传下载删除文件(也要能管理cadl的文件)
- 3.创建用户 cadl 仅允许下载 /home/ftp/root/cadl 目录下的文件
- 4.后续如何新增ftp账户
操作过程
vsftpd服务软件安装
yum install vsftpd
1.vsftpd服务配置
首先,创建储存ftp虚拟用户的文件vu.txt,其中奇数行是用户名,偶数行是登录密码。其次,利用db_load命令将vu.txt转为vu.db数据库文件。最后,为了避免其它用户访问该数据库文件的内容,修改降低数据库文件的权限,把原始的明文文件删除。
①创建vu.txt明文文件
sudo nano /etc/vsftpd/vu.txt(也可以使用vim、cat等编辑工具)
caroot
123456
cadl
123456
然后按下Ctrl+O保存 ,再按下Ctrl+X退出编辑
②把vu.txt文件转换成vu.db数据库文件
cd /etc/vsftpd/
db_load -T -t hash -f vu.txt vu.db
③修改降低vu.db数据库文件的权限并删除原始明文文件
chmod 600 vu.db
rm -f vu.txt(可不删)
2.创建账户
创建vsftpd服务程序用于存储FTP文件的目录/home/ftp/以及用于虚拟用户映射的系统本地用户ftpadmin。此外,为了安全起见,将ftpadmin系统本地用户设置为不允许登录该服务器。
创建虚拟用户upadmin目录/home/ftp/并更换其所属组和所属用户。
①创建系统本地用户ftpadmin及所属目录并禁用该用户登录服务器
useradd -d /home/ftp -s /sbin/nologin ftpadmin
②创建虚拟用户upadmin的目录
mkdir /home/ftp/root
③修改虚拟用户upadmin的所属组和所属用户
chown -R ftpadmin:ftpadmin /home/ftp/root
④修改/var/ftpdate/的权限
chmod -Rf 755 /home/ftp/root
3.创建用于支持虚拟用户的PAM文件
Tips:不用写数据库文件vu.db的后缀
sudo nano /etc/pam.d/vs.vu
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu
4.修改权限
创建目录/etc/vsftpd/vu_perm用于存放为不同虚拟用户设置不同的权限的文件。例如,caroot和cadl
Tips:虚拟用户权限的文件名与虚拟用户名称保持一致。
①创建目录/etc/vsftpd/vu_perm
mkdir /etc/vsftpd/vu_perm
②创建虚拟用户caroot的权限文件 , 使其具备上传、下载、创建目录、删除和移动文件的权限
sudo nano /etc/vsftpd/vu_perm/caroot
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftp/root/
③创建虚拟用户cadl的权限文件 , 使其仅具备下载文件的权限
sudo nano /etc/vsftpd/vu_perm/cadl
anon_world_readable_only=NO
local_root=/home/ftp/root/cadl
注意:此处新建的cadl文件夹默认属于www用户的,因此要使权限能正常设置,要将cadl文件夹所属者改为ftpadmin(原教程中未提及此处,导致caroot也不能管理cadl的文件)
chown -R ftpadmin:ftpadmin /home/ftp/root(改为虚拟用户的那个文件夹位置)
④为了安全起见,递归修改/etc/vsftpd/vu_perm的权限
chmod -R 600 /etc/vsftpd/vu_perm/
5.修改vsftpd主配置文件
①备份sftpd服务程序的主配置文件
cp /etc/vsftpd/vsftpd.conf{,backup}
②把默认未注释的配置文件重定写入vsftpd.conf配置文件中
grep -v "#" /etc/vsftpd/vsftpd.confbackup >/etc/vsftpd/vsftpd.conf
③修改配置文件
在配置文件中添加以下内容
anonymous_enable=NO
guest_enable=YES
guest_username=ftpadmin
allow_writeable_chroot=YES
xferlog_file=/var/log/xferlog
pam_service_name=vs.vu
user_config_dir=/etc/vsftpd/vu_perm
6.安全配置
放行ftp服务,允许客户端连接服务器ftp服务(TCP 21)并使配置生效
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
7.重启vsftpd服务并设置跟随系统自启动
systemctl restart vsftpd
systemctl enable vsftpd
8.测试验证实践目标
9.后续增加账户
增加账户需要以下流程:
- 1.修改vu.txt(记录了账号密码的文本文件)
- 2.删除原本的vu.db,并将修改后的vu.txt转换成vu.db
- 3.新建该用户的ftp文件夹,并修改权限
- 4.设置新增账户的权限
- 5.重启vsftpd服务
- 6.验证账户权限是否符合预期
①修改vu.txt
cd /etc/vsftpd/
sudo nano /etc/vsftpd/vu.txt
②删除并转换
rm -f vu.db(必须在cd /etc/vsftpd/之后)
db_load -T -t hash -f vu.txt vu.db
③新建文件夹并修改权限
mkdir /xxx/xxx/xxx
chown -R ftpadmin:ftpadmin /xxx/xxx/xxx
④设置账户权限
sudo nano /etc/vsftpd/vu_perm/xxx用户名
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/xxx/xxx/xxx
⑤重启服务并验证
systemctl restart vsftpd
Comments NOTHING