FTP是文件传输协议,是用于Internet上的控制文件的双向传输。用户可以通过客户机程序从远程主机上下载或者向远程主机上传文件。

linux系统中,如果不了解SELINUX,需要将SELINUX下的enforing改为disabled,否则在进行上传或者下载时会有影响。

1、vsftpd服务的安装

在有yum源的前提下,输入"yum install vsftpd.x86_64 lftp.x86_64 -y"安装vsftpd服务,"vsftpd"是用来发布文件的,"lftp"是用来访问其他客户端的。完成后输入"systemctl start vsftpd"开启vsftpd服务,输入"systemctl enable vsftpd"使得开机启动服务。

可以输入"lftp ip"来验证是否可用。

这样配置完成后,其他用户是无法通过FTP访问这台主机的vsftpd服务的,因为防火墙没有允许此服务。需要进行防火墙配置,输入"firewall-config"进入防火墙图形管理界面,将上方的"Runtime"改为"Permanent",选中"public"下的"ftp",完成后点击"Options"选择其中的"Reload Firewalld"即可。至此其他主机就可以访问这台主机的vsftpd服务了。

2、本机访问的权限限制

可以编辑vsftpd服务的配置文件"/etc/vsftpd/vsftpd.conf"来对本机用户的访问进行限制。

如下图所示,将"anonymous_enable=YES"中的"YES"改为"NO",则匿名用户将无法登陆。

将"local_enable=YES"中的"YES"改为"NO",则本地用户将不能登陆。

将"write_enable=YES"中的"YES"改为"NO",则本地用户的写入权限将被取消,即无法进行上传和删除。

3、匿名用户的限制

由下图可以看出,匿名用户登陆默认没有上传权限。如果匿名用户需要上传文件,就需要将"/etc/vsftpd/vsftpd.conf"文件中第29行的"anon_upload_enable=YES"打开,然后输入"chgrp ftp /var/ftp/pub"改变默认目录的用户组,并为了安全输入"chmod 775 /var/ftp/pub",给用户组和所有人以读写权力。完成后,输入"systemctl restart vsftpd"重启服务即可使匿名用户上传文件。

匿名用户本身是对vsftpd服务没有写权限的,即不能重命名和删除文件。如果需要,可以在配置文件中输入"anon_other_write_enable=YES",如下图所示,重启服务后,匿名用户就可以重命名和删除文件了。

匿名用户默认没有建立目录的权限,如果需要建立目录的权限,则需要配置文件中第34行的"anon_mkdir_write_enable=YES"开启,重启服务就可以在访问时创建目录了。

匿名用户默认没有下载文件的权限,如果需要下载,就需要在配置文件中输入"anon_world_readable_only=NO",重启服务后,匿名用户就可以下载文件了。

匿名用户登陆后的默认目录在"/var/ftp"下,如果需要更改默认登陆目录,则需要在配置文件中输入"anon_root=/目录",此目录必须是存在的目录,如下图中的"/we",并在其中建立"linux{1..5}"子目录,重启服务后,再次匿名登陆默认目录就为设定的目录。

如下图所示,匿名用户默认上传文件的权限为"600",如果需要改变上传文件的权限,则需要在配置文件中输入"anon_umask=022",权限可以自己设定,此处"022"只是举例,重启服务后重新上传文件,则文件权限就会改变。

如下图所示,匿名用户上传文件后,文件的所有人id为14,即为ftp,如果需要改变上传文件的所有人,则需要开启配置文件中的第52行"chown_uploads=YES"和第53行"chown_username=whoever",并且把"whoever"改为用户名称,例如"we"。完成后重启服务,上传文件后文件的所有人就会变为"we"。

但是需要注意的是,开启文件上传所有人变更后,会使得之前设置的"anon_umask=022"失效,如果需要改变上传文件权限,就需要在配置文件中输入"chown_uploads_mode=0644",在其中输入文件上传后的权限"0644",而不是保留权限"umask"。

有时候需要对匿名用户的下载速度进行限定,如下图所示,下载速度为"68.68M/s",在配置文件中输入"anon_max_rate=xxxxxx"即可设置最大下载速度,xxxxx为字节数,例如下图设置的"102400"即是最大下载速度为"100K/s"。重启服务后生效。

也可以通过在配置文件中输入"max_clients=x"来设置最多可以有x个用户同时连接。

4、普通用户的限制

普通用户登陆时的写权限和下载权限还有上传权限都是默认开启的,普通用户登陆后所在位置为自己的家目录,如果需要改变这个目录,与匿名用户类似,在配置文件中输入"local_root=/目录"。

由下图可以看出,在不进行设定时,普通用户可以直接进入所访问主机的根目录,这无疑是非常危险的,所以需要将普通用户锁定在自己的家目录当中。将配置文件中第105行的"chroot_local_user=YES",则普通用户将只能被锁定在自己的家目录当中,不能进入其他目录。

上述设置对象为全部普通用户,如果需要对一些用户进行设定,就可以进行家目录锁定的白名单或者黑名单的设定。

白名单的设定是"chroot_local_user=YES"时,开启第106行"chroot_list_enable=YES"和第108行"vim /etc/vsftpd/chroot_list","/etc/vsftpd/chroot_list"这个文件是不存在的,需要自己建立,如下图所示,在此文件中没有写入任何用户时,所有用户都被锁定在家目录中,在其中输入用户名称,如输入"we",则we用户就可以访问其他目录了,其他用户则不可以。

黑名单的设定时将"chroot_local_user=YES"中的"YES"改为"NO",此时名单中的we用户就会被锁定在家目录中,而其他用户没有限制。

linux初学者-ftp篇(一)的更多相关文章

  1. linux初学者-SElinux篇

    linux初学者-SElinux篇 SElinux是强制访问控制(MAC)安全系统,是linux历史上最杰出的新安全系统.对于linux安全模块来说,SElinux的功能是最全面的,测试也是最充分的, ...

  2. linux初学者-firewall篇

     linux初学者-firewall篇 firewalld是防火墙的另一种程序,与iptables相同,但是使用起来要比iptables简单的点,不需要了解3张表和5条链也可以使用. 1.firewa ...

  3. linux初学者-iptables篇

     linux初学者-iptables篇 iptables是防火墙的一种,是用来设置.维护和检查linux内核的IP过滤规则的,可以完成封包过滤.封包重定向和网络地址转换(NAT)等功能. iptabl ...

  4. linux初学者-mail篇

     linux初学者-mail篇 邮件是在生活中比较常用的一个工具,在linux系统中的邮件也是.在linux中,邮件的发送所用的服务时postfix,邮件的接收所用的服务是pop(110端口).ima ...

  5. linux初学者-Apache篇

     linux初学者-Apache篇          Apache提供了超文本传输协议http,httpd是Apache超文本传输协议的主服务器.下文将对httpd的安装和配置进行简单的叙述.     ...

  6. linux初学者-iscsi篇

     linux初学者-iscsi篇         之前介绍过网络文件共享系统NFS和CIFS.在系统中,设备也是可以共享的,这就是iSCSI,它可以用来建立和管理IP存储设备.主机和客户机等之间的相互 ...

  7. linux初学者-磁盘阵列篇

    linux初学者-磁盘阵列篇 在磁盘的使用中,有时候需要提高磁盘的读写数据速度,就要用到磁盘组——raid,也就是磁盘阵列. 磁盘阵列是由最少两块以上的磁盘组成的,raid有许多模式,在这里将介绍其中 ...

  8. linux初学者-进程篇

    linux初学者-进程篇 不管是windows还是linux,都有进程,那么什么是进程呢?进程就是cpu未完成的工作.下面会介绍一些关于系统中进程的查看以及管理的方法. 1.命令 1.1.命令使用 查 ...

  9. Linux之FTP篇

    内容简介: vsftpd的安装 目录介绍 配置参数解释 锁定用户目录 其他用户不能登录 -------------------------------------------------------- ...

随机推荐

  1. 使用 docker 搭建 nginx+php-fpm 环境 (两个独立镜像)

    :first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdow ...

  2. 条款09:绝不在构造和析构过程中调用virtual函数

    不该在构造函数和析构函数期间调用virtual函数,这一点是C++与jave/C#不同的地方之一. 假设有一个class继承体系,用来模拟股市交易如买进.卖出的订单等等.这样的交易一定要经过审计,所以 ...

  3. sublime3使用笔记

    1.ctrl+n 新建一个文件: 2.alt+shift+数字 分屏显示: 3.ctrl+alt+down(向下键) 连选很多行的指定开始位置: 如图: 紧接着再按shift+right(选中需要更改 ...

  4. RocketMQ(2)---Docker集群部署RocketMQ

    RocketMQ(2)-Docker集群部署RocketMQ =前言= 1.因为自己只买了一台阿里云服务器,所以RocketMQ集群都部署在单台服务器上只是端口不同,如果实际开发,可以分别部署在多台服 ...

  5. 08 Javascript的函数

    函数:就是将一些语句进行封装,然后通过调用的形式,执行这些语句. 函数的作用: 将大量重复的语句写在函数里,以后需要这些语句的时候,可以直接调用函数,避免重复劳动. 简化编程,让编程模块化. cons ...

  6. Django 强大的ORM之增删改查

    Django orm         Django——orm进阶 测试Django中的orm 表结构: models.py class User(models.Model): name = model ...

  7. net开发框架never

    [一] 摘要 never是纯c#语言开发的一个框架,同时可在netcore下运行. 该框架github地址:https://github.com/shelldudu/never 同时,配合never_ ...

  8. 【JVM】虚拟机初见-运行时数据区图解

    本文是听咕泡XX公开课视频整理的笔记,较书本更为总结,感谢. 计算机模型(汇编知识):数据集(数据).指令集(操作指令,+-等).控制集(分支循环) JVM运行时的数据区: 程序计数器(每个线程都有) ...

  9. Ace-Admin框架-首页(一)

    ACE-Admin是一个强大的后台模板框架,看起来非常漂亮,但是每个页面内容太多,看起来不知道怎么修改,现在来对首页进行主要内容改装,将不需要的内容都给删除,然后就只剩下一个框架,在开发中,我们就完全 ...

  10. Java学习笔记——I/O流常用类之间的继承关系及构造方法

    朝辞白帝彩云间,千里江陵一日还. 两岸猿声啼不住,轻舟已过万重山. ——早发白帝城 总结一下有哪些I/O流: 输入流方法主要是read()和close(),输出流方法主要是write().flush( ...