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. 在本地安装RabbitMQ Server教程以及可能遇到的问题及解决办法

    1. Download latest erlang OTP platform from : erlang:http://www.erlang.org/download.html (The latest ...

  2. spring boot热部署devtools

    1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 <!--添加依赖--> <dependency> <groupId>org.sprin ...

  3. ORACLE(emp)表习题与答案

    因为答案都是小编自己写的,解法可能有多种,如果您觉得我的解法有误,希望您有时间给我留言. 一.习题 (1) 查询20部门的所有员工信息. SELECT * FROM emp where deptno ...

  4. Tido 习题-二叉树-最高分

    题目描述 老师想知道从某某同学到某某同学当中,分数最高的是多少.现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入 输入包含多组测试数据.每组输入第一行是两个正整数N和M(0& ...

  5. 使用wait/notify实现线程间的通信

    之前对Java多线程中的wait/notify机制理解都不是很清晰,最近看了一本技术书,通过里面的讲解再配上一些博客,终于算是对wait/notify有了进一步的理解. 下面就来说说我对这两个方法的认 ...

  6. Java接口中的成员变量默认为(public、static、final)、方法为(public、abstract)

    interface”(接口)可将其想象为一个“纯”抽象类.它允许创建者规定一个类的基本形式:方法名.自变量列表以及返回类型,但不实现方法主体.接口也可包含基本数据类型的数据成员,但它们都默认为publ ...

  7. 大流量下的 ElasticSearch 搜索演进

    这是泥瓦匠(bysocket.com)的第27篇精华分享 ES (ElasticSearch)是分布式搜索引擎.引擎太晦涩,其实类似一个 MySQL ,一个存储.方便提供下面功能: 近实时搜索 全文检 ...

  8. RabbitMq-安装篇

    嘿,大家好,今天更新的内容是rabbitMq的安装篇~~ windows下安装rabbitMq rabbitMq下载地址:点我下载 1.由于rabbitMq用erlang语言开发,所以安装rabbit ...

  9. 使用pymysql操作mysql数据库

    PyMySQL的安装和连接 PyMySQL的安装 python3. -m pip install pymysql python连接数据库 import pymysql # 创建连接 conn = py ...

  10. vue-cli初始化项目

    vue init webpack cnpm install npm run dev   初始化项目 我们用vue init命令来初始化项目,具体看一下这条命令的使用方法. vue init <t ...