目录
安装配置
FTP服务配置实例
FTP服务配置实例2(本地用户登录)项目需求
1.安装vsftpd
(1)使用dnf命令安装vsftpd服务(光盘挂载、yum源的制作请参考前面相关内容)。
[root@Server01 ~]#rpm –qa |grep vsftpd //查看vsftpd服务是否安装
[root@Server01 ~]# mount /dev/cdrom /media
[root@Server01 ~]# dnf clean all //安装前先清除缓存
[root@Server01 ~]# dnf install vsftpd -y
[root@Server01 ~]# dnf install ftp -y //同时安装ftp软件包
2.重新启动vsftpd服务、随系统启动,开放防火墙,开放SELinux。
[root@Server01 ~]# systemctl restart vsftpd
[root@Server01 ~]# systemctl enable vsftpd
[root@Server01 ~]# firewall-cmd --permanent --add-service=ftp
[root@Server01 ~]# firewall-cmd --reload
[root@Server01 ~]# firewall-cmd --list-all
[root@Server01 ~]# setsebool -P ftpd_full_access=on
3.主配置文件(/etc/vsftpd/vsftpd.conf)
[root@Server01 ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak //备份主配置文件
[root@Server01 ~]# grep -v “#” /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf //过滤重输出
[root@Server01 ~]# cat /etc/vsftpd/vsftpd.conf -n //按行号查看文件
[root@Server01 ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES # 开启匿名用户登录
local_enable=YES # 开启本地用户登录
write_enable=YES # 允许本地用户写入
local_umask=022 # 设置本地用户创建文件的umask值为022
dirmessage_enable=YES # 激活消息目录
xferlog_enable=YES # 是否启用日志
connect_from_port_20=YES # 主动模式端口为20
xferlog_std_format=YES # 将日志格式设置为标准格式
listen=NO # 不可同时将listen与listen_ipv6都设置为YES
listen_ipv6=YES # 允许IPv4或IPv6客户端的连接
pam_service_name=vsftpd # PAM(可插拔认证)服务的名称为vsftpd
userlist_enable=YES # 允许用户列表生效
tcp_wrappers=YES # 使用tcp_wrappers作为主机访问控制方式
项目需求
搭建一台FTP服务器,允许匿名用户上传和下载文件,匿名用户的根目录设置为/var/ftp。
第1步:新建测试文件,编辑/etc/vsftpd/vsftpd.conf。
[root@Server01 ~]# date > /var/ftp/pub/file1
[root@Server01 ~]# vim /etc/vsftpd/vsftpd.conf
第2步:在文件后面添加如下4行(语句前后一定不要带空格,若有重复的语句请删除或直接在其上更改,“#”及后面的内容不要写到文件里)。
anonymous_enable=YES #允许匿名用户登录
anon_root=/var/ftp #设置匿名用户的根目录为/var/ftp
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户创建文件夹
第3步:允许SELinux,让防火墙放行ftp服务,重启vsftpd服务。
selinux的设置:
[root@Server01 ~]# setsebool -P ftpd_full_access=on //设置selinux规则的布尔值,开放ftp访问
或者:
[root@Server01 ~]#setenforce 0 //设置运行级别为permissive
或者
[root@Server01 ~]#vi /etc/selinux/config //永久关闭selinux
SELINUX=disabled
防火强的设置:
[root@Server01 ~]# firewall-cmd --list-all
[root@Server01 ~]# firewall-cmd --permanent --add-service=ftp
[root@Server01 ~]# firewall-cmd --reload
[root@Server01 ~]# firewall-cmd --list-all
重启服务:
[root@Server01 ~]# systemctl restart vsftpd
第4步:访问测试。
Centos 8客户端(Client2):
(1)安装ftp软件包
(2)在终端中输入ftp 192.168.10.1,使用匿名用户ftp登录,密码无需输入
ftp>pwd //查看当前所在位置
ftp>ls //查看当前目录里的内容
ftp>cd pub //进入到pub目录
ftp>ls //查看当前目录里的内容
ftp>mkdir newdir //提示报错
原因是:系统本地权限未设置!
解决办法:
服务器端:
[root@Server01 ~]# chmod o+w /var/ftp/pub //给其他用户赋予写权限
[root@Server01 ~]# systemctl restart vsftpd
Centos 8客户端(Client2):
(3)#cal >file2
在终端中输入ftp 192.168.10.1,使用匿名用户ftp登录,密码无需输入
在终端中输入ftp 192.168.10.1,使用匿名用户ftp登录,密码无需输入
ftp>lcd pub //进入到pub目录
ftp>ls //查看当前目录里的内容
ftp>mkdir newdir
ftp> get file1 //file1下载到哪里去了?
ftp> put file2
ftp>ls //验证上传成功与否
ftp>delete file1 //删除成功与否
提示:anon_other_write_enable=YES #表示允许匿名用户修改目录名或者删除目录。
公司内部现在有一台FTP服务器和Web服务器,FTP主要用于维护公司的网站内容,包括上传文件、创建目录、更新网页等。公司现有两个部门负责维护任务,两者分别使用team1和team2账号进行管理。要求仅允许team1和team2账号登录FTP服务器,但不能登录本地系统,并将这两个账号的根目录限制为/web/www/html,不能进入该目录以外的任何目录。
第1步:建立维护网站内容的FTP账号team1、team2,并设置密码
[root@Server01 ~]# useradd team1
[root@Server01 ~]# useradd team2
[root@Server01 ~]# passwd team1
[root@Server01 ~]# passwd team2
第2步:配置vsftpd.conf主配置文件并做相应修改
[root@Server01 ~]# vim /etc/vsftpd/vsftpd.conf
local_enable=YES
local_root=/web/www/html
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
第3步:防火墙放行和SELinux允许!重启FTP服务。
[root@Server01 ~]# firewall-cmd --permanent --add-service=ftp
[root@Server01 ~]# firewall-cmd --reload
[root@Server01 ~]# setenforce 0
[root@Server01 ~]# systemctl restart vsftpd
第4步:修改本地权限。
[root@Server01 ~]# mkdir /web/www/html -p
[root@Server01 ~]# touch /web/www/html/test.sample
[ [root@Server01 ~]# chmod -R o+w /web/www/html //其他用户可以写入!
第4步:防火墙放行和SELinux允许!重启FTP服务。
[root@Server01 ~]# firewall-cmd --permanent --add-service=ftp
[root@Server01 ~]# firewall-cmd --reload
[root@Server01 ~]# setenforce 0
[root@Server01 ~]# systemctl restart vsftpd
第5步:修改本地权限。
[root@Server01 ~]# mkdir /web/www/html -p
[root@Server01 ~]# touch /web/www/html/test.sample
[ [root@Server01 ~]# chmod -R o+w /web/www/html //其他用户可以写入!
第6步:在Linux客户端client1上安装ftp工具后测试。
[root@client1 ~]# mount /dev/cdrom/media
[root@client1 ~]# dnf clean all
[root@client1 ~]# dnf install ftp -y
第6步:测试过程。
使用team1和team2用户不能转换目录,但能建立新文件夹,显示的目录是“/”,其实是/web/www/html文件夹。
[root@client1 ~]# ftp 192.168.10.1
Connected to 192.168.10.1 (192.168.10.1).
220 (vsFTPd 3.0.2)
Name (192.168.10.1:root): team1 //锁定用户测试
331 Please specify the password.
Password: //输入team1用户密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 “/” //显示是“/”,其实是/web/www/html,从ll列出的文件中可看出
ftp> mkdir testteam1
257 "/testteam1" created
ftp> get test.sample test1111.sample //从ftp服务器下载test.sample文件另存为test1111.sample
ftp> put test1111.sample test00.sample //上传文件并改名为test00.sample