帮助中心

更改 Linux 中文件和文件夹的权限 打印

  • 0
  • linux

在 Linux 中,文件和文件夹的权限通过 `chmod`、`chown` 和 `chgrp` 命令管理。以下是详细操作指南:

---

### **1. 理解权限符号**
每个文件/文件夹的权限分为三组:
- **所有者 (Owner)**:文件创建者/所有者。
- **所属组 (Group)**:文件所属的用户组。
- **其他用户 (Others)**:其他所有人。

权限用符号表示:
- `r`:读(Read,数字 `4`)
- `w`:写(Write,数字 `2`)
- `x`:执行(Execute,数字 `1`)
- `-`:无权限(数字 `0`)

**示例:**
`-rwxr-xr--`
- 所有者:读、写、执行(`7 = 4+2+1`)
- 所属组:读、执行(`5 = 4+1`)
- 其他用户:读(`4`)
- 总权限表示为 `754`。

---

### **2. 修改权限:`chmod`**
#### **符号模式(直观)**
```bash
chmod [角色][操作][权限] 文件或目录
```
- **角色**:
- `u`:所有者(User)
- `g`:所属组(Group)
- `o`:其他用户(Others)
- `a`:所有人(All)
- **操作**:
- `+`:添加权限
- `-`:移除权限
- `=`:直接设置权限
- **权限**:`r`、`w`、`x`

**示例:**
```bash
chmod u+x script.sh # 给所有者添加执行权限
chmod g-w file.txt # 移除所属组的写权限
chmod a=rw file.txt # 所有人可读、可写,不可执行
chmod o-rwx directory # 其他用户无任何权限
```

#### **数字模式(快速)**
```bash
chmod [数字] 文件或目录
```
- 三位数字分别对应:`所有者`、`所属组`、`其他用户`。
- 每个数字是 `r(4) + w(2) + x(1)` 的和。

**示例:**
```bash
chmod 755 file.sh # 所有者:rwx,组和其他:r-x
chmod 644 file.txt # 所有者:rw-,组和其他:r--
chmod 777 directory # 所有人可读、写、执行(慎用!)
```

#### **递归修改目录权限**
添加 `-R` 选项修改目录及其内容:
```bash
chmod -R 755 /path/to/directory
```

---

### **3. 修改所有者:`chown`**
```bash
chown [用户]:[组] 文件或目录
```
**示例:**
```bash
sudo chown root:root file.txt # 所有者设为root,组设为root
sudo chown alice:developers /data # 所有者设为alice,组设为developers
sudo chown -R alice:alice /home/alice # 递归修改目录所有者和组
```

---

### **4. 修改所属组:`chgrp`**
```bash
chgrp [组名] 文件或目录
```
**示例:**
```bash
sudo chgrp www-data /var/www/html # 将目录的组设为www-data
sudo chgrp -R staff /shared # 递归修改组
```

---

### **5. 特殊权限(进阶)**
- **SUID**:文件执行时以所有者身份运行(`4xxx`,如 `4755`)。
- **SGID**:目录中新文件继承组(`2xxx`,如 `2770`)。
- **Sticky Bit**:仅所有者可删除目录内文件(`1xxx`,如 `1777`)。

**示例:**
```bash
chmod 4755 /usr/bin/program # 设置SUID
chmod 2770 /shared # 设置SGID
chmod 1777 /tmp # 设置Sticky Bit
```

---

### **注意事项**
1. **慎用 `777`**:开放所有权限可能导致安全风险。
2. **文件夹需 `x` 权限**:进入目录需要执行权限。
3. **系统文件**:不要随意修改 `/etc`、`/bin` 等关键目录的权限。
4. **备份权限**:复杂场景可备份权限:
```bash
getfacl -R /path > permissions_backup.txt
setfacl --restore=permissions_backup.txt
```

---

### **常见问题**
- **权限修改无效?**
检查文件系统是否挂载为只读,或是否被 SELinux/AppArmor 限制。
- **如何查看权限?**
使用 `ls -l` 或 `stat` 命令:
```bash
ls -l file.txt
stat -c "%a %n" file.txt
```

掌握这些命令后,你可以灵活管理 Linux 系统的文件和目录权限!

这篇文章有帮助吗?
« 返回