一、特殊权限位
Linux 文件权限中的第一个数字(在本例中为 4)表示 **特殊权限位**。它控制文件类型的特殊行为,例如:
* **4**:**setuid (SUID)** 位。当文件由非 root 用户执行时,它允许该用户暂时获得该文件的属主权限。这通常用于允许非特权用户执行需要 root 权限的任务。
* **2**:**setgid (SGID)** 位。当文件由非组成员执行时,它允许该用户暂时获得该文件的组权限。这通常用于允许非组成员访问组专有资源。
* **1**:**sticky bit** 位。它防止其他用户删除或重命名不属于他们的文件,即使他们具有写权限。这通常用于公共目录,以防止用户意外删除或覆盖彼此的文件。
在 4755 属性中,**4** 表示 **SUID** 位已设置。这意味着当非 root 用户执行该文件时,他们将暂时获得该文件的属主权限。
**示例:**
假设一个文件具有 4755 属性,并且该文件由名为 `user1` 的非 root 用户执行。当 `user1` 执行该文件时,他们将暂时获得该文件的属主权限,即使该文件属于另一个用户(例如 `root`)。这允许 `user1` 执行通常需要 root 权限的任务。
**注意:**
* SUID 和 SGID 位是强大的权限,应谨慎使用。
* 只有 root 用户才能设置或清除 SUID 和 SGID 位。
二、设置SGID
要使用 `chmod` 命令设置 SGID 位,请使用以下语法:
```
chmod g+s filename
```
其中:
* `g+s`:设置 SGID 位的标志
* `filename`:要设置 SGID 位的文件名
**示例:**
要设置文件 `myfile` 的 SGID 位,可以使用以下命令:
```
chmod g+s myfile
```
设置 SGID 位后,当文件由非组成员执行时,该用户将暂时获得该文件的组权限。
**注意:**
* 只有 root 用户才能设置 SGID 位。
* SGID 位通常用于允许非组成员访问组专有资源。例如,它可以用于允许非组成员写入组共享的日志文件。
**其他方法:**
除了使用 `chmod` 命令外,还可以使用以下方法设置 SGID 位:
* **使用八进制模式位:**SGID 位的八进制模式位为 2。要设置 SGID 位,可以使用以下命令:
```
chmod 2755 filename
```
* **使用符号模式位:**SGID 位的符号模式位为 `g+s`。要设置 SGID 位,可以使用以下命令:
```
chmod +g filename
```
无论使用哪种方法,设置 SGID 位后,当文件由非组成员执行时,该用户将暂时获得该文件的组权限。
三、设置SUID
**Linux 文件权限的 4755 属性**
在 Linux 系统中,文件和目录的权限使用八进制数字表示,称为 **模式位**。4755 属性表示以下权限:
**位值 | 权限 | 用户 | 组 | 其他**
------- | ------- | ------- | ------- | -------
4 | 读 (r) | 主人 | 主人 | 主人
7 | 读、写、执行 (rwx) | 主人 | 主人 | 主人
5 | 读、执行 (rx) | 组 | 组 | 组
5 | 读、执行 (rx) | 其他 | 其他 | 其他
**解释:**
* **4**:主人的读权限(r)
* **7**:主人的读(r)、写(w)、执行(x)权限
* **5**:组的读(r)、执行(x)权限
* **5**:其他人的读(r)、执行(x)权限
**示例:**
假设一个文件具有 4755 属性,则:
* 文件的所有者可以读、写和执行该文件。
* 同一组中的其他用户可以读和执行该文件。
* 系统中的其他用户可以读和执行该文件。
**注意:**
* 4755 属性通常用于可执行文件,例如脚本或二进制文件。
* 文件的权限可以通过 `chmod` 命令修改。例如,要将文件的权限更改为 4755,可以使用以下命令:
```
chmod 4755 filename
```
四、同时设置
要同时设置 SUID 和 SGID 位,可以使用以下语法:
```
chmod g+s,u+s filename
```
其中:
* `g+s,u+s`:设置 SUID 和 SGID 位的标志
* `filename`:要设置 SUID 和 SGID 位的文件名
**示例:**
要同时设置文件 `myfile` 的 SUID 和 SGID 位,可以使用以下命令:
```
chmod g+s,u+s myfile
```
设置 SUID 和 SGID 位后,当文件由非组成员或非属主执行时,该用户将暂时获得该文件的组或属主权限。
**注意:**
* 只有 root 用户才能同时设置 SUID 和 SGID 位。
* SUID 和 SGID 位是强大的权限,应谨慎使用。
**其他方法:**
除了使用 `chmod` 命令外,还可以使用以下方法同时设置 SUID 和 SGID 位:
* **使用八进制模式位:**SUID 和 SGID 位的八进制模式位分别为 4 和 2。要同时设置 SUID 和 SGID 位,可以使用以下命令:
```
chmod 6755 filename
```
* **使用符号模式位:**SUID 和 SGID 位的符号模式位分别为 `u+s` 和 `g+s`。要同时设置 SUID 和 SGID 位,可以使用以下命令:
```
chmod +u+g filename
```
无论使用哪种方法,同时设置 SUID 和 SGID 位后,当文件由非组成员或非属主执行时,该用户将暂时获得该文件的组或属主权限。
五、Linux打包时候如何设置应用中各个目录的权限
一般的安装时候是使用root权限的
主程序start带起client1目录下client1和client2下的client2
需要设置
chmod 775 client1
chmod 775 client2
对于chrome-sandbox(Electron)程序,需要以root权限执行
sudo chmod 4755 chrome-sandbox<实际可替换为路径>
标签:文件,SUID,4755,chmod,设置,Linux,SGID,权限,属性 From: https://www.cnblogs.com/xietianjiao/p/18436451