Linux FTP服务(只允许白名单用户访问FTP)

文章介绍了FTP服务器的作用、特点和传输协议,包括FTP的主动和被动模式。接着讲解了Vsftpd服务程序,特别是其三种认证模式,并提供了在Linux系统中安装和配置Vsftpd的步骤,包括创建黑白名单和禁用防火墙。最后,文章通过实验展示了如何通过FTP进行文件上传和用户登录验证。

目录

 一、FTP服务器

 二、FTP文化传输协议

 三、Vsftpd服务程序

四 、实验步骤


 一、FTP服务器

    FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务,常被用作文件共享和传输,并可根据用户实际需求设置访问权限,同时还具备跨平台的特性,是互联网中应用十分广泛的服务之一。

FTP服务是internet最早应用于主机之间进行数据传输的基本服务之一。它的特点:

(1)ftp简化了文件传输的复杂性,弄够独立于平台,不受计算机和操作系统类型的限制。无论是PC、服务器,还是Windows、linux、unix操作系统,都可以作为ftp客户端和服务器。

(2)ftp实现了可靠的数据传输。ftp是运行在TCP上的,这就保证了数据传输的正确性,并在发生错误的情况下修正。

(3)支持端点续传功能,极大方便用户并减少CPU和网络开销。

       FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。

       目前在局域网下建立的FTP服务器由于ADSL拨号后获得的IP不同,外网无法根据确定的IP地址访问到FTP服务器,而购买公网IP对于普通企业及个人用户来说,费用过于昂贵。目前常见的解决方法是通过路由器端口映射并将动态IP绑定至域名上,通过该域名访问内网FTP服务,这也就是大家熟知的DDNS动态域名解析。

 二、FTP文化传输协议

       FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。FTP服务器普遍部署于内网中,具有容易搭建、方便管理的特点。而且有些FTP客户端工具还可以支持文件的多点下载以及断点续传技术,因此FTP服务得到了广大用户的青睐。文件传输协议(File Transfer Protocol)定义了一个在远程计算机系统和本地计算机系统之间传输文件的标准。ftp运行在OSI参考模型的 应用层,利用传输控制协议TCP在不同的主机之间提供可靠的数据传输。

FTP的传输模式有两种:

主动模式:FTP服务器主动向客户端发起连接请求。
被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)。

(防火墙一般是用于过滤从外网进入内网的流量,因此有些时候需要将FTP的工作模式设置为主动模式,才可以传输数据。)

 三、Vsftpd服务程序

vsftpd作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上。

匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。

本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。

虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

ftp是Linux系统中以命令行界面的方式来管理FTP传输服务的客户端工具。我们首先手动安装这个ftp客户端工具,以便在后续实验中查看结果。

四 、实验步骤

1.安装vsftpd软件包:

首先搭建实验环境,需要安装 vsftpd ,vsftpd :“very secure FTP daemon”,简单说 vsftpd 是一款 ftp 服务器,支持 ftp 协议,最大特点:安全性;搭建 ftp 服务器的目的:从 windows 系统传程序文件到 linux 系统服务器。安装vsftpd软件包:

[root@localhost ~]# yum -y install vsftpd

2.备份主配置文件:

[root@localhost ~]# cp  /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak

[root@localhost ~]# ls  /etc/vsftpdftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

3.去掉#号开头的行:

[root@localhost ~]# grep -v "^#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf

4.创建黑、白名单的目的:约束、允许某些特定用户登录系统,例如,一般禁止 root 登录 FTP,权限过高可能导致核心文件受到破坏。编辑主配置文件,启用白名单:

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

 

 5.编辑名单文件user_list ,添加zhangsan、lisi:

[root@localhost ~]# vi /etc/vsftpd/user_list

 6.在系统中添加本地账号zhangsan和lisi:

[root@localhost ~]# useradd lisi

[root@localhost ~]# passwd lisi

更改用户 lisi 的密码 。

新的 密码:

无效的密码: 密码未通过字典检查 - 过于简单化/系统化重新输入

新的 密码:passwd:

所有的身份验证令牌已经成功更新。

[root@localhost ~]# useradd zhangsan

[root@localhost ~]# passwd zhangsan

更改用户 zhangsan 的密码 。

新的 密码:

无效的密码: 密码未通过字典检查 - 过于简单化/系统化

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

 7.查看已有的系统本地普通账号:

[root@localhost ~]# tail -3 /etc/passwd

 8.关闭防火墙,否则原程不能访问:

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

 9.启动ftp服务:

[root@localhost ~]# systemctl start vsftpd

 10.在物理机资源管理器地址栏输入ftp协议及服务器IP地址:

11.在弹出的登录窗口输入白名单中账号及密码: 

 【如果不出现登录窗口,而是提示出错(如下图)则点击“确定”,然后在空白处点右键,选择“登录”就会出现登录窗口了。】

登录成功界面:

12.尝试上传文件,成功:

13.改用白名单以外的账号登录:

登陆失败:

 

<think>我们正在讨论如何允许普通用户访问LinuxFTP服务。根据用户的问题,他参考了站内引用,其中引用[1]提到了配置vsftpd的基本步骤,包括允许匿名登录和本地用户登录,以及一些安全设置。引用[2]则提到了如何通过挂载(mount --bind)让普通用户除了家目录外还能访问其他目录。 但是用户明确表示:“我想查找允许普通用户访问Linux系统中FTP服务的方法”,所以我们的重点应该是如何配置vsftpd以允许普通用户登录。 根据之前的回答(用户不可见,但我们可以参考)和引用[1]的内容,我们已经知道在vsftpd.conf中设置`local_enable=YES`即可允许本地用户(也就是普通用户)登录。 然而,用户可能还关心如何设置这些普通用户的权限,比如是否限制在家目录(chroot)以及如何访问其他目录(如引用[2]所提到的绑定挂载)。 因此,我们需要在回答中包括: 1. 基本配置:修改vsftpd.conf以允许本地用户登录(设置`local_enable=YES`)。 2. 安全设置:是否将用户限制在其家目录(chroot),以及如何设置(`chroot_local_user`和`allow_writeable_chroot`)。 3. 如何让普通用户访问其他目录(通过绑定挂载,如引用[2]所示)。 此外,还要注意: - 防火墙设置:开放21端口(或自定义端口)和被动模式端口范围(如果需要)。 - SELinux设置:如果系统启用了SELinux,可能需要调整布尔值以允许FTP访问。 步骤分解: 1. 安装vsftpd(如果尚未安装)。 2. 配置文件(/etc/vsftpd/vsftpd.conf)的关键设置: - `local_enable=YES`:允许本地用户登录。 - 其他相关设置:如是否允许上传(`write_enable=YES`),是否限制用户在家目录(`chroot_local_user=YES`)等。 3. 创建普通用户(如果用户不存在)。 4. 配置用户访问其他目录(可选):使用绑定挂载(mount --bind)将其他目录挂载到用户家目录下的某个子目录。 5. 处理SELinux(如果启用):设置`ftpd_full_access`或调整其他布尔值。 6. 防火墙设置。 7. 重启服务并测试。 注意:引用[2]给出的命令是: /bin/mount --bind /data/share /home/liuhuihuang/share /bin/mount --bind /data/share /home/wangchenyan/share 这表示将/data/share目录分别挂载到两个用户家目录下的share目录。这样,用户登录FTP后就可以通过家目录下的share访问到/data/share。 但是,这种挂载是临时的,重启后消失。如果要永久挂载,需要将挂载命令写入/etc/fstab或者创建systemd mount单元(更复杂的做法是使用autofs)。不过,简单起见,我们可以将挂载命令写入/etc/rc.local(如果系统支持)或者创建一个systemd服务来在启动时挂载。 考虑到用户可能只需要基本访问,我们可以在回答中提供两种方式:临时挂载和永久挂载(通过/etc/fstab)。 另外,我们之前回答中提到了SELinux的问题,所以这里也要注意:如果用户需要上传文件到挂载的目录,那么目标目录(/data/share)的SELinux上下文必须正确(通常是public_content_rw_t)。 因此,回答结构如下: 1. 安装vsftpd 2. 配置vsftpd.conf(重点开启本地用户登录和必要的写权限) 3. 创建普通用户(如果需要) 4. 配置用户访问其他目录(可选,使用绑定挂载) 5. 设置SELinux(如果需要) 6. 防火墙设置 7. 重启服务并测试 最后,生成相关问题。 注意:引用标记。在回答中,如果我们引用了站内引用[1]和[2]的内容,需要在相应位置标注[^1]和[^2]。 </think>### 允许普通用户访问Linux系统FTP服务的配置方法 #### 1. **基础配置:允许本地用户登录** 在`vsftpd.conf`配置文件中启用本地用户访问: ```bash sudo vim /etc/vsftpd/vsftpd.conf ``` 关键配置项: ```ini anonymous_enable=NO # 禁用匿名访问 local_enable=YES # 允许本地用户登录[^1] write_enable=YES # 允许文件写入 chroot_local_user=YES # 将用户限制在家目录 allow_writeable_chroot=YES # 允许在限制目录写入[^1] ``` #### 2. **创建普通用户** ```bash sudo adduser ftpuser # 创建用户 sudo passwd ftpuser # 设置密码 ``` #### 3. **特殊场景:访问其他目录** 通过绑定挂载实现: ```bash # 创建共享目录 sudo mkdir -p /data/share # 挂载到用户家目录 sudo mount --bind /data/share /home/ftpuser/share sudo chown ftpuser:ftpuser /home/ftpuser/share ``` 永久挂载(重启生效): ```bash # 编辑/etc/fstab echo "/data/share /home/ftpuser/share none bind 0 0" | sudo tee -a /etc/fstab ``` 这样用户通过FTP登录后可在`share`目录访问`/data/share`内容[^2]。 #### 4. **关键安全配置** ```ini # 禁止用户列表(默认包含root) /etc/vsftpd/user_list # 移除ftpuser /etc/vsftpd/ftpusers # 移除ftpuser # 启用用户白名单(可选) userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO ``` #### 5. **SELinux与防火墙** ```bash # SELinux设置 sudo setsebool -P ftpd_full_access on sudo restorecon -Rv /home/ftpuser # 防火墙 sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload ``` #### 6. **重启服务并测试** ```bash sudo systemctl restart vsftpd ftp localhost # 使用ftpuser登录测试 ``` ### 验证要点: 1. 用户登录后是否被限制在家目录 2. `share`目录是否可见并可读写 3. 检查日志:`tail -f /var/log/vsftpd.log` > ⚠️ **安全提示** > - 避免使用root账户登录FTP > - 定期审计`/etc/vsftpd/user_list` > - 敏感目录权限设置为`750`
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-覃玲秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值