1.ftp的定义
ftp:// ##文件传输协议
2.ftp协议提供的软件
在rhel中
vsftpd
3.部署ftp服务
yum install vsftpd(服务) lftp(软件) -y
systemctl start vsftpd
systemctl enable vsftpd
firewall-config ##图形设置火墙不阻止ftp
完成后reload。
或者使用命令
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-all ##查看火墙允许那些软件通过
[root@localhost ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
drwxr-xr-x 2 0 0 6 Jun 23 2016 pub
ftp服务的基本信息
软件安装包: vsftpd
默认发布目录: /var/ftp
协议接口: 21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id解析:
报错 | 解析 |
---|---|
500 | ##文件系统权限过大 |
530 | ##用户认证失败 |
550 | ##服务本身功能未开放 |
553 | ##本地文件系统权限过小 |
4.配置ftp服务
实验前须关闭内核级的加强型防火墙
vim /etc/sysconfig/selinux
改为disabled
reboot
使用getenforce查询
1.匿名用户设定
vim /etc/vsftpd/vsftpd.conf ##vsftp设定文件
anonymous_enable=YES|NO ##匿名用户是否可以登陆
local_enable=YES|NO ##本地用户是否可以登陆
write_enable=YES|NO ##ftp是否对登陆用户可写
匿名用户上传
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
测试
修改之前:
修改之后:
匿名用户家目录修改
vim /etc/vsftpd/vsftpd.conf
anon_root=/westos ##修改匿名用户家目录为/westos
创建目录/westos,并建立文件
匿名用户登陆,会进入设定的家目录,看到之间建立的文件
匿名用户上传文件默认权限修改
anon_umask=022
测试:
匿名用户建立目录
anon_mkdir_write_enable=YES|NO ##YES表示可以建立
匿名用户下载
anon_world_readable_only=YES|NO ##设定参数值为NO表示匿名用户可以下载
匿名用户删除
anon_other_write_enable=YES|NO
匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student ##设定匿名以student用户身份
chown_upload_mode=0644 ##设定上传文件的权限为644
修改后匿名用户上传文件权限为644,uid为student的1000
最大上传速率
anon_max_rate=102400
最大连接数
max_clients=1 ##设定最大连接个数为1个
第一个用户student连接成功
第二个用户root无法连接
2.本地用户设定
local_enable=YES|NO ##用户本地登陆限制,YES允许,NO拒绝
write_enable=YES|NO ##本地用户写权限限制,YES允许,NO拒绝
本地用户家目录修改
local_root=/directory ##写那进入后就在那
本地用户上传文件权限
local_umask=xxx
限制本地用户浏览目录
所有用户被锁定到自己家目录中
chroot_local_user=YES
chmod u-w /home/*
锁定前
锁定后
用户黑名单建立
chroot_local_user=NO ##黑名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
将student加入黑名单
student用户只能在自己家目录
westos用户
用户白名单建立
chroot_local_user=YES ##白名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
此时student在白名单中,可以进入根目录
限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变为用户白名单,只在名单中出现的用户可以登陆ftp
ftp虚拟用户的设定
创建虚拟帐号身份
vim /etc/vsftpd/userfile ##保存密码的文件,文件名称任意
westos1
123
westos2
123
westos3
123
db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db ##对保存密码的文件进行hash加密:/etc/vsftpd/userfile文件
vim /etc/pam.d/ftpauth ##对用户身份进行检查的文件,文件名称任意
account required pam_userdb.so db=/etc/vsftpd/userfile
账户 必须满足 ##使用此插件 查看此文件(已加密文件,但不用加后缀.db)
auth required pam_userdb.so db=/etc/vsftpd/userfile
认证
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftpauth ##使用哪个文件来检查/etc/pam.d/ftpauth
userlist_enable=YES ##开启列表
tcp_wrappers=YES
guest_enable=YES ##开启虚拟用户登入
虚拟帐号身份指定
guest_username=ftp ##指定用户目录
chmod u-w /home/ftp
虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftpuserdir/$USER ##设定家目录为用户名
user_sub_token=$USER ##使$USER在此文件中可用
systemctl restart vsftpd ##修改后重启服务
mkdir /var/ftpuserdir/westos{1..3} -p ##创建家目录
[root@localhost ~]# cd /var/ftpuserdir/
[root@localhost ftpuserdir]# ls
westos1 westos2 westos3
[root@localhost ftpuserdir]# mkdir westos1/westos1file
[root@localhost ftpuserdir]# mkdir westos2/westos2file
[root@localhost ftpuserdir]# mkdir westos3/westos3file
测试:
[root@localhost ftpuserdir]# lftp 172.25.254.133 -u westos1Password:
lftp [email protected]:~> ls
drwxrwxr-x 2 0 50 6 Feb 13 16:40 pub
drwxr-xr-x 2 0 0 6 Feb 13 16:30 westos1file
lftp [email protected]:/> quit
[root@localhost ftpuserdir]# lftp 172.25.254.133 -u westos2
Password:
lftp [email protected]:~> ls
drwxrwxr-x 2 0 50 6 Feb 13 16:40 pub
drwxr-xr-x 2 0 0 6 Feb 13 16:30 westos2file
lftp [email protected]:/> quit
[root@localhost ftpuserdir]# lftp 172.25.254.133 -u westos3
Password:
lftp [email protected]:~> ls
drwxrwxr-x 2 0 50 6 Feb 13 16:40 pub
drwxr-xr-x 2 0 0 6 Feb 13 16:30 westos3file
虚拟帐号配置独立
chmod 775 /var/ftpuserdir/westos*/pub
chgrp ftp /var/ftpuserdir/westos*/pub
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/user_config ##用来指定虚拟用户权限配置文件目录
关闭此选项
systemctl restart vsftpd
mkdir -p /etc/vsftpd/user_config ##递归建立目录
vim /etc/vsftpd/user_config/westos1 ##必须与需要指定权限的虚拟帐号名相同
anon_upload_enable=YES ##可以上传的权限
在此文件中设定配置文件中的所有参数,此文件的优先级高
测试:
只有westos1可以上传,westos2的上传被拒绝。