ftp 占用20   21两个端口

安装vsftpd程序

键入命令    yum install vsftpd -y

清空默认的防火墙默认规则:

[root@linuxprobe ~]# iptables -F

保存清空后的防火墙规则表:

[root@linuxprobe ~]# service iptables save

分析ftp的主配置文件

主配置文件长达123行,但大部分是以#号开始的,这些都是注释信息,我们可以过滤掉它们。
备份vsftpd的主配置文件:

[root@linuxprobe
~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak

过滤掉所有包含#号的行,并将过滤结果写回到vsftpd.conf文件中:

[root@linuxprobe
~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak >
/etc/vsftpd/vsftpd.conf

此时再分析下vsftpd程序的主配置文件吧:

[root@linuxprobe
~]# cat /etc/vsftpd/vsftpd.conf

安装ftp服务

接下来就是ftp的三种访问模式了   分别是  匿名访问模式   本地用户模式   虚拟用户模式

限免我们一一介绍

匿名访问模式

填写正确后保存并退出vsftpd.conf文件,然后重启vsftpd服务程序并设置为开机自启动。

[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd

在客户端尝试登入FTP服务

上面操作中已经将防火墙规则清空,在vsftpd.conf文件中也已经允许匿名用户创建目录与写入权限,那怎么会被拒绝了呢?

这里建议读者先不要往下看,思考后用自己的方法解决下这个问题,长期这样你的Linux的排错能力一定会练出来的。

回想前面的参数细节,匿名访问模式的FTP根目录为/var/ftp:

2.本地用户模式

键入命令   vim /etc/vsftpd/vsftpd.conf    更改参数

然后重启vsftpd服务程序并设置为开机自启动

vsftpd服务为了让FTP服务更加的安全,默认禁止以root身份登入,那么创建个普通用户吧:

在客户端尝试登入ftp

3.虚拟用户模式

因为虚拟用户模式的帐号口令都不是真实系统中存在的,所以只要配置妥当虚拟用户模式会比本地用户模式更加安全,但是Vsftpd服务配置虚拟用户模式的操作步骤相对复杂一些,具体流程如下:

第1步:建立虚拟FTP用户数据库文件。

第2步:创建FTP根目录及虚拟用户映射的系统用户。

第3步:建立支持虚拟用户的PAM认证文件。

第4步:在vsftpd.conf文件中添加支持配置。

第5步:为虚拟用户设置不同的权限。

第6步:重启vsftpd服务,验证实验效果。

建立虚拟FTP用户数据库文件。

切换至vsftpd程序目录:   [root@linuxprobe ~]# cd /etc/vsftpd/

创建用于生成FTP用户数据库的原始帐号和密码文件

使用db_load命令用HASH算法生成FTP用户数据库文件vuser.db

查看数据库文件的类型:

[root@linuxprobe vsftpd]# file vuser.db

vuser.db: Berkeley DB (Hash, version 9, native byte-order)

FTP用户数据库内容很敏感,所以权限给小一些:

[root@linuxprobe vsftpd]# chmod 600 vuser.db

删除原始的帐号和密码文件:

[root@linuxprobe vsftpd]# rm -f vuser.list

第2步:创建FTP根目录及虚拟用户映射的系统用户。

创建用户virtual并设置为不允许登陆系统并定义该用户的家目录:

[root@linuxprobe ~]# useradd -d /var/ftproot -s /sbin/nologin virtual

查看该用户的家目录权限:

[root@linuxprobe ~]# ls -ld /var/ftproot/

drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/

为保证其他用户可以访问,给予rwxr-xr-x权限:

[root@linuxprobe ~]# chmod -Rf 755 /var/ftproot/

第3步:建立支持虚拟用户的PAM认证文件:

[root@linuxprobe ~]# vim /etc/pam.d/vsftpd.vu

//参数db用于指向刚刚生成的vuser.db文件,但不要写后缀。

auth       required     pam_userdb.so db=/etc/vsftpd/vuser

account    required     pam_userdb.so db=/etc/vsftpd/vuser

第4步:在vsftpd.conf文件中添加支持配置。
既然要使用虚拟用户模式,而虚拟用户模式确实要比匿名访问模式更加的安全,配置的同时也关闭匿名开放模式。

[root@linuxprobe
~]# vim /etc/vsftpd/vsftpd.conf

第5步:为虚拟用户设置不同的权限

指定用户独立的权限配置文件存放的目录:

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir

创建用户独立的权限配置文件存放的目录:

[root@linuxprobe ~]# mkdir /etc/vsftpd/vusers_dir/

切换进入到该目录中:

[root@linuxprobe ~]# cd /etc/vsftpd/vusers_dir/

创建空白的linuxprobe的配置文件:

[root@linuxprobe vusers_dir]# touch linuxprobe

指定blackshield用户的具体权限:

[root@linuxprobe vusers_dir]# vim blackshield

anon_upload_enable=YES

anon_mkdir_write_enable=YES

第6步:重启vsftpd服务,验证实验效果。

然后客户端登入ftp  按照上边的步骤就好了

一个非常严重的问题

查看所有与ftp相关的SELinux规则:

[root@linuxprobe ~]# getsebool -a | grep ftp

设置SELinux对FTP服务的规则为允许:

[root@linuxprobe ~]# setsebool -P ftpd_full_access=on

此时再来创建文件或目录就没有问题了:

[root@linuxprobe ~]# ftp 192.168.10.10

Connected to 192.168.10.10 (192.168.10.10).

220 (vsFTPd 3.0.2)

Name (192.168.10.10:root): blackshield

331 Please specify the password.

Password:此处输入虚拟用户的密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>mkdir files

257 "/files" created

ftp>rename files database

350 Ready for RNTO.

250 Rename successful.

ftp>rmdir database

250 Remove directory operation successful.

ftp>exit

221 Goodbye.

我们只需要这样操作就好了

使用FTP服务的更多相关文章

  1. centos下开启ftp服务

    如果要ftp访问linux需要安装ftp服务,vsftpd是Linux下比较好的的FTP服务器. 一.检查安装vsftp //检查是否安装vsftpd rpm -qa | grep vsftpd // ...

  2. 关于linux服务器上搭建ftp服务的流程

    小龙最近折腾了一个阿里云的服务器,买完了就要开始做那么多那么多的功课,小龙对ssh也是一知半解的状态,做个小笔记,发布下整个ftp服务的搭建过程,大神勿喷:) 一.aliyun Linux(Redha ...

  3. mac下打开FTP服务

    MAC下打开FTP服务 周银辉 mac下一般用smb服务来进行远程文件访问,但要用FTP的话,高版本的mac os默认关掉了,可以用如下命令打开: sudo -s launchctl load -w ...

  4. 除非Microsoft FTP 服务(FTPSVC)正在运行,否则无法启动FTP站点。服务目前已停止

    ftp站点就建成了,试下启动,右击站点,"管理ftp站点"-"启动".如果启动不了,出现“除非Microsoft FTP 服务(FTPSVC)正在运行,否则无法 ...

  5. ftp服务配置文件记录

    因为南京的客户死活要ftp服务而不是sftp,所以我作手用vsftp作为服务器,尝试在windows ftp软件登录进去,特记录vsftp的用法. 配置文件在/etc/vsftpd.conf 有如下代 ...

  6. CentOS7 FTP服务搭建(虚拟用户访问FTP服务)

    概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FT ...

  7. 5. 网络配置与FTP服务笔记

    IP地址: Ipv4        2*32       Ipv6 tcp      网络通讯协议 udp    用户数据报协议 常见网络端口: 20  21      ftp服务 文件共享 22   ...

  8. win7配置ftp服务

    1.首先开启ftp服务 2.配置ftp站点 3.让ftp服务器通过防火墙 4.编辑ftp访问权限,使用户能通过账号密码访问ftp,当然,在此之前,需要创建一个新的用户 到此,就可以远程访问ftp了

  9. Linux安装FTP服务

    转自:http://blog.csdn.net/huangbiao86/article/details/6641952 ftp服务器 1.  在Linux和其他机器之间共享文件(在linux下安装ft ...

  10. ftpget 从Windows FTP服务端获取文件

    /********************************************************************************* * ftpget 从Windows ...

随机推荐

  1. CSL 的密码(后缀数组)

    CSL 的密码 题目传送门 解题思路 后缀数组.对于每一个后缀\(k\)都有\(n - k + 1\)个前缀,把所有不和前一个(排序后的)公共且长度大于\(m\)的前缀个数加起来. 代码如下 #inc ...

  2. django 视图与网址

    我是一个新手,内容粗糙,望大家多多指点.在这里我只是总结自身所学. 视图与网址 操作文件:urls.py.views.py urls.py 作用:用于处理前台的链接(如前台访问:127.0.0.1:8 ...

  3. luoguP1083 借教室(题解)(我用的线段树)

    luoguP1083 借教室 题目 #include<cstdio> #include<iostream> #include<cmath> #include< ...

  4. 实用js片段

    算法 //加法 add(10,2) //12 function add(a, b) { var c, d, e; try { c = a.toString().split(".") ...

  5. k8s 组件介绍-kube-controller-manager

    1. Controller Manager简介 Controller Manager作为集群内部的管理控制中心,负责集群内的Node.Pod副本.服务端点(Endpoint).命名空间(Namespa ...

  6. fiddler抓取手机端的数据流量包

    1.首先下载安装fiddler 2.然后打开fiddler,进入到tools-->options-->connections 3.然后进入到https 4.设置完成后,查找本机ip 然后打 ...

  7. Windows IIS PHP7 连接 SQLServer 2012

    下载 php7 对 SQL Server 的扩展 https://www.microsoft.com/en-us/download/details.aspx?id=20098 下载后 安装到一个 目录 ...

  8. 2019-11-7-WPF-How-to-get-plain-text-from-RichTextBox

    title author date CreateTime categories WPF How to get plain text from RichTextBox lindexi 2019-11-0 ...

  9. json_value.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MT_StaticReleas

    注意版本的提示mD  mt 注意动态mfc 还是静态mfc

  10. Servlet中如何获取用户提交的查询参数或表单数据?

    ①HttpServletRequest的getParameter()方法. ②HttpServletRequest的getParameterValues()方法. ③HttpServletReques ...