linux-vsftp虚拟多用户

目录

1.安装vsftp

2.安装DB工具,能转化普通文件为vsftpd识别数据库加密文件

3.创建登录虚拟用户的名单

4.加密文件

6.需要修改vsftpd的配置文件

7.修改vsftp的配置文件,加载支持虚拟用户模式

8.针对不同用户开启不同权限

9.重启服务

10.测试


安装vsftp,并设置虚拟用户登录

1.安装vsftp

yum install vsftpd

2.安装DB工具,能转化普通文件为vsftpd识别数据库加密文件

yum install db4 db4-utils -y

3.创建登录虚拟用户的名单

cd /etc/vsftpd/ 
vim ftp_user.txt

切换到etc目录里,创建密码文件(必须在/etc/里)

查看创建的密码文件(奇数是用户,偶数是密码)


4.加密文件

由于这样普通文件很不安全,vsftpd也无法识别改txt的文件数据,因此还得用db_load命令

对于我们刚刚创建的ftp_user.txt文件进行加密

db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_user.db
chmod 600 ftp_user.db

删除一下源明文文件,防止安全问题

[root@localhost vsftpd]# rm ftp_user.txt 
rm: remove regular file 'ftp_user.txt'? y

5.真实用户映射

创建当虚拟用户登录ftp之后进入文件夹的路径,且和linux中的用户做一个映射关系,防止虚拟用户登录有,创建了文件夹,但是系统没有此用户会报错一个问题。

创建一个系统用户和虚拟用户做映射,且不需要家目录,禁止用户登录shell

useradd -d /var/ftpdir/ -s /sbin/nologin virtual_user

检查一下用户的家目录

ll -ld /var/ftpdir/

这个用户需要做ftp虚用户的映射,所以如果家目录只允许这个真实用户访问,那么会有权限问题,我们把他的家目录权限修改一下

[root@localhost vsftpd]# chmod -Rf 755 /var/ftpdir/
[root@localhost vsftpd]# ll -ld /var/ftpdir/
drwxr-xr-x 3 virtual_user virtual_user 78 Oct 15 17:33 /var/ftpdir/

修改virtual_user用户添加到ftpsuer文中,增大系统安全,该操作不会影响虚拟用户的操作

echo "virtual_user" >> /etc/vsftpd/ftpusers

6.需要修改vsftpd的配置文件

添加一个支持虚拟用户验证的pam文件,pam是一组安全机制的模块,认证文件路径在/etrc/pam.d/vsftp

[root@localhost vsftpd]# echo "virtual_user" >> /etc/vsftpd/ftpusers 
[root@localhost vsftpd]# vim /etc/pam.d/vsftpd 
[root@localhost vsftpd]# vim /etc/pam.d/vsftpd 
[root@localhost vsftpd]# cat /etc/vsftpd/ftp_user.db 
ftp_user.db             ftpusers                user_list               vsftpd.conf             vsftpd_conf_migrate.sh
[root@localhost vsftpd]# cat /etc/pam.d/vsftpd 


auth required pam_userdb.so db=/etc/vsftpd/ftp_user
account required pam_userdb.so db=/etc/vsftpd/ftp_user

7.修改vsftp的配置文件,加载支持虚拟用户模式

我们看下改之前的配置

配置vsftp文件

anonymous_enable=NO--- (不允许匿名用户访问)

local_root--- (设置ftp主目录)

pasv_enable=YES--- (开启被动数据传输模式)

guest_enable=YES---(开启虚拟用户模式)

guest_username--- (虚拟用户实体名称)

user_config_dir--- (虚拟用户权限文件目录位置)

allow_writeable_chroot=YES---(centos7必须添加)

anonymous_enable=NO

local_root=/var/ftpdir

pasv_enable=YES

guest_enable=YES

guest_username

user_config_dir

allow_writeable_chroot=YES

添加后

vim /etc/vsftpd/vsftpd.conf 
grep -Ev "^#|^$" /etc/vsftpd/vsftpd.conf 

8.针对不同用户开启不同权限

anon_world_readable_only=NO

write_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_upload_enable=YES

local_root=/home/CodeTiger

write_enable=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_world_readable_only=NO

download_enable=NO

local_root=/home/CodeTiger

ou : 该用户,允许他能够上传,新建,修改,查看,删除等权限

ftpuser:只读权限

需要修改vsftpd文件,定义user_config_dir参数即可

mkdir /etc/vsftpd/virtual_user_dir
cd /etc/vsftpd/virtual_user_dir
vim ou

添加

local_root=/home/ftpuser/ou  # 目录修改成ou需要设置ftp的目录
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

给ftpuser添加只读权限

[root@localhost ~]# cat /etc/vsftpd/virtual_user_dir/ftpuser 

local_root=/var/ftpdir/ftpuser  # 目录修改成ftpuser需要设置ftp的目录
write_enable=NO
anon_world_readable_only=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

记得要创建用户的家目录

mkdir -p /var/ftpdir/ou
mkdir -p /var/ftpdir/ftpuser
chown -R virtual_user:virtual_user /var/ftpdir

修改下配置文件

vim /etc/vsftpd/vsftpd.conf

添加这个

user_config_dir=/etc/vsftpd/virtual_user_dir

9.重启服务

[root@localhost virtual_user_dir]# systemctl restart vsftpd
[root@localhost virtual_user_dir]# systemctl status vsftpd.
Unit vsftpd..service could not be found.
[root@localhost virtual_user_dir]# systemctl status vsftpd.service 
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2023-10-15 19:54:31 CST; 11s ago
  Process: 36959 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 36961 (vsftpd)
    Tasks: 1
   CGroup: /system.slice/vsftpd.service
           └─36961 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Oct 15 19:54:30 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon...
Oct 15 19:54:31 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
[root@localhost virtual_user_dir]# 

10.测试

ou用户以创建文件和文件夹

ftpuser不可以创建文件和文件夹

他只有读取的权限没办法创建和删除文件和目录

相关推荐
tian2kong1 分钟前
Centos 7 修改YUM镜像源地址为阿里云镜像地址
linux·阿里云·centos
mengao12343 分钟前
centos 服务器 docker 使用代理
服务器·docker·centos
布鲁格若门5 分钟前
CentOS 7 桌面版安装 cuda 12.4
linux·运维·centos·cuda
Eternal-Student10 分钟前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
C-cat.13 分钟前
Linux|进程程序替换
linux·服务器·microsoft
怀澈12214 分钟前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
DC_BLOG17 分钟前
Linux-Apache静态资源
linux·运维·apache
学Linux的语莫18 分钟前
Ansible Playbook剧本用法
linux·服务器·云计算·ansible
码农小丘19 分钟前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器
耗同学一米八1 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题二
运维·网络·mariadb