目录
2.安装DB工具,能转化普通文件为vsftpd识别数据库加密文件
安装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不可以创建文件和文件夹
他只有读取的权限没办法创建和删除文件和目录