redhat 7中FTP服务器搭建与应用

FTP服务器搭建与应用

实验准备
软件:VMware Workstation Pro
虚拟机:Red Hat Enterprise Linux 7 64 位 两台(一台服务器,一台客户端)
匿名账号FTP服务器、真实账号FTP服务器

FTP应用案例2
【例5.11】学院内部有一台FTP 和Web 服务器,其功能主要是维护学院的网站,内容包括上传文件、创建目录、更新网页等。学院的这些维护工作是委派给计算机系学习部的学生进行的,分别有两个账号 user1和 user2登录FTP服务器,但不能登录本地系统。他们只能对目录/var/www/html进行操作,不能进入该目录以外的任何目录,如图5.7所示。
![请添加图片描述](https://img-blog.csdnimg.cn/024201fb6ba1475b8b54b85e2de7f571.png
分析:把 FTP服务器和Web服务器做在一起是企业经常采用的方法,这样方便实现对网站的维护。为了增强安全性,先要仅允许本地用户访问,并禁止匿名用户登录;其次,使用chroot功能将user1和user2锁定在/var/ www/html目录下。如果需要删除文件,则需要注意本地权限。具体配置如下。

1、建立user1和user2账号,并禁止本地登录。

[root@localhost Desktop]# useradd -s /sbin/nologin user1
[root@localhost Desktop]# useradd -s /sbin/nologin user2
[root@localhost Desktop]# echo redhat | passwd --stdin user1
Changing password for user user1.
passwd: all authentication tokens updated successfully.
[root@localhost Desktop]# echo redhat | passwd --stdin user2
Changing password for user user2.
passwd: all authentication tokens updated successfully.

2、配置YUM源,下载VSFTP服务包

[root@localhost Desktop]# mkdir /mnt/cdrom
[root@localhost Desktop]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost Desktop]# vim /etc/yum.repos.d/a.repo
[a]
name=a
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
[root@localhost 桌面]# systemctl start vsftpd
[root@localhost 桌面]# systemctl status vsftpd
vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
   Active: inactive (dead)

[root@localhost 桌面]# systemctl start vsftpd
[root@localhost 桌面]# systemctl status vsftpd.service
vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
   Active: active (running) since 日 2022-10-30 09:57:25 CST; 5s ago
  Process: 13429 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 13430 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─13430 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

1030 09:57:25 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.

3、编辑vsftpd.conf文件,并进行相应修改

[root@localhost 桌面]# vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO          //不允许匿名用户登录
local_enable=YES             //允许本地用户登录
local_root=/var/www/html     //设置所有本地用户的根目录。当本地用户登录后,会自动进入该目录。
chroot_local_user=NO         //是否将用户权限禁锢在FTP目录,以确保安全 
chroot_list_enable=YES         //启动限制用户的名单
chroot_list_file=/etc/vsftpd/chroot_list   //受限制用户名单文件
                      

chroot_ local_ user
设置是否将所有用户限制在工作主目录中,参数取值为yes或no,默认取值为no,当取值为yes时,本地用户成功登录后只能访问自己的工作主目录,不能访问工作主目录以外的其他目录。
chroot_ list_ enable
设置是否启动限制用户的名单,参数取值为yes或no。当取值为yes时,表示本地用户也有些例外,可以访问其工作主目录以外的其他目录,例外的用户在“chroot_ list_file”指定的文件中(默认文件是/etc/vsftpd/ chroot__ list)。
对于chroot_ local__ user和 chroot_ list_ enable 的组合效果,可以参考表。

参数 chroot_ local_ user= yes chroot_ local_ user= no
chroot_ list_ enable = yes 所有用户都被限制在其主目录下;使用chroot_ list_ file指定的用户列表,这些用户作为“例外”,不受限制 使用chroot_ list_ file指定的用户列表,这些用户作为“例外”被限制在其主目录下,其他用户不受限制
chroot_ list_ enable = no 所有用户都被限制在其主目录下;不使用 chroot__ list__ file指定的用户列表,没有任何“例外”用户 所有用户都不被限制其主目录下;不使用chroot_ list_ file指定的用户列表,没有任何“例外”用户

注:在vsftpd2.3.5版本更新之后增强了安全检查,将用户限定在了主目录下,该用户的主目录就不能再具有写权限了!若有写权限会报该错误。
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
要修复这个错误,可以通过取消主目录的写权限,或者增加该语句。
allow_writeable_chroot=YES
4、建立/etc/vsftpd/chroot_list文件,并将user1,user2添加在文件中。

[root@localhost home]# vim /etc/vsftpd/chroot_list
user1
user2
[root@localhost html]# grep "#" -v /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO
local_enable=YES
local_root=/var/www/html
allow_writeable_chroot=yes
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@localhost html]# systemctl restart vsftpd.service
[root@localhost html]# firewall-config 

5、把FTP协议添加到firewalld服务的允许列表中
请添加图片描述
6、修改本地权限,设置SELinux域策略。

[root@localhost html]# chmod 777 /var/www/html/
[root@localhost html]# 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
[root@localhost html]# setsebool -P ftpd_full_access=on

7、验证
[root@localhost html] yum install -y ftp
[root@localhost html] ftp 192.168.1.10

FTP应用案例2
公司现有一台FTP服务器,其IP地址为192.168.1.10。FTP服务器主要负责为公司员工提供相关文档的下载。公司现有三个部门,三个部门分别对应目录/ftp/b1、/ ftp/b2和/ftp/b3,另外设定一个公共目录/ftp/ share。三个部门分别适用userl 、user2和user3账号进行管理。要求如下:各账号只能访问自己所属部门的目录和 share目录。如userl只能访问b1和 public目录,不能访问其他目录。admin账号为管理员,可以访问FTP 服务器上的任何目录。

root@localhost 桌面]# yum install -y vsftpd.x86_64 
[root@localhost 桌面]# groupadd b1
[root@localhost 桌面]# groupadd b2
[root@localhost 桌面]# groupadd b3
[root@localhost 桌面]# groupadd myadmin
[root@localhost 桌面]# useradd -G b1,myadmin user1
[root@localhost 桌面]# useradd -G b2,myadmin user2
[root@localhost 桌面]# useradd -G b3,myadmin user3
[root@localhost 桌面]# useradd -G b1,b2,b3,myadmin admin
[root@localhost 桌面]# echo redhat | passwd --stdin user1
更改用户 user1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost 桌面]# echo redhat | passwd --stdin user2
更改用户 user2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost 桌面]# echo redhat | passwd --stdin user3
更改用户 user3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost 桌面]# echo redhat | passwd --stdin admin
更改用户 admin 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost 桌面]# mkdir /ftp
[root@localhost 桌面]# mkdir /ftp/b1
[root@localhost 桌面]# mkdir /ftp/b2
[root@localhost 桌面]# mkdir /ftp/b3
[root@localhost 桌面]# mkdir /ftp/share
[root@localhost 桌面]# touch /ftp/b1/a
[root@localhost 桌面]# touch /ftp/b2/b
[root@localhost 桌面]# touch /ftp/b3/c
[root@localhost 桌面]# touch /ftp/share/share.ttx
[root@localhost 桌面]# chown user1:b1 /ftp/b1
[root@localhost 桌面]# chown user2:b2 /ftp/b2
[root@localhost 桌面]# chown user3:b3 /ftp/b3
[root@localhost 桌面]# chown admin:myadmin /ftp/share/
[root@localhost 桌面]# chmod 770 /ftp/b1
[root@localhost 桌面]# chmod 770 /ftp/b2
[root@localhost 桌面]# chmod 770 /ftp/b3
[root@localhost 桌面]# chmod 770 /ftp/share/
[root@localhost 桌面]# vim /etc/vsftpd/vsftpd.conf 
[root@localhost 桌面]# vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO
local_root=/ftp
allow_writeable_chroot=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
[root@localhost 桌面]# touch  /etc/vsftpd/chroot_list
[root@localhost 桌面]# systemctl start vsftpd
[root@localhost 桌面]# firewall-config 
[root@localhost 桌面]# setsebool -P ftpd_full_access=on


猜你喜欢

转载自blog.csdn.net/weixin_52532523/article/details/127547463
今日推荐