匿名FTP服务

1、检查并安装vsFTPD软件包
在终端窗口输入命令:“rpm –qa|grep vsftpd 命令检查系统是否安装了VsFTPD软件包,如下图所示:
wKioL1gkG-XQJeCUAACc5oBtjm0003.jpg如上图所示 vsftpd 软件包并没有安装,可以使用命令 yum install vsftpd –y 进行安装
wKiom1gkG_qwKvI1AATExpUbq3o936.jpg


查看是否已经安装成功使用命令 rpm –qa vsftpd
wKioL1gkHAzRS-QDAACvcSiCjzM351.jpg如上图所示已经成功下载安装了软件包vsftpd

VsFTPD在安装时会自动创建FTP系统用户组ftp,和属于该组的FTP系统用户ftp 该用户的主目录为/var/ftp ,默认作为FTP服务器的匿名账户。使用命令grep ftp /etc/passwd 可以验证:
wKioL1gkHCHRI0IzAADRJ1FMktY689.jpg如上图所示,可以看到,ftp账户的uid号是14 gid号是50 宿主目录为/var/ftp 登陆后的shello /sbin/nologin。当然也可以用命令 grep ftp /etc/group 查看ftp 组的信息,如下图所示:
wKioL1gkHDTgJs8pAACj1MM6QR0797.jpg

2、设置VsFTPD服务的自启动
默认情况下,该服务并未启动,可采用以下命令来检查其启动状态:chkconfig –list vsftpd
wKiom1gkHFKg49WoAADftaun_8o335.jpg

若要设置该服务在35运行级别时自动启动,则设置命令为:chkconfig –level 35 vsftpd on

wKioL1gkHGHzuOlZAAEYJLLtgBc469.jpg

3VsFTPD服务的启动脚本
vsftpd服务器的启动脚本/etc/rc.d/init.d/ 目录下,有一个名为vsftpd的服务启动脚本,利用该脚本,可以实现该vsftpd服务器的启动,重启,状态查询,停止操作如下图所示:
启动:、/etc/init.d/vsftpd start 停止 /etc/ init.d/vsftpd stop 重启 /etc/init.d/vsftpd restart  (/etc/init.d/ 是、/etc/rc.d/init.d 的软链接) 如下图所示:

wKioL1gkHHCh2EOzAADj3T8AI3I524.jpg

上面的设置在每3与第5运行级别上启动必须要等到下一次服务重启,这个vsftpd服务才会启动,如果我想现在就启动,就必须使用命令:/etc/init.d/vsftpd start 来启动
wKiom1gkHYjASsLbAADIDU7aboI491.jpg

4VsFTPD配置文件简介
/etc/vsftpd/vsftpd.conf  这里的vsftpd.confVsFTPD的主配置文件
另外还有加强VsFTPD服务器用户认证的 /etc/pam.d/vsftpd

禁止访问vsftpd的用户列表文件/etc/vsftpd.ftpusers 凡是该文件中包含的账户都不能访问VsFTPD服务。一般出于安全性,会把 root bin daemon等系统账户都写入该文件中。

/etc/vsftpd.user_list 用户列表文件,该文件中包含的用户可能是拒绝访问VsFTPD服务的,也可能是允许访问的,主要取决于主配置文件/etc/vsftpd/vsftpd.conf中的userlist_deny 参数的设置 YesNo

/var/ftp 提供服务的文件集散地它包括一个pub目录。在默认配置下,所有目录都是只读的,只有root用户具有写权限。

 

VsFTPD服务器安装并启动服务后,按其默认配置,就可以正常工作了,VsFTP 默认的匿名账户为ftp 密码也为ftp ,且默认是允许匿名用户登录,登录后所在的FTP站点根目录为 /var/ftp 目录linux系统ftp服务器的ip地址是 192.168.1.155 (服务器的防火墙关闭)
我用window 7 做为我的客户端进行登入:如下图所示:
wKioL1gkHeuA8IcnAAIHaN9k2Ho628.jpg如果用windows 7 下面的cmd 窗口也可以登入:如下图所示:
wKioL1gkHgyTIDTKAAIHaN9k2Ho285.jpgcmd 窗口界面用命令 dir 可以查看ftp 共享文件夹 pub
pwd 查看当前目录
mkdir 建立目录
rm 删除目录
getmget 下载文件
put mput 上传文件

需要注意的是,以匿名身份登录后是没有写权限和上传文件的权限的。另外在进行匿名登录时可以用ftp登录,也可以用anonymous 身份登陆的。如下图所示:
wKioL1gkHiShyB_1AAJd_FalfAE247.jpg

关于匿名账户的高级配置,还需要对VsFTPD的主配置文件/etc/vsftpd/vsftpd.conf 中的相关参数进行设置

anonymous enable 控制是否允许匿名用户登入 YES为允许,NO为不允许,默认值是YES
no_anno_password 控制匿名用户登录时是否需要密码 YES为不需要 NO 为需要默认是NO
anno _root 设置匿名用户的根目录。匿名用户登录后,将被锁定到此目录下。主配置文件中无此项,默认值为“/var/ftp”
anno_world_readable_only 控制是否允许匿名用户下载可阅读文档。当值为YES时,允许用户下载可阅读文档;当值为NO时,只允许匿名用户浏览整个服务器文件系统默认值为YES
anon upload enable 控制是否允许匿名用户上传文件。YES为允许,NO为不允许,默认值为NO. 除了这个参数外,还需要两个条件,即write_enable参数为YES,以及在文件系统上,FTP匿名用户对某个目录有写权限。
anon_mkdir_write_enable 控制是否允许匿名用户创建新的目录。YES为允许NO为不允许,默认值为NO ,在文件系统上,FTP匿名用户必须对新目录的上层目录拥有写的权限。
anon_other_write_enable 控制匿名用户是否拥有除了上传和新建目录之外的其它权限,如删除、更名等。
下面我们用cat 命令打开VsFTPD的主配置文件
/etc/vsftpd/vsftpd.conf 来具体查看一下,与匿名用户相关的几个重要参数。

wKiom1gkHqLBdnYsAAJQGL263BE079.jpg

Anonymous_enable 的值设置为了yes 即允许匿名用户访问local_enable 用来设置是否允许本地用户访问FTP 服务器默认值为YES 表示允许本地账户登录访问。参数write_enable是设置是否允许向FTP服务器进行各种写入操作,默认值为YES ,表示允许,参数anon_upload_enable 的值设置为了YES即允许匿名用户上传文件,但这里被注释掉了,未生效,参数 anon_mkdir_write_enable 的值设置为了YES允许匿名用户创建新目录这个也被注释掉了。
如果后两个全都打开了,会是怎么样的?

答案是还是上传不了,因为你上传上来上来的默认目录文件夹是/var/ftp/pub 而这个目录的

属主与属组是都是 root 用户,你登陆的是匿名用户,当然不会让你在里面写入文件或目录。
对于 /var/ftp/pub 我们可以做如下处理
chgrp ftp /var/ftp
wKiom1gkHvuz0jh2AAEnnZhlZ-k320.jpg/var/ftp  这个目录的属组变为ftp 匿名用户组,使用命令chown ftp:ftp /var/ftp/pub
/var/ftp/pub 这个目录的属主变为ftp 属组也为ftp
wKioL1gkHxLQiaN8AAFKBlc41Uw822.jpg接下来是否可以上传与下载文件了?答案是不能。因为如果你是新建的ftp服务器,你服务器上的 selinux 还没有关闭你可以使用 命令setenforce0 将其关闭 然后就应该可以了。

 

如果你想让匿名用户除了有上传下载之外的权限,比如说删除,你可以在ftp服务的配置文件里面/etc/vsftpd/vsftpd.conf  加入一条anon_other_write_enable=yes就可以了,这样真正的匿名共享完成,但一般不需要加入,你想一下,如果别人把你上传的东西都删除了,肯定不好,小心使用。

Linux 系统FTP服务器匿名用户实施小结

1、  如果服务器上没有安装ftp服务的vsftpd服务,可以使用yuminstall vsftpd –y 进行安装。

2、  安装完vsftpd 服务后,使用命令/etc/init.d/vsftpdstart 开启ftp 服务。在vsftpd 安装成功后,系统会自动创建共享目录/var/ftp/pub 也会创建匿名用户组ftp 与匿名用户ftp
这个匿名用户的用户密码是ftp 但记住这个ftp 的用户是不能登陆linux服务器使用的。
因为你们可以使用grep ftp /etc/passwd 命令来查看它是 /sbin/nologin 不被登陆使用的虚拟用户。以后所有的匿名用户都可以划分在ftp组里面。

3、  下面就是配置ftp的配置文件 /etc/vsftpd/vsftpd.conf里面 anon_upload_enableanon_mkdir_write_enable前面的#去掉

4、  然后调节文件系统权限/var/ftp/pub 属主改为ftp 属组改为ftp 就可以了。

5、  这样匿名用户可以上传下载,但是不能删除ftp共享里面的文件,如果想要有其他权力可以在配置文件里面加入 anon_other_write_enable=yes (但是这一条很危险)

 

指定账户访问FTP服务器

对于有较高安全性的FTP服务器一般不允许匿名访问,更常见的方式是使用本地账户来登陆和访问FTP服务器。所以,在使用和访问FTP服务器之前,就根据需要,先创建好所需的FTP账户。另外,作为FTP登陆使用的账户,其shell应设置为“/sbin/nologin” 以使用账户来登陆ftp 而不能用来登录linux系统

 

可以根据不同的需要,将不同账户的shell设置成不同的值,典型的设置如下:
若要使某个用户账户不能登录Linux 只需设置该用户所使用的shell/sbin/nologin即可,如对于ftp账户,一般只能用用来登录FTP服务器而不能用来登录Linux 操作系统。

若要让某用户没有telnet 权限,则应该设置该用户使用的shell/bin/true即可

创建用户和用户组,因此不再需要创建,下面直接直接创建用户账户 openftp 之前先要创建其宿主目录 /data/kfp

 

接下来使用 useradd 命令创建指定账户openftp

使用命令:useradd openftp –g ftp –d /data/kfp –s /sbin/nologin –c “ftp user”

wKioL1gkH0OBS096AAG5PUIsjNY445.jpg

使用echo “cisco”|passwd –stdin openftp
wKiom1gkH1TBZcFVAAE-ZgC02zQ614.jpg

设置用户主目录的所有者,所属的组和权限
使用命令 chown openftp:ftp /data/kfp  将目录/var/kfp 原来的所有组root,所有者 root 改成现在的所有者是openftp 所属的组是ftp;
wKioL1gkH2TRB-SyAAFBv6ZPdK8794.jpg要想实现登录ftp 需要账户与密码,一定要修改/etc/vstftpd/vsftpd.conf 里面的anonymous_enable=yes  (yes改为no) 即可,如下图所示在windows7下面的cmd窗口中测试。
wKiom1gkH3SCkSDbAADuBpFxDTQ271.jpg

 

看到没,使用openftp 这个账户登录,直接进入了我们给这个账户指定的宿主目录 /data/kfp
这里面一定注意了,这里有一个大的安全隐患!就是可以在这个界面里面直接切换到linux 的根目录,并查看到所有文件如下图所示。
wKiom1gkH__h21RtAAFIQTTNVxM216.jpg

如何解决这一问题  这需要在FTP服务器的配置文件里进行修改指定,/etc/vsftpd/vsftpd.conf  里面的local_enable默认为yes (下面的参数需要在这个为 yes前提)
chroot_local_user 控制本地用户是否锁定在其宿主目录下。Yes为是 NO 为不是,默认是NO 我们需要改为yes , 我们使用vi 进行修改然后重启ftp 启服务如下图
wKioL1gkIBei_n9eAAcyyWqAxB4752.jpg

我们再进行测试:在windows7 下的cmd 窗口。
wKioL1gkIFCQ0AARAAC0yE3XM4Y024.jpg

如上图所示:我们已经将基锁定在宿主目录了 /data/kfp

 

如果一个公司开发部10个人,那么我可以给这10个人每人建立一个账户与密码使用他们都能在ftp 服务器上有自己的文件夹,只有自己能在自己的文件夹下面添加删除文件(等同于上传下载),还建一个公用的,就是大家都可以在里面上传下载,删除

如,我以二个人的名字建立liuhongxia  qiuzhaoyuan
我在服务器上增加这两个账户并将其宿主目录分别指定为 /data/kfp/liuhonxia  /data/kfp/qiuzhaoyuan

 

使用命令:mkdir /data/kfp/liuhonxia –p mkdir /data/kfp/qiuzhaoyuan –p 如下图所示

wKiom1gkIGnjmhZTAAHyyaEfHKY569.jpg

 

使用useradd liuhonxia –g ftp –d /data/kfp –s /sbin/nologin –c “ftp user”
useradd qiuzhaoyuan –g ftp –d /data/kfp –s /sbin/nologin –c “ftp user”

使用命令 echo “cisco”|passwd –stdin liuhonxia
echo “cisco”|passwd –stdin qiuzhaoyuan 

使用命令tail -2 /etc/passwd 如下图所示
wKiom1gkIIGChFmJAAEhiPW34S8251.jpg

使用命令 chown linuhonxia:ftp /data/kfp/linuxhonxia  
chown qiuzhaoyuan:ftp /data/kfp/qiuzhaoyuan

改变这两个文件夹的属主与属组。如下图所示:
wKioL1gkII3zwexIAAEwknE8hp4212.jpg

再建立一个公有的文件夹 public 使所有的有账户的人群在里面具有所有的权限。如下图所示:
wKioL1gkIJuCmOPYAAHLxnUxi1E983.jpg

这样就真正实现了上述所需要的。这里很多人想把/data/kfp/public 这个文件夹的权限改为777 这样做不好。因为所有有账户的用户,他都属于ftp 这个组里面,所以只要属主有权限读写就可以了。

 

下面可以测试一下了。应该是可以了,可以在windows 7 资源窗口测试。

完结。

 

总结:
指定账户访问FTP服务器需要指定好用户的宿主目录,以及在这个宿主目录下,文件系统给定用户文件夹的权限。