安装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不可以创建文件和文件夹
他只有读取的权限没办法创建和删除文件和目录