AI 摘要

本文是关于在CentOS7上搭建vsftpd并设置权限的学习记录。文章介绍了安装vsftpd的步骤,以及如何创建虚拟用户和设置其权限。还详细介绍了创建账户和目录、修改PAM文件、修改权限以及修改vsftpd主配置文件的过程。最后,还说明了如何测试和验证所设定的目标。如果你想学习在CentOS7上搭建vsftpd和设置权限,这篇文章可以提供一些有用的参考信息。

学习参考链接:基于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
  • alipay_img
  • wechat_img
风带来故事的种子,时间使之发芽
最后更新于 2023-11-24