设为首页 收藏本站
查看: 1878|回复: 0

[经验分享] linux系统ftp服务器详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-11 09:28:10 | 显示全部楼层 |阅读模式
匿名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
若要设置该服务在3和5运行级别时自动启动,则设置命令为:chkconfig –level 35 vsftpd on
wKioL1gkHGHzuOlZAAEYJLLtgBc469.jpg
3、VsFTPD服务的启动脚本
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
4、VsFTPD配置文件简介
/etc/vsftpd/vsftpd.conf  这里的vsftpd.conf是VsFTPD的主配置文件
另外还有加强VsFTPD服务器用户认证的 /etc/pam.d/vsftpd
禁止访问vsftpd的用户列表文件是/etc/vsftpd.ftpusers 凡是该文件中包含的账户都不能访问VsFTPD服务。一般出于安全性,会把 root bin 和daemon等系统账户都写入该文件中。
/etc/vsftpd.user_list 用户列表文件,该文件中包含的用户可能是拒绝访问VsFTPD服务的,也可能是允许访问的,主要取决于主配置文件/etc/vsftpd/vsftpd.conf中的userlist_deny 参数的设置 为Yes或No
/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.jpg 在cmd 窗口界面用命令 dir 可以查看ftp 共享文件夹 pub
pwd 查看当前目录
mkdir 建立目录
rm 删除目录
get或mget 下载文件
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_enable与anon_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服务器需要指定好用户的宿主目录,以及在这个宿主目录下,文件系统给定用户文件夹的权限。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-298738-1-1.html 上篇帖子: 解决vsftp无法启动问题 下篇帖子: vsftp安装及配置 ftp服务器 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表