目录
1.安装vsftp
2.安装DB工具,能转化普通文件为vsftpd识别数据库加密文件
3.创建登录虚拟用户的名单
4.加密文件
6.需要修改vsftpd的配置文件
7.修改vsftp的配置文件,加载支持虚拟用户模式
8.针对不同用户开启不同权限
9.重启服务
10.测试
安装vsftp,并设置虚拟用户登录
yum install vsftpd
yum install db4 db4-utils -y
cd /etc/vsftpd/
vim ftp_user.txt
切换到etc目录里,创建密码文件(必须在/etc/里)
查看创建的密码文件(奇数是用户,偶数是密码)
由于这样普通文件很不安全,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
添加一个支持虚拟用户验证的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
我们看下改之前的配置
配置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
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
[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]#
ou用户以创建文件和文件夹
ftpuser不可以创建文件和文件夹
他只有读取的权限没办法创建和删除文件和目录