linyuxb-123

linux 系统下搭建ftp服务器

linux 系统下搭建ftp服务器一点都不难,初次进行配置的时候花了很多时间进行linux命令扫盲,故写下这篇博客。

环境:
window操作系统中安装SecureCRT 和 FlashFXP 软件
服务器端的操作系统为centos7.3
在客户端 使用SecureCRT 软件 root 帐号远程登录服务器端

重点记录:

  • 相关用户的创建、修改
  • 文件的权限控制
  • ftp登录用户白名单
  • 根目录切换

ftp是什么

FTP是 File Transfer Protocol 文件传输协议的英文名称,用于在Internet上控制文件的双向传输. 同时它也是一个应用程序.一般的Linux系统默认带有ftp软件或者是vsftpd

搭建ftp服务器目的

从window系统上传程序文件到linux系统的服务器里

检查安装vsftpd软件

要使用到的linux命令:

  • “|”: 管道,把前一个命令的结果当成后一个命令的输入

  • rpm: RPM Package Manager RPM软件包管理器 ,和 RedHat有关,

  • grep: Globally search a Regular Expression and Print 全局匹配正则搜索并打印

  • yum: Yellow dog Updater,Modified,大黄更新与修改,基于rpm 的软件包管理器

查看所有的安装的软件包 并在结果中查找包含vsftp 的文件

rpm -qa | grep vsftpd

卸载linux中的vsftpd服务端软件

  rpm -e vsftpd安装版本号

如果没有装则使用yum命令安装

yum -y install vsftpd

创建用户

使用useradd命令:
useradd username ,默认在/home文件夹下创建一个和username一样名称的文件作为该用户所拥有的文件

useradd xiao   
passwd xiao   #(回车)给用户xiao设置登录密码

创建用户并指定用户目录

在/var 目录下创建一个 www 文件夹,www文件夹中创建一个site文件夹一个da文件夹

cd /var
mkdir www
cd www
mkdir site
mkdir da

创建用户da并指定用户目录为/var/www/da

useradd -d /var/www/da da
passwd da

修改xiao用户的用户目录为/var/www/site

usermod -d /var/www/site xiao

备注:

  如果修改xiao的操作失败提示有相关进程在使用这个用户,则先杀死这些进程后再修改

  ps -u xiao | awk \'{print $1}\' | grep -vi pid | xargs kill -9

  创建用户+目录全向+重置密码:
  useradd ftpuser
  chown -R ftpuser.ftpuser /usr/ftpdata/
  passwd ftpuser

查看新创建的用户的信息

tail:默认显示指定文件的末尾10行

tail /etc/passwd

这里写图片描述

/etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,解释如下
(1):用户名。
(2):密码(已经加密)
(3):UID(用户标识),操作系统自己用的
(4):GID组标识。
(5):用户全名或本地帐号
(6):开始目录
(7):登录使用的Shell,就是对登录命令进行解析的工具。

配置/etc/vsftpd/vsftpd.conf文件

查看下该文件里有些啥

cat /etc/vsftpd/vsftpd.conf

切换当前工作目录到/etc/vsftpd

cd /etc/vsftpd

启用可以登录ftp的用户白名单配置

vi vsftpd.conf

输入:/userlist 在vsftpd.conf文件中查找userlist 相关配置 .
按下i键进入insert模式,
将按下图配置 三个选项,则user_list文件为ftp用户白名单
按下esc键退出输入模式进入命令模式
输入:wq 保存并退出
这里写图片描述

userlist_enable=YES     #启动用户列表
userlist_deny=NO        #决定是否对用户列表的用户拒绝访问ftp 
userlist_file=/etc/vsftpd/user_list

主动模式:(公司内网使用可以选择此模式)

  # vi /etc/vsftpd/vsftpd.conf

  port_enable=YES

  connect_from_port_20=YES

被动模式:(需要映射到公网的就选择此模式,想对安全)

  # vi /etc/vsftpd/vsftpd.conf
  connect_from_port_20=NO

  pasv_enable=YES(被动模式开启)
  pasv_min_port=3010(最小端口)
  pasv_max_port=3015(最大端口)

  pasv_address=公网IP地址(非常重要这个)

  说明:最小端口、最大端口范围最好是5-10端口就行,方便公网开通对应端口,端口数量太少,可能会导致有时候能连接上,有时候连接不上。

配置说明:

anonymous_enable=NO     #禁止匿名用户登录 

local_enable=YES               #允许本地实体用户登录 
write_enable=YES               #允许用户上传数据  
local_umask=022                #建立新目录(755)与文件(644)的权限  
dirmessage_enable=YES  #若登录目录下有.message则会显示该文件内容  可以自己在登录目录下创建.message文件并写入信息  
xferlog_enable=YES           #启动日志文件记录,记录于/var/log/xferlog 
connect_from_port_20=YES #支持主动式连接功能 
xferlog_std_format=YES    #支持WuFTP的日志文件格式 
local_root=/home/xx/ftp      #限制登录用户只能在/home/xx/ftp目录下操作 
chroot_local_user=YES     #限制登录用户在主目录内local_root定义目录 
chroot_list  listen=YES       #使用stand alone方式启动vsftpd  
pam_service_name=vsftpd           #支持PAM模块的管理
userlist_enable=YES         #支持/etc/vsftpd/user_list文件内的账号登录控制 
tcp_wrappers=YES            #支持TCP Wrappers的防火墙机制

ftp服务器中三种用户模式

1、匿名用户:

用anonymous账号,不用输入密码就能够进入ftp服务器。

此用户模式非常不安全,一般不采用。如果需要详情见网上连接:https://www.cnblogs.com/revo/p/7444897.html

2、本地用户:

首先在linux中需要创建用户,然后将创建的用户添加到ftp服务器的白名单中,然后该用户才可以登录ftp服务器。

默认用户可以登录ftp,也可以通过sftp登录上去查看其它资源,可以让用户只登录ftp,不能通过sftp方式登录服务器。

此用户模式比匿名想对安全,需要限定ftp用户不能通过sftp方式访问22端口的服务器资源就更加安全了。

3、虚拟用户:

就是不需要创建linux中实际账号,只需要配置虚拟用户、生成数据文件配置就行,详情见网上连接:https://www.cnblogs.com/revo/p/7444897.html

4、禁止ftp用户ssh登录(安全问题可以解决):

  禁止ftp用户ssh登录:

  查看/etc/shells文件,找到nologin的路径

 

  执行命令:

usermod -s /sbin/nologin 用户名称

  解除ftp用户ssh登录禁止:

  查看/etc/shells文件,找到bash的路径

 

  执行命令:

usermod -s /bin/bash 用户名称

在user_list中写入 da和xiao这个两个用户

vi user_list

按下i键进入insert模式,
一行一个用户名,输入 da 和xiao
按下esc键退出输入模式进入命令模式
输入:wq 保存并退出

查看vsftpd 服务的运行状态

  systemctl status vsftpd

  如果最后一条状态是stoped则启动vsftpd

  systemctl start vsftpd 

  如果最后一条状态是started则重启vsftpd

  systemctl restart vsftpd

在window系统中使用FlashFXP 客户端登录

使用da 和xiao 用户分别登录,发现在客户端可以浏览整个linux系统的文件夹
继续配置vsftpd.conf 文件,

配置vsftpd.conf 锁定根目录

local_root= /var/www        #本地用户登录后自动转到的ftp根目录
chroot_local_user=YES       #将所有用户限定在指定的主目录内
chroot_list_enable=NO       #不启用列外的用户列表
chroot_list_file=/etc/vsftpd/chroot_list  #指定列外的用户列表文件

配置完之后重启vsftpd服务

使用FlashFXP 客户端登录并创建文件夹

使用da用户名登录,在da文件夹中创建一个新的文件夹test
这里写图片描述

结果失败

配置文件夹权限

切换工作目录到/var/www

cd /var/www

查看www文件夹中所包含的文件的信息

ll

这里写图片描述
上图显示的信息为,
1. da和site文件夹属于root用户,属于root用户组, 因为是root用户创建的文件夹
2. root用户可以对da和site文件夹进行r(读),w(写),x(执行)等操作
3. root用户组内的用户可以对da和site文件夹进行r(读),x(执行)等操作
4. 其他用户可以对da和site文件夹进行r(读),x(执行)等操作.

da 和 xiao 这两个用户属于其他用户 故不能执行创建文件夹(写)的操作

改文件的权限,将da的拥有者改为da,site的拥有者改为xiao

chown da:da da

这里写图片描述

chown xiao:xiao site

这里写图片描述

这个时候 他们可以在各自拥有的文件夹这创建文件 ,但不可以到对方的文件夹中创建文件

修改da用户的所属用户组,并修改site文件夹的权限
把da用户纳入 xiao的用户组

usermod -g xiao da

这里写图片描述
如图所示:da用户的用户组id值和xiao的用户组id值变得一样了

修改site文件夹的权限,允许同一个用户组的用户拥有rwx权限

chmod 775 site

这里写图片描述
此时da 用户可以在site文件夹中创建新的文件夹

权限值的解读

文件夹权限:
r==>可读 w==>可写 x==>可执行
r=4 w=2 x=1
777 代表 rwxr-rwx-rwx 所有用户都可读可写可执行。


分类:

技术点:

相关文章: