基础
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 [13],同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。 [11] 其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。 [12] Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
权限
一、权限的基本组成
Linux 文件和目录的权限分为 三类用户 和 三种权限:
1. 用户类别(User, Group, Others)
| 缩写 | 名称 | 说明 |
|---|---|---|
| u | User(所有者) | 文件创建者或拥有者 |
| g | Group(所有者) | 文件所属用户组的成员 |
| o | Others(其他) | 不属于所有者或组的用户 |
2. 权限类型(Read, Write, Execute)
| 缩写 | 名称 | 数值 | 说明 |
|---|---|---|---|
| r | Read | 4 | 可读取文件内容 / 列出目录内容 |
| w | Write | 2 | 可修改文件内容 / 修改目录内容 |
| x | Execute | 1 | 可运行程序 / 进入目录 |
| - | 无权限 | 4 | 无任何权限 |
二、数字表示法详解
权限用 三位八进制数字 表示,格式为:User Group Others(UGO)。 每组数字是权限值的总和(r=4, w=2, x=1,-=0)。
常见权限组合
| 数字 | 字母 | 说明 |
|---|---|---|
| 777 | rwxrwxrwx | 可执行文件/脚本、目录。所有用户可读、写、执行(最开放,但不安全) |
| 775 | rwxrwxr-x | 共享的可执行目录。所有者和组用户有全权限,其他用户可读和执行。常用于团队协作的项目目录。 |
| 755 | rwxr-xr-x | 可执行文件/脚本、目录。所有者全权限,组和其他用户可读、执行(常用目录权限) |
| 750 | rwxr-x--- | 更安全的可执行文件/脚本、服务目录。所有者全权限,同组用户可读和执行,其他用户无权限(常用目录权限) |
| 700 | rwx------ | 仅所有者可读、写、执行(私有目录) |
| 664 | rw-rw-r-- | 所有者和组可读、写,其他用户只读(协作文件) |
| 660 | rw-rw---- | 所有者和组可读、写,其他用户无权限(团队共享文件) |
| 644 | rw-r--r-- | 普通数据文件(如文本、图片、配置文件)。所有者可读、写,组和其他用户只读(常用文件权限) |
| 640 | rw-r----- | 敏感配置文件。所有者可读写,同组用户只读,其他用户无权限。比 644 更安全。(敏感配置文件) |
| 600 | rw------- | 高度敏感的私有文件如(SSH 私钥)仅所有者可读、写 |
| 1777 | rwxrwxrwt | 类似 /tmp 的临时目录。每个人都可以读写执行,但只能删除自己的文件(sticky bit 的作用) |
| 2750 | rwxr-s--- | 共享的团队目录。在此目录下创建的文件会自动继承目录的组身份(setgid 的作用),方便团队协作。 |
三、文件 vs 目录的权限区别
权限对 文件 和 目录 的作用不同:
| 权限 | 文件的作用 | 目录的作用 |
|---|---|---|
| r | 可读取文件内容 | 可列出目录中的文件(ls) |
| w | 可修改文件内容 | 可在目录中创建/删除文件(需 x 权限) |
| x | 可运行文件(如脚本) | 可进入目录(cd) |
四、特殊权限位(SUID, SGID, Sticky Bit)
权限数字的 第一位 表示特殊权限位(数值 1, 2, 4):
| 特殊权限位 | 数值 | 字母 | 说明 |
|---|---|---|---|
| setuid(Set User ID) | 4 | s | 设置在用户权限的执行位上。作用:使执行文件的用户暂时拥有文件所有者的权限(而不是执行者自己的权限)。典型例子:/usr/bin/passwd。 |
| setgid(Set Group ID) | 2 | s | 设置在组权限的执行位上。作用:1. 对文件:运行时拥有文件所属组的权限。2. 对目录:更常用!在该目录下创建的任何新文件或子目录,都将继承该目录的所属组,而不是创建者的主要组。 |
| sticky | 1 | t | 设置在其他用户权限的执行位上。作用:仅用于目录。在该目录下,用户只能删除或重命名自己创建的文件和目录,即使该目录对所有用户可写。如/tmp。 |
| 数字 | 字母 | 说明 |
|---|---|---|
| 1777 | rwxrwxrwt | 类似 /tmp 的临时目录。每个人都可以读写执行,但只能删除自己的文件(sticky bit 的作用) |
| 2750 | rwxr-s--- | 共享的团队目录。在此目录下创建的文件会自动继承目录的组身份(setgid 的作用),方便团队协作。 |
1. SUID(Set User ID) — 数值 4
- 作用:运行文件时,以文件所有者的身份执行。
- 典型应用:passwd 命令需要修改 /etc/shadow,普通用户无法写,但设置了 SUID 后,运行时以 root 身份执行。
- 示例:
bash
chmod 4755 file.sh
# 或
chmod u+s file.sh- 查看:-rwsr-xr-x(s 表示 SUID)
2. SGID(Set Group ID) — 数值 2
- 作用:
- 对文件:以文件所属组的身份运行。
- 对目录:在该目录下创建的文件,继承目录的组。
- 典型应用:团队协作目录(如 /shared)。
- 示例:
bash
chmod 2775 shared_dir/
# 新建文件将属于 shared_dir 的组- 查看:drwxrwsr-x(s 表示 SGID)
3. Sticky Bit(粘滞位) — 数值 1
- 作用:仅允许文件所有者删除自己的文件,即使目录可写。
- 典型应用:公共目录 /tmp。
- 示例:
bash
chmod 1777 /tmp- 查看:drwxrwxrwt(t 表示 Sticky Bit)
五、权限设置命令
1. 查看权限
bash
ls -l filename
# 输出示例:-rw-r--r-- 1 user group 1234 Jan 1 10:00 file.txt2. 修改权限(chmod)
- 数字表示法:
bash
chmod 644 file.txt # 所有者读写,组和其他只读
chmod 755 directory/ # 所有者全权限,组和其他可读执行- 符号表示法:
bash
chmod u+x script.sh # 给所有者添加执行权限
chmod go-w file.txt # 去掉组和其他人的写权限- 数字+符号表示法:
bash
# 将文件设置为 644 权限
chmod 644 config.properties
# 将目录及其内部所有内容递归设置为 750 权限
chmod -R 750 /path/to/directory/
# 设置特殊权限 setuid
chmod 4755 special_program
# 为目录设置 setgid 位,权限为 775
chmod 2775 shared_team_folder3. 修改所有者(chown)
bash
chown user:group file.txt
chown -R user:group directory/ # 递归修改目录4. 修改所属组(chgrp)
bash
chgrp groupname file.txt