Skip to content

基础

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)

缩写名称说明
uUser(所有者)文件创建者或拥有者
gGroup(所有者)文件所属用户组的成员
oOthers(其他)不属于所有者或组的用户

2. 权限类型(Read, Write, Execute)

缩写名称数值说明
rRead4可读取文件内容 / 列出目录内容
wWrite2可修改文件内容 / 修改目录内容
xExecute1可运行程序 / 进入目录
-无权限4无任何权限

二、数字表示法详解

权限用 三位八进制数字 表示,格式为:User Group Others(UGO)。 每组数字是权限值的总和(r=4, w=2, x=1,-=0)。

常见权限组合

数字字母说明
777rwxrwxrwx可执行文件/脚本、目录。所有用户可读、写、执行(最开放,但不安全
775rwxrwxr-x共享的可执行目录。所有者和组用户有全权限,其他用户可读和执行。常用于团队协作的项目目录。
755rwxr-xr-x可执行文件/脚本、目录。所有者全权限,组和其他用户可读、执行(常用目录权限)
750rwxr-x---更安全的可执行文件/脚本、服务目录。所有者全权限,同组用户可读和执行,其他用户无权限(常用目录权限)
700rwx------仅所有者可读、写、执行(私有目录)
664rw-rw-r--所有者和组可读、写,其他用户只读(协作文件)
660rw-rw----所有者和组可读、写,其他用户无权限(团队共享文件)
644rw-r--r--普通数据文件(如文本、图片、配置文件)。所有者可读、写,组和其他用户只读(常用文件权限)
640rw-r-----敏感配置文件。所有者可读写,同组用户只读,其他用户无权限。比 644 更安全。(敏感配置文件)
600rw-------高度敏感的私有文件如(SSH 私钥)仅所有者可读、写
1777rwxrwxrwt类似 /tmp 的临时目录。每个人都可以读写执行,但只能删除自己的文件(sticky bit 的作用)
2750rwxr-s---共享的团队目录。在此目录下创建的文件会自动继承目录的组身份(setgid 的作用),方便团队协作。

三、文件 vs 目录的权限区别

权限对 文件 和 目录 的作用不同:

权限文件的作用目录的作用
r可读取文件内容可列出目录中的文件(ls)
w可修改文件内容可在目录中创建/删除文件(需 x 权限)
x可运行文件(如脚本)可进入目录(cd)

四、特殊权限位(SUID, SGID, Sticky Bit)

权限数字的 第一位 表示特殊权限位(数值 1, 2, 4):

特殊权限位数值字母说明
setuid(Set User ID)4s设置在用户权限的执行位上。作用:使执行文件的用户暂时拥有文件所有者的权限(而不是执行者自己的权限)。典型例子:/usr/bin/passwd。
setgid(Set Group ID)2s设置在组权限的执行位上。作用:1. 对文件:运行时拥有文件所属组的权限。2. 对目录:更常用!在该目录下创建的任何新文件或子目录,都将继承该目录的所属组,而不是创建者的主要组。
sticky1t设置在其他用户权限的执行位上。作用:仅用于目录。在该目录下,用户只能删除或重命名自己创建的文件和目录,即使该目录对所有用户可写。如/tmp。
数字字母说明
1777rwxrwxrwt类似 /tmp 的临时目录。每个人都可以读写执行,但只能删除自己的文件(sticky bit 的作用)
2750rwxr-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.txt

2. 修改权限(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_folder

3. 修改所有者(chown)

bash
chown user:group file.txt
chown -R user:group directory/  # 递归修改目录

4. 修改所属组(chgrp)

bash
chgrp groupname file.txt

Released under the MIT License.