CentOS 7.4 搭建ftp服务器

本文详细介绍如何在CentOS 7.4上安装并配置VSFTPD服务,包括检查系统版本、安装VSFTPD软件包、创建用户及密码、编辑配置文件等步骤,并解决了常见问题如限制用户访问范围。

准备:

写博客前先确认了下linux的版本信息,害怕写错了版本信息,再把小伙伴们误入歧途了哈哈。然后贴出查看当前linux系统版本信息的命令:

1.Linux查看版本当前操作系统内核信息

 

[root@VM_0_12_centos /]# uname -a
Linux VM_0_12_centos 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

2.Linux查看当前操作系统版本信息

[root@VM_0_12_centos /]# cat /proc/version
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017

3.Linux查看版本当前操作系统发行版信息

[root@VM_0_12_centos /]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core) 

 

 

正文正文:

通过搭建vsftpd服务来实现ftp服务好像是当前通用的方法,那咱们就试一试搭建vsftpd服务;

1.查看系统中是否安装了vsftpd

# rpm -qa | grep vsftpd

2.安装vsftpd

# yum -y install vsftpd

再次运行1的命令:vsftpd-3.0.2-22.el7.x86_64;说明安装成功!

3.创建用户

# useradd -s /sbin/nologin -d /var/testftp/img imac

useradd命令用于Linux中创建的新的系统用户。

useradd可用来建立用户帐号。

帐号建好之后,再用passwd设定帐号的密码.

可用userdel删除帐号。

使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

另附:

useradd(选项)(参数)

-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户id

 

4.为用户创建密码

passwd imac

passwd 后跟用户账号,回车输入两次之后密码创建成功。

4.编辑vsftpd配置文件,修改配置


ftp的配置文件主要有三个,位于/etc/vsftpd/目录下,分别是:

ftpusers    该文件用来指定那些用户不能访问ftp服务器。

user_list   该文件用来指示的默认账户在默认情况下也不能访问ftp

vsftpd.conf   vsftpd的主配置文件


修改配置文件,配置不允许匿名用户登录

位置:/etc/vsftpd/vsftpd.conf

修改:anonymous_enable 改为 NO (默认:YES)

然后重启vsftp服务。

 

5.启动vsftp服务

systemctl start vsftpd.service #启动服务
systemctl restart vsftpd.service #重启
systemctl stop vsftpd.service #重启
systemctl status vsftpd.service #状态

6.链接测试

用ftp链接工具,我用的是uftp8;用什么无所谓了,反正,我连上了,哈,这时候就会发现,链接的默认目录就是在创建用户的时候设置的用户目录,我的是“/var/testftp/img imac”。

7.配置让ftp用户只在自己的目录下面活动

但是这样有个问题就是所有的目录都暴露给客户端了,虽然客户端不能随意修改删除其余的文件,但是因为目录可见,所以总会有一些风险,所以接下来还需要配置让ftp用户只在自己的家目录下面活动,而无法查看其它任何目录。

同样是打开配置文件/etc/vsftpd/vsftpd.conf,找到chroot_local_user=YES这个配置,默认是注释的,这里去掉注释,表示只让用户在自己的目录里面活动。

如果只是保存这一个配置的话,用ftp连接客户端会返回500 OOPS: vsftpd: refusing to run with writable root inside chroot()的错误,即禁止运行在可写的家目录中,因为刚才ftp_test这个目录有w权限,而现在我们使用的vsftpd版本是3.0.2 属于比较新的版本,为了安全性做了一些限制,如果你此时想通过 chmod a-w /home/ftp_test 来去掉目录的写权限,那么连接成功是没问题的,但是无法上传文件了,所以网上很多说修改权限的方法是不可取的,正确的做法是应该在下面添加一行配置allow_writeable_chroot=YES表示允许对家目录的写权限

 

离线安装ftp  请参考:https://www.cnblogs.com/hmagogo/p/7065956.html

 

 

 

 

 

 

 

 

 

<think>我们正在处理一个关于在CentOS 7的LAMP环境中配置自定义端口、部署网站以及配置防火墙规则的问题。 根据用户的问题,我们需要完成以下任务: 1. 在LAMP环境中设置自定义端口(假设用户想使用非80端口,例如8080) 2. 部署网站到该端口 3. 配置防火墙(firewalld)以允许该端口的入站和出站流量 步骤分解: 1. 配置Apache使用自定义端口: - 编辑Apache的主配置文件,通常是`/etc/httpd/conf/httpd.conf`,找到`Listen`指令,将其改为自定义端口(例如8080),或者添加一个新的`Listen`指令。 - 另外,也可以在虚拟主机配置中指定端口,但为了简单起见,我们假设用户使用主配置文件。 2. 部署网站: - 将网站文件放入Apache的文档根目录(例如`/var/www/html`)或者配置虚拟主机指向自定义目录。 3. 配置防火墙: - CentOS 7默认使用firewalld。我们需要添加自定义端口(8080)到防火墙规则中,并允许该端口的流量(入站和出站)。 4. 重启服务使配置生效。 注意:如果用户使用SELinux,还需要设置SELinux允许Apache监听自定义端口(使用`semanage`和`setsebool`等命令)。但用户问题中没有提到,我们暂且不提,如果遇到问题再考虑。 另外,用户提到了引用[1]中关于安装LAMP环境的部分,我们假设用户已经按照引用[1]的方式安装了LAMP环境(使用宝塔面板或者手动安装)。但是用户的问题中并没有使用宝塔面板,而是直接要求配置。因此,我们按照手动配置的方式回答。 步骤详细说明: 步骤1:配置Apache监听自定义端口(例如8080) - 打开配置文件:`vi /etc/httpd/conf/httpd.conf` - 找到`Listen 80`,将其改为`Listen 8080`(或者添加一行`Listen 8080`,如果希望同时监听80和8080,则保留80并添加8080) - 保存并退出。 步骤2:部署网站 - 将网站文件上传到Apache的默认目录`/var/www/html`,或者配置虚拟主机(这里为了简单,使用默认目录)。 - 假设用户已经将网站文件放在`/var/www/html`下。 步骤3:配置防火墙 - 查看防火墙状态:`systemctl status firewalld` - 如果防火墙未运行,则启动:`systemctl start firewalld` - 添加端口8080到防火墙的public区域(假设使用public区域): `firewall-cmd --zone=public --add-port=8080/tcp --permanent` - 重新加载防火墙:`firewall-cmd --reload` 注意:防火墙的入站规则(inbound)通过以上命令添加。对于出站规则(outbound),默认情况下firewalld允许所有出站流量,所以不需要额外配置。如果用户有特殊要求限制出站,则需要另外配置,但问题中只要求允许该端口的访问,所以入站已经足够。 步骤4:重启Apache - `systemctl restart httpd` 步骤5:测试 - 在本地使用浏览器访问`http://服务器IP:8080`,或者使用curl命令:`curl http://localhost:8080` 如果用户希望使用自定义的网站目录,可以配置虚拟主机。这里给出一个简单的虚拟主机配置示例(使用8080端口): 在`/etc/httpd/conf.d/`目录下创建一个新的配置文件,比如`mywebsite.conf`,内容如下: ``` <VirtualHost *:8080> ServerName your_domain_or_ip DocumentRoot /path/to/your/website <Directory "/path/to/your/website"> AllowOverride All Require all granted </Directory> </VirtualHost> ``` 然后重启Apache。 注意:如果用户使用SELinux,需要执行以下命令允许Apache监听8080端口: - 安装SELinux管理工具:`yum install policycoreutils-python` - 添加端口:`semanage port -a -t http_port_t -p tcp 8080` - 如果提示端口已存在,则使用修改命令:`semanage port -m -t http_port_t -p tcp 8080` 但是,如果用户没有安装`semanage`,则需要先安装。 考虑到用户可能没有启用SELinux,或者处于permissive模式,我们可以先忽略,如果遇到权限问题再处理。 现在,我们按照上述步骤整理回答。 注意:用户要求使用中文回答,并且按照系统级指令处理格式。</think>### 在CentOS 7的LAMP环境中配置端口并部署网站 以下是详细的操作步骤(假设已安装LAMP环境,Apache版本≥2.4,PHP≥7.0): #### 1. **配置Apache使用自定义端口** ```bash # 编辑Apache主配置文件 sudo vi /etc/httpd/conf/httpd.conf # 找到Listen指令,修改端口(例如8080) Listen 8080 # 替换原有的Listen 80 # 配置虚拟主机(示例) <VirtualHost *:8080> DocumentRoot /var/www/mywebsite # 网站目录 ServerName yourdomain.com <Directory "/var/www/mywebsite"> AllowOverride All Require all granted </Directory> </VirtualHost> # 保存后重启Apache sudo systemctl restart httpd ``` #### 2. **部署网站文件** ```bash # 创建网站目录并上传文件 sudo mkdir -p /var/www/mywebsite sudo chown -R apache:apache /var/www/mywebsite # 权限设置 # 上传网站文件到该目录(可通过FTP/SCP) ``` #### 3. **配置防火墙规则** ```bash # 添加自定义端口到防火墙(以8080为例) sudo firewall-cmd --permanent --add-port=8080/tcp # 设置出站规则(默认允许所有出站) sudo firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -p tcp --dport 8080 -j ACCEPT # 重新加载防火墙 sudo firewall-cmd --reload # 验证端口开放 sudo firewall-cmd --list-ports | grep 8080 ``` #### 4. **SELinux策略调整(如启用)** ```bash # 允许Apache监听非标准端口 sudo semanage port -a -t http_port_t -p tcp 8080 # 允许访问网站目录 sudo setsebool -P httpd_unified 1 ``` #### 5. **测试访问** ```bash # 本地测试 curl -I http://localhost:8080 # 远程测试(替换为服务器IP) curl -I http://your_server_ip:8080 ``` > **输出示例**: > `HTTP/1.1 200 OK` > `Server: Apache/2.4.6 (CentOS)` > `X-Powered-By: PHP/7.4.33`[^5] #### 6. **数据库配置(如需要)** ```bash # 登录MySQL创建数据库 mysql -u root -p CREATE DATABASE mywebsite_db; GRANT ALL PRIVILEGES ON mywebsite_db.* TO 'webuser'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` ### 关键配置说明 | 组件 | 配置文件路径 | 关键指令 | |------|--------------|----------| | Apache | `/etc/httpd/conf/httpd.conf` | `Listen 8080`, `<VirtualHost *:8080>` | | 防火墙 | Runtime配置 | `firewall-cmd --add-port=8080/tcp` | | SELinux | Policy模块 | `semanage port -a -t http_port_t -p tcp 8080` | ### 常见问题排查 - **端口冲突**:使用 `sudo netstat -tulnp | grep 8080` 检查端口占用 - **权限错误**:确保网站目录权限为 `apache:apache` 且目录权限为755 - **防火墙拦截**:临时关闭防火墙测试 `sudo systemctl stop firewalld` - **SELinux日志**:通过 `sudo ausearch -m avc -ts recent` 查看拒绝记录 > **注意**:生产环境建议使用反向代理(如Nginx[^3])转发到Apache端口,增强安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值