ftp服务
部署ftp服务器
在服务端(虚拟机)
vim /etc/sysconfig/selinux ### 编辑配置文件
/etc/sysconfig/selinux是启动或终止SElinux的主要配置文件,也可以用来设定哪些政策需要在系统上被强制执行及如何强制执行
[[email protected] ~]# reboot
[[email protected] ~]# getenforce ###查看SElinux是否关闭
Disabled
yum install vsftpd.x86_64 -y ####安装vsftpd
systemctl start vsftpd ####打开vsftpd
systemctl enable vsftpd ####允许vsftpd自启
firewall-cmd --permanent --add-service=ftp ###将ftp设为火墙白名单
firewall-cmd --reload 扫描启动火墙
firewall-cmd --list-all 列出火墙启动列表
在客户端
当客户端在 /var/ftp/建立目录xiaohe
服务端可显示
创立之前
创立之后
Ftb服务的基本信息
软件安装包 vsftpd
默认发布目录 /var/ftb
协议接口 21/tcp
服务配置文件 /etc/vsftpd/vsftpd.conf
匿名用户
anonymous_enable=YES|NO 匿名用户是否可以登陆
<匿名用户上传本地文件>
匿名用户上传:必须自己在/var/ftp目录下建立一个目录,如pub。再给这个目录授予某个身份的满权限,这里将ftp匿名用户的登陆身份加入到这个/var/ftp/pub目录的组里。
write_enable=YES
anon_upload_enable=YES
如果设为YES,则允许匿名登入者有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
Chgrp ftp /var/ftp/pub
Chmod 775 /var/ftp/pub
客户端建立连接并上传本地文件
服务端的/var/ftp/pub目录查看是否成功上传
anon_root=/目录名 <匿名用户家目录修改>
anon_root=/westos #匿名用户修改家目录为westos
anon_umask=xxx <匿名用户上传文件默认权限修改>
anon_umask=022 #修改匿名用户上传权限为022
anon_mkdir_write_enable=YES <匿名用户建立目录>
如果设为YES,则允许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO。
匿名用户下载
Anon_world_readable_only=YES|NO 设定为no表示可以下载
匿名用户删除
Anon_other_write_enable=YES|NO
本地用户
local_enable=YES|NO 本地用户是否可以登陆
write_enable=YES|NO ftb是否对登陆用户可写
本地用户家目录修改
local_root=/westos
本地用户上传文件权限
local_umask=xxx
限制本地用户浏览/目录
所有用户被锁在自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftbd/chroot_list
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
限制本地用户登陆
vim /etc/vsftpd/ftpusers 用户黑名单
vim /etc/vsftpd/user_list 用户临时黑名单
用户白名单设定
userlist_deny=NO
/etc/vsftbd/user_list 参数设定,此文件变为用户白名单,只有在名单中出现的用户可以登陆ftp
报错id的解析
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开放
553 本地文件系统权限过小
Ftpusers 黑名单的优先级最高
Ftb虚拟用户的设定(创建虚拟用户身份)
设置前注意
anonymous_enable=NO
设定不允许匿名访问
local_enable=YES
设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为 NO 那么所有虚拟用户将无法访问
write_enable=YES
设定可以进行写操作
local_umask=022
设定上传后文件的权限掩码
anon_upload_enable=NO
禁止匿名用户上传
anon_mkdir_write_enable=NO
禁止匿名用户建立目录
vim /etc/vsftpd/westosfile 文件名可随意设置
设置三个虚拟用户ftbuser1,2,3 密码为123
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
生成了一个 westosfile.db 文件 (hash 码型的数据库文件)
查看已生成
[[email protected] vsftpd]# vim /etc/pam.d/westos
1 account 口令 帐号是否过期
required 必须通过,如果没有通过 ,测底否定 ,而且还要看后续模块,如果通过 ,且还要看后续模块
pam_userdb.so 后续模块
db=/etc/vsftpd/westosfile
2 auth 验证是否有该帐号
required 必须通过,如果没有通过 ,测底否定 ,而且还要看后续模块,如果通过 ,且还要看后续模块
pam_userdb.so 后续模块
db=/etc/vsftpd/westosfile
上传文件的权限配置
设置上传之后文件的权限,有两种情况:
- 如果使用 vsftp 的是本地用户,则要修改配置文件中的 local_umask 的值。
- 如果使用 vsftp 的是虚拟用户,则要修改配置文件中的 anon_umask 的值。
Vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos 设置 PAM 使用的名称为westos
guest_enable=YES 启用虚拟用户。默认值为 NO
guest_username=ftpuser 这里用来映射虚拟用户
[[email protected] vsftpd]# chmod u-w /home/ftpuser
[[email protected] pam.d]# lftp 172.25.254.236 -u ftpuser1 用虚拟用户ftpuser1 链接
如何让虚拟用户登录时在自己的目录下
[[email protected] ~]# mkdir /vftpdir 建立用户登录路径
[[email protected] ~]# touch /vftpdir/vftpfile 建立用户登录文件
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf 在配置文件里设置用户登录路径
129 local_root=/vftpdir 用户登录路径
[[email protected] ~]# systemctl restart vsftpd.service 重启服务
[[email protected] ~]# lftp 172.25.254.236 -u ftpuser1
[[email protected] vftpdir]# mkdir ftpuser{1..3} 建立三个用户目录
在用户目录下建立用户文件
[[email protected] vftpdir]# vim /etc/vsftpd/vsftpd.conf
129 local_root=/vftpdir/$USER $ 表示根据 user 自动登陆到相应家目录中
130 user_sub_token=$USER 使 ftp 服务识别 $USER5. 配置虚拟用户具备独立的家目录
[[email protected] vftpdir]# systemctl restart vsftpd.service
重启之后可连接进行查看