1.关于FTP
ftp是一种文件传输协议,是TCP/IP协议组中的协议之一,为了提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明度和可靠性高效的传送数据,FTP就是完成两台计算机之间的拷贝。
2.ftp服务的部署
选虚拟机作为远程计算机(IP:172.25.254.1)
yum install vsftpd -y ##安装ftpd
systemctl start vsftpd
systemctl enable vsftpd ##开机自启
firewall-config ##设置火墙,永久开启ftp服务,点击Options,选择Reload Firewalld
内核火墙三种状态:enforcing ##强制;disabled ##关闭; permissive##警告
vim /etc/sysconfig/selinux ##内核火墙配置文件
关闭火墙
reboot ###重启,重新读取配置文件
getenforce ##查看状态,显示disabled,配置完成
3.ftp服务的基本信息
/var/ftp/pub ##共享目录,默认发布目录
FTP连接方式:lftp IP
协议接口:21/tcp
服务的配置文件: /etc/vsftpd/vsftpd.conf
4.常见报错信息类型
500 ##权限过大
530 ##认证失败
550 ##程序本身不允许
553 ##服务器上的文件系统不允许
5.ftp对匿名用户以及本地用户的权限设定
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service ##重启ftp
只要是修改过配置文件就要重启FTP
(1)anonymous_enable=YES | NO ##匿名用户登陆权限,YES允许匿名用户登录
local_enable=YES ##本地用户登陆权限,NO不允许本地用户登录
write_enable=YES ##本地用户写的权限开启
write_enable=NO ,本地用户不可写
(2)
chgrp ftp /var/ftp/pub ###设置/var/ftp/pub为ftp的组,ftp可写,/pub也可写
chmod 775 /var/ftp/pub ###ftp权限为‘7’
anon_upload_enable=YES ###上传
anon_world_readable_only=NO ###下载
anon_other_write_enable=YES ###删除文件,
anon_mkdir_write_enable=YES ###建立文件夹,重命名 mv westos/ linux
put ##上传
get ##下载
(3)
chown_uploads=YES ###开启文件上传用户的权限
chown_username=student ###文件上传用户为student
chown_upload_mode=0644 ###文件权限为644
anon_umask=022 ###匿名用户系统保留权限022(777-111=666-022=644)
下图可见student的uid=1000,上传文件的权限为‘-rw-r--r--'也就是644
(4)
local_root=/westos ##修改本地用户家目录
(5)
anon_root=/fancy ###匿名用户家目录修改,切换进去是fancy/下
(6)
max_clients=2 ##连接用户数
当一个断开连接时,连不上的用户马上连接,总的连接数始终为3
(7)
anon_max_rate=204800 ##上传速率在200k左右,单位为B(字节)
生成一个2G的文件在桌面
不设限制,上传速率很快达到70M/s
(8)
chroot_local_user=YES ###本地用户被锁住,只能进入家目录
本地用户仅能进入家目录
chroot_list_enable=YES ###开启名单,规定了那些用户可以进入家目录,那些不可以进入
chroot_list_file=/etc/vsftpd/chroot_list ###和chroot_list_enable=YES 同时开启
写入黑名单中不能访问其他目录
chroot_list_enable=YES ###可以进入别的目录,开启白名单
可以进入根目录
(9)限制本地用户登陆
vim /etc/vsftpd/ftpusers ###永久黑名单
student用户无法登陆
vim /etc/vsftpd/user_list ###用户临时黑名单
用户白名单设定
userlist_enabled=YES ##一直开着,是userlist_deny=NO|YES的前提
userlist_deny=NO|YES ###白名单|黑名单
注意:/etc/vsftpd/ftpusers的优先级高, /etc/vsftpd/user_list设定白名单,依然登陆不上
当student同时在永久黑名单和白名单中时,还是 /etc/vsftpd/ftpusers的优先级高,student无法登陆,当在永久黑名单中删除student,student正常登陆
6.ftp虚拟用户的设定
(1).vim /etc/vsftpd/westosfie ##文件名任意
:
student1
123
student1
123
student1
123
(2).db_load -T -t hsah -f /etc/vsftpd/westosfie /etc/vsftpd/westosfie.db ##加密方式 -t:加密方式 -T:转换 -f:要加密的文件
(3).vim /etc/pam.d/westos ##文件名任意
account required pam_userdb.so db=/etc/vsftpd/westosfie ##用户名
auth required pam_userdb.so db=/etc/vsftpd/westosfie ##密码
(4).vim /etc/vsftpd/vsftpd.conf
:
pam_service_name=westos ##把服务与建立的数据库联系起来,知道要去访问/etc/pam.d/westos/这个文件;服务名称一定要和/etc/pam.d/westos一致
guest_enable=YES
guest_username=student ##虚拟用户student1,student2,student3以本地用户student去访问,进入的家目录也就是student的家目录
(5).chmod u-w /home/student ##报错500,权限过大,设定用户权限
student1,student2,student3正常登陆,因为我把student的家目录
local_root=/westos 注释了,所以不会显示(9)中student目录下的文件,而是原来设定的目录
7.
虚拟帐号家目录的独立设定
mkdir -p /ftpdir/student{1..3}
touch /ftpdir/student1/studentfile1
touch /ftpdir/student2/studentfile2
touch /ftpdir/student3/studentfile3
vim /etc/vsftpd/vsftpd.conf
:
local_root=/ftpdir/$USER
user_sub_token=$USER
每个用户会对应的访问自己的家目录
8.
独立每个用户的权限
mkdir /ftpdir/student{1..3}/pub
chgrp student /ftpdir/student{1..3}/pub
chmod 775 /ftpdir/student{1..3}/pub ##给权限
mkdir /etc/vsftpd/confdir/student{1..3}
vim /etc/vsftpd/vsftpd.conf
:
user_config_dir=/etc/vsftpd/confdir
注释掉匿名用户的权限,以免混乱
只有student1用户有上传和写的权限
student2没有权限会报错
要注意的是,虚拟用户设定之后,本地用户student不能登录,记得把pam_service_name=westos 恢复为 pam_service_name=vsftpd,这样就可以恢复student的登录