【中级】RHEL6.5下部署vsftpd实战全集

 

1.          实验需求:

1)     使用RPM包安装vsftpd服务

2)     实现匿名用户访问,验证仅可以访问和下载,不可以上传

3)     实现匿名用户可上传、下载、修改等完全权限(现实环境中这样的需求可能性很小)

4)     实现把登陆的用户禁锢在自己的家目录中

5)     实现限制某些用户的访问

6)     实现虚拟用户的访问

7)     实现针对不同的虚拟用户拥有不同的权限

2.          实验环境:

Linux服务器系统版本:Red Hat Enterprise Linux 6.5     IP:192.168.20.3

Windows客户机系统版本:Windows 7 Ultimate x64      IP:192.168.20.2

vsftpd软件版本:vsftpd-2.2.2

 

3.      实验步骤:

 

基本安装操作

A.   挂载系统光盘并安装vsftpd

这里我们使用rpm安装包安装vsftpd,安装包放在系统光盘中的Packages目录中,我们首先挂载系统光盘到系统的mnt目录下

[[email protected]~]# mount /dev/sr0 /mnt

到Packages目录下找到vsftpd服务的软件包并安装,安装完成。

[[email protected]~]# rpm -ivh /mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

B.   查看vsftpd配置文件

[[email protected] ~]# grep -v "#"/etc/vsftpd/vsftpd.conf #过滤掉配置文件中#号的注释

anonymous_enable=YES   #已开启匿名用户的访问

local_enable=YES   #已开启本地账号的访问

write_enable=YES   #已开启写入的权限

local_umask=022    #本地用户上传文件的权限是644,文件夹是755

---------------------以下配置为服务默认,此实验中无需关心----------------------

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES


实现匿名用户访问,验证仅可以访问和下载,不可以上传

根据vsftpd配置文件的默认配置,当vsftpd搭建好之后什么都不做就可以被匿名用户和本地用户访问了

A.   效果验证:

[[email protected]~]# service vsftpd start  #启动服务

为vsftpd 启动 vsftpd:                                    [确定]

测试之前,必须把防火墙和selinux关掉

[[email protected] ~]# serviceiptables stop

iptables:将链设置为政策 ACCEPT:filter                    [确定]

iptables:清除防火墙规则:                                 [确定]

iptables:正在卸载模块:                                  [确定]

[[email protected] ~]# setenforce 0

我们在客户机上用文件夹的方式访问 ftp://192.168.20.3

现在来测试一下匿名用户的上传和下载权限

注意:我们用匿名账号ftp登陆(无密码),查看现在所在的工作目录为/,这个/并不是服务器的根目录,而是匿名用户自己的家目录,ls查看发现里面有一个pub的文件夹

家目录就是服务器上/var/ftp这个目录:

我们验证匿名用户可不可以下载首先要在ftp这个目录下新建一个可供下载的文件[[email protected] ~]# cd/var/ftp  #切换到ftp目录下

[[email protected]]# echo "this is test ftp" > test.txt  #新建一个test.txt文件,内容为this is test ftp

回到客户机上的cmd控制台

C:\Users\Administrator>f:\    //切换到f盘,我们下载的文件就会下载到f盘

用匿名账号ftp登陆,下载test.txt文件,打开f盘,看到已经下载的文件

现在来验证匿名用户是否可以上传文件,我们把刚才下载都客户机上的test.txt文件改名为tes.txt文件用于上传测试(避免重名)

上传时被拒绝,所以我们知道匿名用户是只可以下载不能够上传的。

那如果是系统本地账号的话可不可以上传呢?

[[email protected]]# useradd tom  #新建一个tom的账户

[[email protected]]# passwd tom  #设置tom的密码

回到客户机的cmd控制台,用tom登陆并上传tes.txt文件,上传成功。

[[email protected]]# ls -l /home/tom  #查看上传的文件的权限为644(因为配置文件中local_umask=022)

注意:如果selunux没有关掉,用本地账户也是不可以登陆的,会报以下错误


实现匿名用户可上传、下载、修改等完全权限

我们要让匿名用户可以上传文件夹,需要修改配置文件:

anon_mkdir_write_enable=YES

注意:当我们不知道如何去配置要添加哪些或要修改哪些选项时,我们可以借助man手册来寻求帮助:

[[email protected] vsftpd]# manvsftpd.conf

在手册里面查找跟anon相关的内容,我们看到有一项是other write,他的默认值是No,如果设为yes就可以允许用户上传、创建目录并且删除、重命名等操作

接着我们到vsftpd.conf脚本中插入一行内容:anon_other_write_enable=YES

修改完毕之后匿名用户就获得了最高权限(可读写,删除,重命名)

A.   修改后的脚本

B.   效果验证

[[email protected]]# service vsftpd reload  #重新加载配置

关闭 vsftpd:                                              [确定]

为 vsftpd 启动 vsftpd:                                    [确定]

回到客户端的cmd控制台,以ftp匿名账号登陆,并删除文件,提示失败。

回到服务器查看ftp这个目录的权限,是没有写权限的,所以也就无法删除

[[email protected]]# chmod 777 /var/ftp  #将ftp权限设为最大

回到客户机,用ftp登陆,发现直接登陆就报错了,因为我们把var/ftp这个目录权限改到最大了,这样匿名用户就可以为所欲为了,为了安全,vsftpd设置了直接就不允许登陆了。

那么如果我们想让匿名用户有最大权限应该怎么做呢?这时我们应该对ftp目录下的子目录进行操作

[[email protected]]# chmod 755 /var/ftp  #把ftp的权限改为默认的755

[[email protected]]# cd /var/ftp

[[email protected]]# mkdir anon  #在ftp目录下新建一个anon目录

[[email protected]]# chmod 777 anon #修改目录权限为最大

[[email protected]]# cp test.txt anon  #将test文件拷贝到anon目录下,用于后面的删除测试

[[email protected]]# ls -l #查看test文件权限为不可写就不可以删除

[[email protected]]# chmod 666 test.txt  #将文件权限改为可写

这样,test.txt就可以被匿名用户删除了。

回到客户机的cmd控制台,用ftp登陆,切换到anon目录,删除test.txt文件,删除成功。当然匿名用户也是可以进行其他操作了这里就不一一测试了。


实现把登陆的用户禁锢在自己的家目录中

现在我们用本地账号tom登陆,默认的当前工作目录是tom自己的家目录,我们可以将他任意切换到服务器的任何目录下:

这样是非常不安全的,所以我们要让用户登陆之后仅仅只能在他的家目录这个范围活动不允许他任意切换到其他目录,我们需要修改配置文件使这行配置生效:chroot_local_user=YES

A.   修改后的脚本

B.   效果验证

   [[email protected]]# service vsftpd reload  #重新加载配置

关闭vsftpd:                                              [确定]

为vsftpd 启动 vsftpd:                                    [确定]

回到客户机的cmd控制台,用tom登陆,切换到根,发现这时候的根是他自己的家目录,并不是服务器上的根目录下了,他已经被禁锢在自己的家目录中了。

实现限制某些用户的访问

我们查看vsftpd目录下的内容,发现有一个user_list文件

查看user_list文件内容,发现这个里面都是被拒绝登陆的用户,所以我们要让谁不可以登陆就把账号写进这个文件里面就可以了,这里我们测试不让tom登陆

A.   修改后的脚本

B.   效果验证

回到客户机的cmd控制台,用tom登陆,登陆失败。

注意:这里tom登陆失败的原因是因为我们把tom写进了user_list这个文件当中,另外也是因为配置文件中userlist_enable=YES这行设置,如果配置成userlist_deny=YES那么就是只允许user_list中的用户登陆


实现虚拟用户的访问

如果我们只是想要新建vsftpd账号而不让他作为一个系统账号的话就可以用到虚拟账号功能了

[[email protected] vsftpd]# vim vuser  #新建一个叫做vuser的文件

在这个文件中基数行为用户名,偶数行为密码,我们新建两个用户lisa和jack

[[email protected] vsftpd]# db_load -T -thash -f vuser vuser.db  #将vuser转换成数据库文件 db_load是命令 -T指定转换-t 指定转换类型为hash -f指定要转换的文件vuser.db为转换后的文件名

[[email protected] vsftpd]# file vuser.db  #查看文件类型,可以看到vuser已经被转换成一个vsftpd能识别的hash数据库文件

[[email protected] vsftpd]# chmod 600vuser     #为了安全,不想让其他用户可以看到这个文件里有哪些东西,修改权限为600

[[email protected] vsftpd]# chmod 600vuser.db

虚拟用户创建之后,要给虚拟用户映射到一个系统账号

[[email protected] vsftpd]# useradd -d/opt/vuser -s /sbin/nologin vuser  #新建一个虚拟用户的映射账号vuser,指定宿主目录为opt/vuser,并指定不允许登陆系统

[[email protected] vsftpd]# vim/etc/pam.d/vsftpd.vu  #为虚拟用户创建pam认证模块命名为vsftpd.vu

在认证文件中加入以下两行认证信息:

auth required pam_userdb.sodb=/etc/vsftpd/vuser

account required pam_userdb.sodb=/etc/vsftpd/vuser

#这里的vuser其实是vuser.db,这里省略了db,否则会报错

之后到vsftpd.conf配置文件中插入以下三行内容:

guest_enable=YES   #开启虚拟用户访问

guest_username=vuser   #映射到系统账号vuser

pam_service_name=vsftpd.vu   #指定pam认证模块

注意:vsftpd有一个默认的pam认证模块,需要注释掉

A.   修改后的脚本

B.   效果验证

[[email protected]]# service vsftpd restart   #重启服务

关闭 vsftpd:                                              [确定]

为vsftpd 启动 vsftpd:                                    [确定]

回到客户机的cmd控制台,用lisa登陆并上传文件成功

[[email protected]]# ls -l /opt/vuser    #查看上传的文件的属主是vuser,说明lisa是映射到vuser这个系统账号了

接着我们把tes.txt文件改名为te.txt防止重名,以jack登陆并上传te.txt

查看jack上传的文件的属主依然是vuser

注意:如果虚拟用户都可以登陆成功但是上传时提示权限被拒绝的话,需要去vsftpd.conf文件中使这行生效anon_upload_enable=YES


实现针对不同的虚拟用户拥有不同的权限

以上实验中lisa和jack的权限是一样的,现在我们让lisa上传的文件权限为600而jack上传的文件权限为644,我们需要开启这个单独配置文件功能

打开vsftpd.conf配置文件,加入以下一行配置告诉他去vu_dir目录下找他们的单独配置文件:

user_config_dir=/etc/vsftpd/vu_dir

[[email protected] vsftpd]# mkdir vu_dir   #在vsftpd目录下新建vu_dir目录

[[email protected] vsftpd]# cd vu_dir

[[email protected] vu_dir]# vi jack    #在vu_dir目录下为jack新建一个单独的配置文件(暂时不写任何内容保存退出)

我们用man手册查看一下anon_umask(匿名上传)这个选项,发现默认权限是600,所以前面我们看到lisa和jack上传的文件权限是600

如果要使jack的上传权限是644,那就把这个值设为022即可

接着我们就vi jack在文件中加入一行内容:anon_umask=022

A.   修改后的脚本

 

B.   效果验证

[[email protected]_dir]# service vsftpd restart  #重启服务

关闭 vsftpd:                                              [确定]

为 vsftpd 启动 vsftpd:                                    [确定]

回到客户机的cmd控制台,用jack登陆并上传t.txt文件

服务器上查看上传的文件权限为644,实验成功。

 

4.          实验总结:

1)     vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

2)     vsftpd中的虚拟用户又是一个非常实用的功能,满足不同用户的不同访问特性,在配置文件中一定要注意权限的配置,以降低权限虚拟用户是默认作为匿名用户进行处理的。

时间: 2024-11-08 21:26:44

【中级】RHEL6.5下部署vsftpd实战全集的相关文章

【中级】RHEL6.5下部署samba企业级文件服务器实战

  1.          实验需求: 1)     使用RPM包安装samba服务 2)     实现匿名访问,验证可以读写文件.目录 3)     实现指定用户的访问 4)     实现指定用户的访问,并为用户赋予不同的权限 5)     实现用户的别名访问,并测试权限 6)     实现对特定的访问地址进行限制 7)     实现访问windows系统中的共享资源 2.          实验环境: Linux服务器系统版本:Red Hat Enterprise Linux 6.5    

RHEL6.5x64下memcached安装和使用

RHEL6.5x64下memcached安装和使用 从网上下载libevent-2.0.21-stable.tar.gz 和memcached-1.4.5.tar.gz,然后运行 第一步:安装gcc编译器 [[email protected] ~]#yum -y isnatll gcc 第二步:安装libevent和memcached [[email protected] srv]# tar zxvf libevent-2.0.21-stable.tar.gz [[email protected

Linux下部署Java应用程序

Linux软件安装的特点: 1.Linux中没有注册表的概念,因此要想删除某个软件直接删除软件目录就可以了. 2.软件的安装有些需要Linux软件包的支持,在Linux中使用rpm命令管理软件包. 3.Linux中软件安装的过程很迅速,并且软件的运行速度也很快. 4.Linux中权限管理很严格,因此安装时需要对安装介质进行权限配置. 体验Linux下的Java开发 编译器->字节码->(虚拟机)本地机器码->执行 Linux系统与Windows系统最大的区别: Windows路径分隔是&

CentOS7部署vsftpd

在虚拟机上安装CentOS7最小版,完成之后部署vsftpd,主要分三个部分:1 vsftp安装及配置文件(vsftp.config)配置 yum -y install vsfptd 切换到配置文件目录 vi /etc/vsftpd/vsftpd.conf 参数说明参考:https://www.cnblogs.com/kuliuheng/p/3209674.html主要修改以下两个参数: #关闭匿名用户访问 Anon_world_readable_only=no #开放上传权限 Anon_upl

“500 oops socket” Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)【成功完美简单极致】

"500 oops socket" Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)[成功完美简单极致] #自从手机root后安装Linux Deploy开始安装了Debian9开始准备鼓捣ftp服务器(vsftpd). apt install vsftpd #之后整整一个月百度而来的猛如虎的各种操作各种坑, #且不说修改vsftpd.conf的各种参数, #下载源码修改编译,安装gdb调试,通过网络教程禁用子进程改

msmtp在RHEL6.5下的安装

1.解压 [[email protected] ~]# tar -jxvf msmtp-1.4.32.tar.bz2 2.配置 [[email protected] ~]# cd msmtp-1.4.32 [[email protected] msmtp-1.4.32]# ./configure --prefix=/usr/local/msmtp --sysconfdir=/usr/local/msmtp/etcchecking build system type... x86_64-unkno

在Linux下部署kettle的Job

关于如何用kettle创建job以及如何部署kettle到linux上,我就不细说了,大家应该都会,下面重点说一下,如何让job执行起来先将创建好的脚本上传到kettle指定目录下面,创建调用job执行的脚本文件, export JAVA_HOME=/usr/java/jre1.6.0_23 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar /opt

windows 下部署kafka 日记 转

windows 下部署kafka 日记 转一.下载去apache 的官网(http://kafka.apache.org/downloads.html)下载最新的二进制版的压缩包.目前的最新版本是kafka_2.11-0.8.2.1.tgz.二.解压直接解压到D 盘根目录下.三.修改配置文件注意版本不同,可能配置文件不同.请参照实际情况修改.1.修改log4j.properties 文件中的“kafka.logs.dir=logs ”为“kafka.logs.dir=/tmp/logs”.2.修

3-linux下部署tomcat应用

linux下部署tomcat应用 相关软件下载 jdk      http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html tomcat     http://tomcat.apache.org/ 解压jdk以及tomcat包 [r[email protected] soft]# tar -zxvf apache-tomcat-8.0.30.tar.gz [[email protecte