十二、vsftpd 服务的部署
12.1 ftp介绍
- FTP是文件传输协议(File Transfer Protocal)的简写,主要完成与远程计算机的文件传输。是互联网中最老牌的文件传输协议。
- FTP采用客户/服务器模式,客户机与服务器之间利用TCP建立连接,客户可以从服务器上下载文件,也可以把本地文件上传至服务器。
- FTP服务器有匿名的和授权的两种。匿名的FTP服务器向公众开放,用户可以用“ftp”或“anonymous”为帐号,用电子邮箱地址为密码登录服务器;授权的FTP服务器必须用授权的账户名和密码才能登录服务器。通常匿名的用户权限较低,只能下载文件,不能上传文件。
- 客户机访问FTP服务器通常有两种方法:用FTP命令访问和用FTP客户端软件访问。
12.2 vsftpd安装
(1)在含有软件资源的主机中安装共享软件
(2)关闭selinux和防火墙
(3)建立共享目录存放软件资源
[root@localhost Desktop]$ mkdir /var/ftp/text /var/ftp/software #新建共享目录
[root@localhost Desktop]$ mount /dev/cdrom /var/ftp/text # 挂载到text目录下
[root@localhost Desktop]$ createrepo -v /var/ftp/software #把软件资源放到此目录中
(4)用另一台主机可以查看此主机的文件
12.3 vsftpd基本信息
- 服务名称: vsftpd.service
- 配置目录: /etc/vsftpd
- 主配置文件: /etc/vsftpd/vsftpd.conf
- 默认发布目录: /var/ftp
- 报错信息:
- 550 【程序本身拒绝】
- 553 【文件系统权限限制】解决办法 chmod 777 加文件名
- 500 【权限过大】解决办法 chmod 775 加目录名
- 530 【认证失败】
12.4 匿名用户访问控制
[root@localhost Desktop]$ lftp 192.168.0.10 #当访问ftp服务时没有加入用户认证为匿名访问
修改配置文件 /etc/vsftpd/vsftpd.conf 可以更改匿名登陆权限
每次修改配置文件需要重启服务
anonymous_enable=YES/NO #登陆控制
anon_root=/software #家目录控制
anon_upload_enable=YES|NO #上传控制
[root@localhost Desktop]$ chmod 777 /var/ftp/pub #改完配置文件增加目录权限
[root@localhost2222 Desktop]$ lftp 192.168.0.10 #在另一台主机上连接共享IP上传文件
lftp @192.168.0.10 :~> cd pub
lftp @192.168.0.10 :~> put /etc/passwd
anon_world_readable_only=NO #匿名用户可以下载不能读的文件
anon_mkdir_write_enable=YES/NO #目录建立控制
anon_other_write_enable=YES/NO #删除重命令控制
max_clients=2 # 登陆数量控制
anon_max_rate=102400 #上传速率控制
- 例子1 不允许匿名用户登陆
- 例子2 允许上传文件
12.5 本地用户访问控制
[root@localhost Desktop]$ lftp 192.168.0.10 -u weoopp ##本地用户访问
修改配置文件 /etc/vsftpd/vsftpd.conf 可以更改匿名登陆权限
每次修改配置文件后需要重启服务
local_enable=NO/YES #是否允许本地用户登陆
local_root=/software #家目录控制 是否允许进入分享主机的家目录
write_enable=NO/YES #写权限控制
local_umask=077 #上传文件权限控制
/etc/vsftpd/ftpusers #用户登陆控制 永久黑名单
/etc/vsftpd/user_list #用户登陆控制 默认黑名单
userlist_deny=NO #设定/etc/vsftpd/user_list位白名单 #不在名单中的用户不能登陆ftp 用户登陆白名单
[root@localhost Desktop]$ chmod u-w /home/* #锁定用户到自己的家目录中
chroot_local_user=YES
chroot_local_user=YES #锁定用户到自己的家目录中的白名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=NO 锁定用户到自己的家目录中的黑名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
- 例子1 永久黑名单加上名字
[root@localhost Desktop]$ vim /etc/vsftpd/ftpusers #进入永久黑名单
12.6 虚拟用户访问
(1)建立虚拟用户
- 主要步骤
[root@rhel8 Desktop]$ vim /etc/vsftpd/ftp_auth_file #建立认证文件模板
text1 #虚拟用户账号及密码
123
text2
123
[root@rhel8 Desktop]$ db_load -T -t hash -f ftp_auth_file ftp_auth_file.db #加密认证文件 -T转换 -t 类型 -f 指定转换文件
[root@rhel8 Desktop]$ vim /etc/pam.d/text #编写认证策略文件
account required pam_userdb.so db=/etc/vsftpd/ ftp_auth_file
auth required pam_userdb.so db=/etc/vsftpd/ ftp_auth_file
[root@rhel8 Desktop]$ vim /etc/vsftpd/vsftpd.conf #修改配置文件
pam_service_name=text #指定认证策略文件
guest_enable=YES #指定虚拟用户功能开启
guest_username=ftp #指定虚拟用户在ftp服务器上的用户身份
- 认证文件建立以及加密
- vsftpd配置文件修改
- 认证策略文件编写
(2) 虚拟用户家目录的独立设定 - 主要步骤
[root@rhel8 Desktop]$ mkdir -p /ftpuserdir/text{1..2} #新建两个以用户名为名字的目录
[root@rhel8 Desktop]$ touch /ftpuserdir/text1/file1
[root@rhel8 Desktop]$ touch /ftpuser/text2/file2
[root@rhel8 Desktop]$ vim /etc/vsftpd/vsftpd.conf #修改配置文件
local_root=/ftpuserdir/$USER #设定独立家目录
user_sub_token=$USER
[root@rhel8 Desktop]$ systemctl restart vsftpd #重启服务
-
建立目录
-
配置文件独立设定家目录
(3)用户配置独立 -
主要步骤
[root@rhel8 Desktop]$ mkdir /etc/vsftpd/user_config #建立用户配置文件
[root@rhel8 Desktop]$ vim /etc/vsftpd/user_config/text1
anon_upload_enable=YES #打开text1上传功能
[root@rhel8 Desktop]$ vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=NO #把整体的上传功能关闭
user_config_dir=/etc/vsftpd/user_config #在此目录中与用户名称相同的文件为用户
[root@rhel8 Desktop]$ systemctl restart vsftpd #重启服务
- vsftpd配置文件
- 用户独立配置文件
- 结果 text1虚拟用户可以进行上传text2用户不可以