linux篇——CentOS7安装vsftpd3.0.2、用户权限配置

vsftpd(very secure ftp daemon)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,还具有很高的安全性、传输速度,以及支持虚拟用户验证。

vsftpd 允许用户以三种认证模式登录FTP服务器。

  • 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录。
  • 本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。
  • 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

1、在线或离线安装
阿里云开源镜像站资源

# yum安装
yum install -y vsftpd
# 离线安装
rpm -ivh vsftpd-3.0.2-27.el7.x86_64.rpm
rpm -ivh ftp-0.17-67.el7.x86_64.rpm

2、创建一个不能登录系统的用户ftpuser用于映射虚拟用户,ftp根目录

# 请按照顺序配置,以免产生奇奇怪怪的错误
useradd -d /backup -s /sbin/nologin ftpuser
chmod 777 /backup/ # 文件权限根据实际情况去授权,先创建ftp根目录,再创建用户目录

修改配置文件 /etc/vsftpd/vsftpd.conf, 先备份一份以防改错,结尾有已配置好的内容

cd /etc/vsftpd
cp -a vsftpd.conf vsftpd.conf.bak
vim vsftpd.conf
anonymous_enable=NO     #关闭匿名开放模式
local_enable=YES        #允许本地用户模式 虚拟用户模式也要开启
guest_enable=YES        #开启虚拟用户模式
guest_username=ftpuser  #指定用于映射虚拟用户的系统账户
#启用ASCII模式的传输ascii_upload_enable=YES
ascii_download_enable=YES
#将所有用户限定在其主目录内chroot_local_user=YES
chroot_list_enable=NO#如果有用户不需要限定在主目录以下设置chroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list     #这个文件需要自己创建

chroot_local_user=YES #所有用户限定在其主目录内
chroot_list_enable=YES #启用例外
/etc/vsftpd/chroot_list #这里的用户名都不受限制,可以切换出主目录,用户名一行填写一个

chroot_local_user=NO #所有用户都不受限制,可以切换出主目录
chroot_list_enable=YES #启用例外
/etc/vsftpd/chroot_list #这里的用户名都受到限制,限定在其主目录内,用户名一行填写一个

3、创建虚拟用户

vim virtual_user
test1
test111
test2
test222

创建了2个账户,test1、test2。第一行用户名,第二行密码,依此类推:

使用 db_load 命令生成 vsftpd 的认证文件,将用户信息文件转换为数据库并使用hash加密:

db_load -T -t hash -f virtual_user virtual_user.db
chmod 600 virtual_user.db
rm -f virtual_user

4、建立虚拟用户所需的PAM配置文件,对虚拟用户的安全和账户权限进行验证

vim /etc/pam.d/vsftpd.virtual
auth       required     pam_userdb.so db=/etc/vsftpd/virtual_user    #不需要填后缀
account    required     pam_userdb.so db=/etc/vsftpd/virtual_user

修改 /etc/vsftpd/vsftpd.conf,指定刚创建的PAM文件

pam_service_name=vsftpd.virtual

5、给不同虚拟用户设置不同权限,及主目录

前面已近创建了test1、test2两个虚拟用户,分别创建主目录

mkdir /backup/test1
mkdir /backup/test2
chown ftpuser:ftpuser /backup/test1
chown ftpuser:ftpuser /backup/test2

创建虚拟用户配置文件,及存放目录,配置文件的名称要跟之前 virtual_user.db 里用户名一致

mkdir /etc/vsftpd/virtual_user_conf
vim /etc/vsftpd/virtual_user_conf/test1
# 记得删除备注信息
local_root=/backup/test1   #设置用户主目录
allow_writeable_chroot=YES       #2.3.5之后,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了,可以去掉写权限或加上这项
anon_world_readable_only=NO      #只要文件所有者对文件有读权限即可下载
write_enable=YES                 #写入开关,是下面几个权限的前提
anon_upload_enable=YES           #上传
anon_mkdir_write_enable=YES      #创建文件夹
anon_other_write_enable=YES      #删除、覆盖、重命名

用户test2

vim /etc/vsftpd/virtual_user_conf/test2
local_root=/backup/test2
allow_writeable_chroot=YES
anon_upload_enable=YES

修改 /etc/vsftpd/vsftpd.conf,加上虚拟用户配置目录

user_config_dir=/etc/vsftpd/virtual_user_conf

6、启动vsftp,添加防火墙端口

systemctl start vsftpd
systemctl enable vsftpd
firewall-cmd --add-service=ftp --permanent # 开放相关端口 根据ftp配置文件加载
firewall-cmd --reload

7、链接测试 test1 test2 两个权限是不一样的
8、问题:连接后可能存在只能查看无法操作的问题

sestatus -b | grep ftp	# 查看ftp状态
# 把这个两个改成on后重启即可 ftpd_full_access、tftp_home_dir 
setsebool -P ftpd_full_access on
setsebool -P tftp_home_dir on

下面是已配置好的配置文件

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO
listen_ipv6=YES
guest_enable=YES
guest_username=ftpuser
ascii_upload_enable=YES
ascii_download_enable=YES
pam_service_name=vsftpd.virtual
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/virtual_user_conf
pasv_min_port=6000#设置被动模式的端口范围,最小端口号~最大端口号
pasv_max_port=7000#我们设置的范围可以不用那么大,但数值最好大些(至少也大于1024)
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值