(附本次搭建所用虚拟机及Linux操作系统版本链接)
VMware Workstation Pro 15.5.0虚拟机:
链接:https://pan.baidu.com/s/1wsrzb1EuCPAykwSMGB39rw
提取码:1234
RHEL-7.2 Server.x86_64 Linux操作系统:
链接:https://pan.baidu.com/s/1sacACbx4FknBbUiVEkA45Q
提取码:1234
[admin@localhost 桌面]$ su
密码:
[root@localhost 桌面]#
[root@localhost 桌面]# rpm -qa|grep vsftpd
若什么也没显示则说明还未安装
第一步:挂载
[root@localhost 桌面]# cd /mnt **进入mnt目录下**
[root@localhost mnt]# ls
[root@localhost mnt]# mkdir cdrom **创建挂载点,在mnt目录下创建cdrom目录** **rmdir cdrom是删除目录**
[root@localhost mnt]# ls
cdrom
[root@localhost mnt]# mount /dev/cdrom /mnt/cdrom **mnt是临时挂载点**
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost mnt]# cd cdrom
[root@localhost cdrom]# ls
addons images Packages RPM-GPG-KEY-redhat-release
EFI isolinux release-notes TRANS.TBL
EULA LiveOS repodata
GPL media.repo RPM-GPG-KEY-redhat-beta
[root@localhost cdrom]# cd Packages
[root@localhost Packages]# ls **找到vsftpd-3.0.2-10.el7.x86_64.rpm这个软件包,将其名称复制下来用于安装。**
第二步:安装软件包
[root@localhost Packages]# rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm
警告:vsftpd-3.0.2-10.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
准备中... ################################# [100%]
软件包 vsftpd-3.0.2-10.el7.x86_64 已经安装
因为我已经安装过一次了,所以此处显示的是已经安装
1.临时关闭一下防火墙
[root@localhost Packages]# systemctl stop firewalld
[root@localhost Packages]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 五 2021-12-10 22:44:29 CST; 4min 12s ago
Process: 1047 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 1047 (code=exited, status=0/SUCCESS)
12月 11 06:19:12 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
12月 10 22:26:14 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
12月 10 22:44:28 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon...
12月 10 22:44:29 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon.
显示黑点则表示防火墙已关闭
2.临时关闭selinux防火墙
getenforce命令用来查看selinux的状态,显示Permissive则表示已临时关闭
[root@localhost Packages]# setenforce 0
[root@localhost Packages]# getenforce
Permissive
[root@localhost Packages]# systemctl restart vsftpd
可查看服务是否启动:
[root@localhost Packages]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
Active: active (running) since 五 2021-12-10 23:02:04 CST; 1min 5s ago
Process: 5729 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 5730 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─5730 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
12月 10 23:02:04 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon...
12月 10 23:02:04 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
若小圆点呈绿色,则说明服务已启动
为Linux操作系统配置一个IP地址使其与物理机处于同一个网段。
1.Window操作系统下win+R快捷键输入cmd
2.使用命令ipconfig查看主机IP地址
3.Linux操作系统下添加新的配置:
Ipv4 地址修改为手动
将IP地址设置为与主机IP地址在同一个网段,网络掩码和网关不变
Window操作系统下尝试是否能ping通:使用命令ping+为Linux操作系统配置的IP地址
若无法ping通,将虚拟机的网络适配器设置为桥接模式再尝试
打开Windows操作系统的文件资源管理器
输入ftp://+配置的Linux操作系统的IP地址
进入后可看见一个叫pub的默认资源共享文件夹,里面是没有文件的,此处的test.txt文件是我先前创建的,我们另外再去创建一个演示一下
[root@localhost Packages]# cd /var
[root@localhost var]# ls
account adm cache crash db empty ftp games gopher kerberos lib local lock log mail nis opt preserve run spool tmp www yp
[root@localhost var]# cd ftp
[root@localhost ftp]# ls
pub
2.进入pub目录下可看见之前显示的那个test.txt文件,通过vi再创建一个test1.txt文件并输入内容,使用cat命令可查看到我在里面输入了123456这个数据,关于vi编译器的一些操作可参考我另一篇博客中的介绍:Linux操作系统下搭建Samba跨平台资源共享服务
[root@localhost ftp]# cd pub
[root@localhost pub]# ls
test.txt
[root@localhost pub]# vi test1.txt
[root@localhost pub]# ls
test1.txt test.txt
[root@localhost pub]# cat test1.txt
123456
3.再次去文件资源管理器中访问可看到多了一个文件
这样我们就可以进行资源的下载了,但是还不能进行资源的上传以及创建,进行这些操作会提示没有相关权限,还需要去配置一些配置。
[root@localhost pub]# cd /etc
[root@localhost etc]# ls
[root@localhost etc]# cd vsftpd
[root@localhost vsftpd]# ls
ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
anon_upload_enable=YES **29行取消#号,表示允许匿名用户上传文件**
anon_mkdir_write_enable=YES **33行取消#号,表示允许匿名用户创建对象**
结尾自添:
anon_other_write_enable=YES **是否允许匿名用户有创建目录的写入权限**
anon_umask=022 **表示匿名用户上传文件默认权限掩码值**
anon_max_rate=50000 **设置匿名用户的最大传输速度,单位为bytes/sec**
修改完毕,保存退出。
2.设置ftp用户的上传目录并修改目录权限
[root@localhost vsftpd]# ll -d /var/ftp/pub **显示目录属性**
drwxr-xr-x. 2 root root 37 12月 10 23:18 /var/ftp/pub
[root@localhost vsftpd]# chown ftp /var/ftp/pub **修改目录属性**
[root@localhost vsftpd]# ll -d /var/ftp/pub **显示修改后目录属性**
drwxr-xr-x. 2 ftp root 37 12月 10 23:18 /var/ftp/pub
3.修改seLinux,使seLinux支持匿名用户上传
使用getsebool -a|grep ftp 命令可以找到ftp的bool值,其中第二行:ftpd_anon_write --> off的当前值为off,需改为on。
[root@localhost vsftpd]# getsebool -a|grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
使用命令setsebool -P 进行修改,再次查看可以看到已经修改为on了。
[root@localhost vsftpd]# setsebool -P ftpd_anon_write on
[root@localhost vsftpd]# getsebool -a|grep ftp
ftp_home_dir --> off
ftpd_anon_write --> on
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
4.修改上下文
[root@localhost vsftpd]# ll -Zd /var/ftp/pub
drwxr-xr-x. ftp root system_u:object_r:public_content_t:s0 /var/ftp/pub
[root@localhost vsftpd]# chcon -t public_content_rw_t /var/ftp/pub
[root@localhost vsftpd]# ll -Zd /var/ftp/pub
drwxr-xr-x. ftp root system_u:object_r:public_content_rw_t:s0 /var/ftp/pub
5.使用reboot命令重新启动Liunx操作系统
[root@localhost vsftpd]#reboot
6.重启Linux操作系统后重新关闭防火墙和开启服务
[admin@localhost 桌面]$ su
密码:
[root@localhost 桌面]# systemctl stop firewalld
[root@localhost 桌面]# setenforce 0
[root@localhost 桌面]# getenforce
Permissive
[root@localhost 桌面]# systemctl restart vsftpd
7.测试
将Windows操作系统中的资源拖入pub文件夹中,可看到没有再出现权限不足的提示了,并成功的进行了资源的上传,并且可以在pub文件夹中创建文件。
下次只需要重新启动该服务即可,不必重新搭建。
在服务器终端先进入root用户模式再通过命令:
systemctl stop firewalld 关闭防火墙
setenforce 0
getenforce
systemctl restart vsftpd 重启服务
之后在客户端进行正常操作即可。