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. Android消息机制架构和源码解析

    http://wangkuiwu.github.io/2014/08/26/MessageQueue/

  2. 3015C语言_流程设计

    第五章 流程设计 5.1 C语句概述 C语言的语句用来向计算机系统发出指令,一个实际的源程序通常包含若干语句,这些语句用来完成一定的操作任务. 1.其他类型语句 函数调用语句(由函数调用加一个分号构成 ...

  3. ORACLE(系统表emp) 基本与深入学习

    (一).首先我们先创建emp表(系统有的可以跳过往下看)没有直接复制运行即可.create table DEPT( deptno NUMBER(2) not null, dname VARCHAR2( ...

  4. 《HelloGitHub》第 39 期

    兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...

  5. kali 源文件 更改和使用 更新日期:2018.04.21

    我的公众号,正在建设中,欢迎关注: 0x01 源文件格式: kali下常用的更新命令有: apt-get install update和apt-get install upgrade,update是下 ...

  6. ASP.Net Core2.1 秒杀项目一步一步实现CI/CD系列一

    前言:有一段时间没写博客了,那是因为博主菜,需要学习和准备,这不带来了本系列的文章.在这里我把学习的心得分享出来,有些点理解的也不是太到位,希望大佬们能多多给点建议和指导.下半年就把这个系列的文章写完 ...

  7. CentOS 网络互通情况下把一个Linux服务器的文件发送到另一个服务器

    scp -r  文件名/目录名 root@192.168.2.144:/home/hsw -r   发送目录使用,表示把该目录下的所有子目录以及文件发送过去

  8. MyBatis从入门到精通(九):MyBatis高级结果映射之一对一映射

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中实现查 ...

  9. redux和react-redux做简单组件控制

    这次我们用两种方式实现以下要求 1.三个组件 2.第一个组件有两个按钮 分别控制第二和第三个组件年龄和姓名的改变 3第二个组件展示姓名,第三个组件展示年龄 用到哪些插件 store  redux 一 ...

  10. Vue技术点整理-安装引入

    Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架 所谓渐进式是指: 1,如果你有一个现成的web应用,你可以将vue作为该应用的一部分嵌入其中,带来更丰富的交互体验 ...