惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Vercel News
Vercel News
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
N
Netflix TechBlog - Medium
Google DeepMind News
Google DeepMind News
H
Help Net Security
罗磊的独立博客
The Cloudflare Blog
J
Java Code Geeks
博客园 - 叶小钗
I
InfoQ
B
Blog
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
月光博客
月光博客
博客园_首页
雷峰网
雷峰网
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
美团技术团队
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美

博客园 - blues667

Alibaba Cloud 4 (CentOS 8) 安装记录(2026.8) 职业教育教师的成长与发展(下)--赵开华-北京吉利学院副校长(教育部师德师风讲座) 职业教育教师的成长与发展(上)--赵开华-北京吉利学院副校长(教育部师德师风讲座) 腾讯元宝推荐的 YouTube 视频下载方法(2026.3) Linux 上安装 cheat 命令的过程 康荣生老师(大连海事大学、华东理工大学)介绍 【程序算法题】洛谷, P1760 通天之汉诺塔, java实现。 程序题:洛谷, P5723 【深基4.例13】质数口袋 一轴徐徐展开的声纹画卷 导创: 陈建社 《学堂在线》清华郑莉老师的《Java程序设计 2025春》习题和程序设计题记录 回忆我的高中语文老师,陈光浩老师 TextPad 编译Java时,出错信息中的中文出现乱码,一种解决方法 古稀不稀,七十感怀 陈建社 2025.1.17 回忆康荣生老师 阿里云服务器所受攻击的记录(2024) vsftpd 的图形界面配置工具有哪些 当前,Linux中的内存页面调度算法 云雀妈妈和蛇大哥 【童话故事】 CentOS 9 安装 google Chrome Web 浏览器的一种简单方法(2024.9) Linux命令点滴(2024.7~) Java 学习知识点汇集(2024.6) 锁定某个Linux用户的账号
apache 2.4 设置每个Linux用户, 可以通过www访问自己的个人网...
blues667 · 2025-09-14 · via 博客园 - blues667

【讯飞星火回答】

在 Apache 2.4 中设置每个 Linux 用户可以通过 `http://202.118.88.66/~username` 形式访问自己的个人网站主目录,需要在配置文件中进行以下关键修改:

---

### **1. 确保加载了 `mod_userdir` 模块**
检查 `/etc/httpd/conf.modules.d/00-base.conf` 是否包含类似以下内容(若没有则添加):
```bash
LoadModule userdir_module modules/mod_userdir.so
```
此模块是实现用户个人目录功能的基础。

---

### **2. 修改 `/etc/httpd/conf.d/userdir.conf` 文件**
#### **步骤一:启用用户目录支持**
找到并编辑以下两行:
- **原配置**:`UserDir disabled` → 改为注释或删除(即取消禁用);
- **目标配置**:`UserDir public_html`(可自定义目录名,如改为 `www`)。
这表示用户的个人网站内容应存放在其家目录下的 `public_html` 文件夹中。例如,用户 `alice` 的网站路径为 `/home/alice/public_html`。

#### **步骤二:配置目录权限**
在同一文件中,定位到 `<Directory "/home/*/public_html">` 块,设置访问规则:
```apache
<Directory "/home/*/public_html">
AllowOverride None
Options Indexes FollowSymLinks
Require all granted
</Directory>
```
- `Require all granted` 是 Apache 2.4+ 的新语法,替代旧版的 `Order Deny,Allow` + `Allow from All`,用于允许所有请求访问该目录;
- `Options Indexes` 确保当用户未指定具体文件时显示目录列表;`FollowSymLinks` 支持符号链接。

> &#128204; 如果更改了 `UserDir` 后的文件夹名称(例如从 `public_html` 改为 `www`),需同步修改此处的路径为 `/home/*/www`。

---

### **3. 可选:为特定用户设置独立别名(Alias)**
若希望更灵活地映射 URL,可在主配置文件 `/etc/httpd/conf/httpd.conf` 中添加别名规则:
```apache
Alias /~username/ "/home/username/public_html/"
```
其中 `username` 替换为实际用户名。此步骤非必需,但能明确指定某个用户的路径映射。

---

### **4. 创建用户目录并设置权限**
#### **操作示例**
以用户 `bob` 为例:
```bash
mkdir -p /home/bob/public_html # 创建存储网页的目录
echo "Hello from Bob's homepage!" > /home/bob/public_html/index.html # 添加测试页面
chmod 755 /home/bob/public_html # 设置目录权限(所有者可读写执行,其他用户只读)
chown bob:bob /home/bob/public_html # 确保所有权归属正确
```
> &#9888;️ **注意**:确保每个用户的家目录 (`/home/username`) 及其子目录 (`public_html`) 具有适当的读/执行权限,否则 Apache 会因权限不足拒绝访问。

---

### **5. SELinux 兼容性处理(重要!)**
如果系统启用了 SELinux,需调整安全上下文以避免阻止访问:
```bash
# 查看当前上下文类型
ll -Z ~/public_html
# 如果输出不含 user_home_t,则执行以下命令修复:
chcon -t user_home_t -R /home/username/public_html
# 启用 HTTPD 对用户目录的支持策略
setsebool httpd_enable_homedirs on
```
这一步解决了因 SELinux 策略导致的 “Permission denied” 错误。

---

### **6. 重启 Apache 服务使配置生效**
```bash
sudo systemctl restart httpd # CentOS/RHEL 系列
# 或
sudo service httpd restart # Debian/Ubuntu 系列
```

---

### **验证与测试**
打开浏览器访问:`http://202.118.88.66/~username`,应能看到用户放置在 `~/public_html` 中的默认页面(如 `index.html`)。如果遇到问题,可通过日志排查:
```bash
tail -f /var/log/httpd/error_log # 查看错误日志
```

---

### **补充说明**
- **安全性增强建议**:若需密码保护个人目录,可结合 `.htpasswd` 文件实现基本认证。例如,使用 `htpasswd -c /etc/httpd/passwd username` 生成密码文件,并在 `<Directory>` 块中添加:
```apache
AuthType Basic
AuthName "Private Area"
AuthUserFile /etc/httpd/passwd
Require valid-user
```
- **多用户隔离**:每个用户的网站内容相互独立,且仅能通过自己的用户名路径访问,符合需求中的 `~username` 格式。