题目
(1)ftp 服务
任务描述:请采用 ftp 服务器,实现文件安全传输。
1.配置 linux1 为 ftp 服务器,安装 vsftpd,新建本地用户 xiaoming,本地用户登陆 ftp 后的目录为var/ftp/pub,可以上传下载。
2.配置 ftp 虚拟用户认证模式,虚拟用户 ftp1 和 ftp2 映射为 ftp,ftp1 登录 ftp 后的目录为var/ftp/vdir/ftp1,可以上传下载,禁止上传后缀名为.sh 的文件;ftp2 登录 ftp 后的目录为/var/ftp/vdir/ftp2,仅有下载权限。
3.使用 ftp 命令在本机验证。
指令
(先挂载)
yum -y install vsftpd //下载vsftpd
firewall-cmd --add-port=21/tcp --znoe=public --permanent //开放端口
firewall-cmd --add-port=20/tcp --znoe=public --permanent
systemctl start vsftpd //启动vsftpd
systemctl enable vsftpd
useradd **** -d /var/ftp/pub
passwd **** //修改密码
cd /var/ftp
chown ****:**** pub
mkdir /var/ftp/vdir/ftp1 -p //新建虚拟用户目录
mkdir /var/ftp/vdir/ftp2 -p
cd /etc/vsftpd //进入vsftpd
vim /vsftpd.conf //修改vsftpd.conf的配置文件
local_enable=YES //允许本地用户模式,由于映射的系统用户为本地用户
pam_service_name=vsftpd //指定Pam认证文件,可修改
需要更改的三项:
anonymous_enable=NO
listen=YES
listen_ipv6=NO
最后一行添加:
guest_enable=YES //开启虚拟用户模式
guest_username=ftp //指定虚拟用户账号映射到本地账号ftp
user_config_dir=/etc/vsftpd/vuser_conf //指定虚拟用户的权限配置目录
allow_writeable_chroot=YES //允许禁锢的FTP根目录可写
chroot_local_user=YES //限制用户在家目录中
reverse_lookup_enable=NO //禁止进行dns反向解析,登录变快,可打可不打
保存退出
systemctl restart vsftpd //重启vsftpd服务
vim vuser //创建一个用于登录的虚拟用户
ftp1
123
ftp2
123
保存退出
db_load -T -t hash -f vuser vuser.db
chmod 600 vuser vuser.db //出于安全考虑,可将账户密码文件权限改为600
vim /etc/pam.d/vsftpd //编辑pam认证文件
添加两行,其余全部注释掉(”#“注释)
auth sufficient pam_userdb.so db=/etc/vsftpd/vuser
account sufficient pam_userdb.so db=/etc/vsftpd/vuser
保存退出
mkdir /etc/vsftpd/vuser_conf //创建文件夹vuser_conf
(在此文件下创建ftp1,ftp2,注意要与虚拟用户名一致)
cd vuser_conf //进入vuser_conf文件夹下
vim ftp1 //进入ftp1并编辑
local_root=/var/ftp/vdir/ftp1 //ftp1目录
anon_upload_enable=YES //ftp1上传权限
anon_world_readable_only=NO //开启ftp1下载权限(NO)
anon_mkdir_write_enable=NO //ftp1文件夹的创建权限
anon_other_write_enable=NO //ftp1文件,文件夹的修改权限
deny_file={*.sh}
保存退出
vim ftp2
local_root=/var/ftp/vdir/ftp2
anon_upload_enable=NO
anon_world_readable_only=NO
anon_other_write_enable=NO
保存退出
systemctl restart vsftpd //重启vsftpd
vim /etc/selinux/config
SELINUX=enforcing (把"enforing"改成"disabled")
保存退出
setenforce 0
systemctl stop firewalld //关闭防火墙