linux系统中FTP服务相关问题
FTP:文本传输协议
FTP的实验我们在虚拟机中做,在做实验之前,我们需要 :
1.vim /etc/sysconfig/selinux 在这里边将selinux的状态改为diabled
2 .reboot 因为这个修改是内核级的,所以我们需要重启虚拟机
3.getenforce 若显示为disabled表示更改成功
一.部署FTP服务
1.服务端
vsftpd服务是服务端软件,lftp是客户端软件
1.yum install vsftpd 安装vsftp服务 (相当于服务器端)
2.systemctl start vsftpd打开vsftp服务
3.systemctl enable vsftpd设置vsftp服务开机时自启动
4.firewall-cmd --list-all查看开启的所有内容
5.firewall-cmd --add-service=ftp将ftp服务加进去(暂时加进去,不能reload)
firewall-cmd --permanent --add-service=ftp(永久加进去,可以reload)
//6. firewall-cmd --reload重新加载防火墙的配置
2.客户端
yum install lftp
lftp 172.25.254.210
cd pub
ls (显示有内容,表示登录成功)
二.ftp服务中的基本配置信息
1.报错id的解析
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开放
553 本地文件系统权限过小
2.匿名用户登陆
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES|NO 匿名用户是否可以登陆
local_enable=YES 本地用户是否可以登陆
write_enable=YES ftp服务是否对登陆用户可写
每次修改完配置文件后要重启vsftpd服务systemctl restart vsftpd
3.匿名用户上传
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub 将/var/ftp/pub修改为ftp组 (lftp后看到的文件通常是在/var/ftp中(默认发布目录)
(匿名用户的家目录是pub)
chmod 775 /var/ftp/pub 将/var/ftp/pub权限设置为755
lftp 172.25.254.210
cd pub pub是匿名用户的家目录
put /etc/passwd
4.匿名用户家目录修改
anon_root=/directory 在服务端建立一个目录
5.匿名用户上传文件默认修改权限修改
anon_umask=xxx
6.匿名用户建立目录
anon mkdir write enable=YES
7.匿名用户下载文件
anon_world_readable_only=NO
8.匿名用户删除文件,目录(重命名)
anon_other_write_enable=YES|NO
9.匿名用户新建目录
anon_mkdir_write_enable=YES
10.匿名用户最大传输速率
anon_max_rate= 限制匿名用户上传文件的最大速率
在/mnt下截取文件dd if =/dev/zero of=/mnt/bigfile bs=1M count=2000
上传之后删除了再上传,查看传送速率
11.write_enable=NO
所有用户不可写(不可上传)
12.local_umask=022 本地用户上传文件的默认权限
anon_umask 匿名用户上传文件的默认权限
13.限制本地用户浏览根目录
(1)所有用户被锁定在自己的家目录(大概在102行)
chroot_local_user=YES
chmod u-w /home/*
(2)用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list(编辑这个文件后不用重启vsftpd服务)
NO说明没有将所有用户锁在自己的家目录,都可以*访问根目录,所以要设置黑名单
在这里边添加黑名单用户,只有这里边的用户不可以浏览根目录
(3)用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list 写进用户
YES说明将所有用户锁在自己的家目录,不能随意访问根目录,所以要设置白名单
在这里边添加白名单用户,只有这里边的用户可以浏览根目录
14.设置用户登陆的黑白名单
ftpusers 永久黑名单,优先级最高
user_list 默认黑名单,临时性 (可以是黑名单,有时候也可以是白名单)
当它是黑名单时:
主配置文件中(大致128行) userlist_enable=YES
当它是白名单时:
主配置文件中(大致128行) userlist_enable=YES userlist_deny=NO
当ftpusers和白名单中有同一个人时,该用户不能登陆,因为ftpusers的优先级最高
三.设置ftp虚拟用户
因为系统用户等登陆ftp服务,同时也可以登陆系统,这样很不安全,所以我们要建立ftp虚拟用户,使这些用户只能登陆ftp
当虚拟用户登陆策略启用时,系统用户和其它用户均不能再登陆
1.vim /etc/vsftpd/userdb
user1
123
user2
123
user3
123
2.此时这个文件是明文的,我们要对其加密
db_load -T -t hash -f /etc/vsftpd/userdb userdb.db 采用哈希加密
file /etc/vsftpd/userdb
file /etc/vsftpd/userdb.db
3.安装验证用户密码的插件
yum install pam_userdb.so
4.编辑策略文件(验证密码与用户是否一致的文件) 文件名称任意
vim /etc/pam.d/jay
account required pam_userdb.so db=/etc/vsftpd/userdb(记录帐号和密码的文件)
auth required pam_userdb.so db=/etc/vsftpd/userdb
required表示用户名必须正确,如果错误,则直接pass
注意:db=/etc/vsftpd/userdb而不能是userdb.db,因为pam_userdb.so会自动识别userdb.db
如果写db=/etc/vsftpd/userdb.db,那么pam_userdb.so会识别文件userdb.db.db
5.指定策略文件到配置文件中
pam_service_name=jay
guest_enable=YES
6.虚拟帐号身份指定(用虚拟身份登陆时,实际上还是用一个已经存在的用户身份登陆)
guest_username=student(该用户身份必须是已经存在的)
chmod u-w /home/student
三.虚拟用户家目录的设置
如果我们建立了一个家目录,将这个家目录写入主配置文件中,我们会发现所有的虚拟用户都会在这个家目录中
1.建立一个目录/vftpdir
2.在目录中建立三个虚拟用户的家目录/vftpdir/user1(家目录必须跟用户同名)
/vftpdir/user2
/vftpdir/user3
3.在这三个家目录中分别添加文件(为了验证用户进入的是否是自己的家目录)
4.编写配置文件:vim /etc/vsftpd/vsftpd.conf
local_root=/vftpdir/$USER (shell中$USER的用法)
$USER 相当于c语言中的变量,给不同的值,输出不同的值
验证:su - student echo $USER
user_sub_token=$USER (将shell中$USER的用法挪到ftp服务中来用)
四.虚拟帐号配置独立设定
因为虚拟用户使用的是匿名用户的参数控制,如果我们要给不同的虚拟用户不同的参数控制,就必须给每个虚拟用户设置自己的次配置文件。
在这个实验中,我们要对不同用户设置不同权限,所以要将相应的主配置文件的匿名用户参数取消。
1.mkdir user{1..3}/pub
2.vim /etc/vsftpd/vsftpd.conf 查看自己是以哪个已存在的用户身份登陆的
3.chgrp student user{1..3}/pub
4.chmod 775 user{1..3}/pub
5.mkdir -p /etc/vsftpd/userconf 建立虚拟用户的次配置目录
6.vim /etc/vsftpd/userconf/user1 在上边的目录底下建立user1的次配置文件
在里边写上允许虚拟用户做的动作:anon_upload_enable=YES 允许user1上传
7.编辑主配置文件vim /etc/vsftpd/vsftpd.conf
在里边写user_config_dir=/etc/vsftpd/userconf (在这个目录底下只有user1的次配置文件,所以只有user1有指定权限)