提供ftp协议的软件
vim /etc/sysconfig/selinux #更改了文件之后,需要内核重新初始化来识别更改
systemctl set-default multi-user.target
reboot
安装ftp
server Daemon 服务的安装包
服务器
dnf install vsftpd.x86_64 lftp.x86_64
在客户端安装
dnf install lftp.x86_64
查询软件的启动脚本
rpm -ql vsftpd
ftp服务分主动模式和被动模式
主动模式,访问数据端口为21,传输端口为20
被动模式,访问数据端口为21,传输端口为随机的开启一个大于1024的端口
netstat -antlupe | grep vsftpd 查询端口
530认证失败
550 程序本身拒绝
553 文件系统权限限制
500权限过大
/var/ftp 默认发布目录
lftp 172.25.254.250 #这种叫匿名访问,在没有指定用户时,访问失败,是因为没有开启匿名用户访问的权限的。
lftp 172.25.254.250 -u westos #本地用户访问
vim /etc/vsftpd/vsftpd.conf #主配置文件
改完配置文件之后需要重启
systemctl restart vsftpd
当配置文件修改错了,则系统起不来
journalctl -xe #查看日志
当自己可以访问ftp://172.25.254.250,其他主机都不可以的时候,应该是因为火墙问题
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-all
家目录控制
anon_root=/westosdir
man 5 vsftpd.conf
匿名用户上传
anon_upload_enable=YES
put /etc/passwd 在ftp中上传文件
/var/ftp/ 权限不能设置为777.
当在其他主机上
lftp 172.25.254.250
put /etc/passwd #上传 get 下载
#上传不了时,
在172.25.254.250主机上
chmod 777 /var/ftp/pub
chgrp ftp /var/ftp/pub
改配置文件在服务器上
anon_other_write_enable=YES 删除重命令控制
anon_world_readable_only=NO 其他用户只读
max_clients=200 最大登录用户数量
anon_max_rate=102400(100K) 最大速率
匿名用户上传文件的用户身份设定
chown_upload=YES
chown_username=lee
chown_upload_mode=0644
问题:本地用户的设定
本地用户指的是服务器上的用户
本地用户是否可以登录
local_enable=NO|YES
write_enable=NO 本地用户写功能,ftp写功能的总开关,当这个功能关了之后,匿名用户的上传功能和写的功能都开了,也不能用了。
ftpusers 永久黑,权力更高 和user_list 临时黑名单都是用户的黑名单
不管做了什么设定,用户名字出现在ftpuser,一定登不上
当做过处理之后,user_list有可能是白名单
设定
userlist_deny=NO user_list变为白名单了
chroot_local_user=YES 意味着所有的用户都锁定在自己的家目录中
NO 意味着所有用户可以浏览系统所有的用户
chroot_list_file=/etc/vsftpd/chroot_list 这个文件默认是没有的,这个文件指定的用户将不能切换到根目录
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list 这时这个文件就由黑变白了。
问题3:ftp服务中虚拟用户的认证
建立名单
cd /etc/vsftpd/
ls
vim westos_pam
user1
123
user2
123
user3
234
对westos_pam进行加密
db_load -T -t hash -f westos_pam westos_pam.db
#T表示tranlate t表示类型 f表示指定要转换的文件
pam这个插件是为了让你完成某些认证的。
认证的插件名称是
#*pam*.so
#.so为了让你的服务具备某些功能,.ko
#ls -l /usr/lib64/security/pam_userdb.so
#/etc/pam.d/vsftpd 这个文件的存在可以使得系统通过认证
#/etc/pam.d/password-auth
vim /etc/pam.d/westos
account required pam_userdb.so db=/etc/vsftpd/westos_pam
#required作用:当此认证失败后,会导致整个认证行为失败
#这个内容得作用是:当我们输入账号的时候,会用pam_userdb.so插件到/etc/vsftpd/westos_pam中寻找你所说的账号有没有,如果有的话,通过,如果没有的话,拒绝。
#这个文件会自动补全db
auth required pam_userdb.so db=/etc/vsftpd/westos_pam
#这个内容得作用是:当我们输入密码的时候,会用pam_userdb.so插件到/etc/vsftpd/westos_pam中寻找你所说的密码有没有,如果有的话,通过,如果没有的话,拒绝。
#这两个条件有一个没有符合,则认证失败
使这个文件生效
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos #加载的认证
userlist_enable=YES
guest_enable=YES #虚拟用户的功能是开的
guest_username=ftp #虚拟用户不具备用户身份,因此需要指定一个用户身份给他们
systemctl restart vsftpd
有了虚拟用户之后,本地用户就访问不了了
问题4:虚拟用户家目录隐私独立
mkdir -p /ftphome/user{1..3}
touch /ftphome/user1/user1file
touch /ftphome/user2/user2file
touch /ftphome/user3/user3file
mkdir /ftohome/user{1..3}/pub
vim /etc/vsftpd/vsftpd.conf
在写这一行只,必须保证之前的local_root注释掉,否则系统会混乱
local_root=/ftphome/$USER #$USER,登录是谁,就是自动采集谁的信息
user_sub_token=$USER #指示$USER的用法和所在的shell用法是一样的。
问题5:匿名用户vsftp.conf配置独立
vim /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
在进行以下配置之前,将以上的注释
user_config_dir=/etc/vsftpd/westos
mkdir /etc/vsftpd/westos
vim /etc/vsftpd/westos/user1
anon_upload_enable=YES
systemctl restart vsftpd