docs: 更新Linux用户与权限文档,添加收回用户Shell权限及chmod命令详解
This commit is contained in:
parent
1c2cb6f01c
commit
0701f47541
@ -49,6 +49,61 @@ su username
|
||||
exit
|
||||
```
|
||||
|
||||
### 收回用户 Shell 权限
|
||||
|
||||
限制用户登录系统,禁止其使用交互式 Shell。
|
||||
|
||||
#### 设置禁止登录的 Shell
|
||||
|
||||
```shell
|
||||
# 方法一:使用 /sbin/nologin(推荐)
|
||||
usermod -s /sbin/nologin username
|
||||
|
||||
# 方法二:使用 /bin/false
|
||||
usermod -s /bin/false username
|
||||
```
|
||||
|
||||
#### 查看用户当前 Shell
|
||||
|
||||
```shell
|
||||
grep username /etc/passwd
|
||||
|
||||
# 或
|
||||
getent passwd username
|
||||
```
|
||||
|
||||
输出示例:
|
||||
|
||||
```
|
||||
username:x:1001:1001::/home/username:/sbin/nologin
|
||||
```
|
||||
|
||||
#### 各 Shell 对比
|
||||
|
||||
| Shell | 效果 |
|
||||
| --- | --- |
|
||||
| `/bin/bash` | 正常登录,可执行命令 |
|
||||
| `/sbin/nologin` | 拒绝登录,提示 `This account is currently not available` |
|
||||
| `/bin/false` | 拒绝登录,无提示,退出码为 1 |
|
||||
| `/usr/sbin/nologin` | 与 `/sbin/nologin` 相同(部分系统软链接) |
|
||||
|
||||
> **适用场景**:数据库用户、服务专用账户、FTP 账户等只需运行服务不需要登录系统的用户。
|
||||
|
||||
#### 恢复登录权限
|
||||
|
||||
```shell
|
||||
usermod -s /bin/bash username
|
||||
```
|
||||
|
||||
#### 批量收回
|
||||
|
||||
```shell
|
||||
# 读取用户列表文件,批量设置
|
||||
while read user; do
|
||||
usermod -s /sbin/nologin "$user"
|
||||
done < userlist.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 权限管理
|
||||
@ -65,14 +120,65 @@ Linux 文件有三种权限:
|
||||
|
||||
### chmod 命令
|
||||
|
||||
修改文件权限。
|
||||
修改文件或目录权限。
|
||||
|
||||
#### 基本语法
|
||||
|
||||
```shell
|
||||
# 数字方式设置权限
|
||||
chmod 755 file
|
||||
chmod [选项] 模式 文件
|
||||
```
|
||||
|
||||
**权限数字说明**:
|
||||
#### 符号模式
|
||||
|
||||
通过 `u`(所有者)、`g`(所属组)、`o`(其他用户)、`a`(所有人)配合 `+`、`-`、`=` 操作权限。
|
||||
|
||||
**操作符区别**:
|
||||
|
||||
| 操作符 | 作用 | 说明 |
|
||||
|--------|------|------|
|
||||
| `+` | 添加权限 | 在原有权限基础上增加,不影响已有权限 |
|
||||
| `-` | 移除权限 | 从现有权限中移除,不影响未指定的权限 |
|
||||
| `=` | 直接设置 | 覆盖为指定权限,其余位清零 |
|
||||
|
||||
```shell
|
||||
# + 添加权限(累加,不影响其他位)
|
||||
chmod u+x script.sh # 所有者添加执行权限
|
||||
chmod a+r file.txt # 所有人添加读权限
|
||||
chmod g+w,o+r file.txt # 组添加写,其他添加读
|
||||
|
||||
# - 移除权限(仅移除指定位,其余保留)
|
||||
chmod o-w file.txt # 其他用户移除写权限
|
||||
chmod g-x script.sh # 组移除执行权限
|
||||
chmod a-w file.txt # 所有人移除写权限
|
||||
|
||||
# = 直接设置(覆盖,未指定的位全部清零)
|
||||
chmod u=r file.txt # 所有者只有读权限(写和执行被清除)
|
||||
chmod g=r file.txt # 组只有读权限
|
||||
chmod o= file.txt # 其他用户无任何权限
|
||||
chmod u=rwx,g=rx,o= file.txt # 精确控制每位权限
|
||||
|
||||
# + 重复添加已有权限不会报错,保持不变
|
||||
chmod u+x file.txt # 如果已有执行权限,不变
|
||||
chmod a+r file.txt # 如果所有人已有读权限,不变
|
||||
```
|
||||
|
||||
> **注意**:`+` 是幂等操作,重复添加已有权限不会产生任何变化,也不会报错。`-` 同理,移除不存在的权限也不会报错。
|
||||
|
||||
**示例对比**:
|
||||
|
||||
```shell
|
||||
# 假设文件当前权限为 rw-r--r--(644)
|
||||
|
||||
chmod u+x file.txt # 结果:rwxr--r--(654)只给所有者加了执行
|
||||
chmod u-x file.txt # 结果:rw-r--r--(644)移除执行(本来就没有,不变)
|
||||
chmod u=r file.txt # 结果:r--r--r--(444)所有者变成只读,写被清掉
|
||||
chmod u=rw file.txt # 结果:rw-r--r--(644)所有者读写
|
||||
chmod u=rwx,g=rx,o= file.txt # 结果:rwxr-x---(750)
|
||||
```
|
||||
|
||||
#### 数字模式
|
||||
|
||||
用三位八进制数表示权限,每位对应 `u`、`g`、`o`。
|
||||
|
||||
| 数字 | 权限 | 说明 |
|
||||
|-----|------|------|
|
||||
@ -82,10 +188,158 @@ chmod 755 file
|
||||
| 4 | r-- | 只读 |
|
||||
| 0 | --- | 无权限 |
|
||||
|
||||
**755 权限含义**:`rwxr-xr-x`
|
||||
- 所有者:读、写、执行
|
||||
- 所属组:读、执行
|
||||
- 其他用户:读、执行
|
||||
```shell
|
||||
# rwxr-xr-x(所有者全权限,组和其他用户读执行)
|
||||
chmod 755 file.txt
|
||||
|
||||
# rw-r--r--(所有者读写,组和其他用户只读)
|
||||
chmod 644 file.txt
|
||||
|
||||
# rw-rw----(所有者和组读写,其他用户无权限)
|
||||
chmod 660 file.txt
|
||||
|
||||
# rwx------(仅所有者有全部权限)
|
||||
chmod 700 file.txt
|
||||
|
||||
# rw-rw-rw-(所有人可读写)
|
||||
chmod 666 file.txt
|
||||
```
|
||||
|
||||
#### 常用权限参考
|
||||
|
||||
| 权限值 | 含义 | 适用场景 |
|
||||
|--------|------|----------|
|
||||
| `755` | rwxr-xr-x | 可执行脚本、程序,公开目录 |
|
||||
| `644` | rw-r--r-- | 普通文件,所有人可读 |
|
||||
| `700` | rwx------ | 私有目录,仅所有者可访问 |
|
||||
| `600` | rw------- | 私有文件,如 SSH 密钥 |
|
||||
| `640` | rw-r----- | 服务配置文件,组可读 |
|
||||
| `777` | rwxrwxrwx | 所有人可读写执行(不推荐) |
|
||||
|
||||
#### 常用选项
|
||||
|
||||
```shell
|
||||
# 递归修改目录及子目录下所有文件
|
||||
chmod -R 755 /var/www/html
|
||||
|
||||
# 仅修改目录本身的权限
|
||||
chmod 755 /var/www/html
|
||||
|
||||
# 修改符号链接的权限(不常用)
|
||||
chmod -h 755 link_file
|
||||
|
||||
# 显示修改过程
|
||||
chmod -v 755 file.txt
|
||||
```
|
||||
|
||||
#### 设置特殊权限
|
||||
|
||||
```shell
|
||||
# SUID(4):执行时以文件所有者身份运行
|
||||
chmod 4755 /usr/bin/passwd
|
||||
|
||||
# SGID(2):执行时以文件所属组身份运行
|
||||
chmod 2755 /shared_dir
|
||||
|
||||
# Sticky Bit(1):目录内文件只有所有者能删除
|
||||
chmod 1777 /tmp
|
||||
```
|
||||
|
||||
**特殊权限数字对照**:
|
||||
|
||||
| 数字 | 权限 | 说明 |
|
||||
|------|------|------|
|
||||
| 4 | SUID | 执行时以所有者身份运行 |
|
||||
| 2 | SGID | 执行时以组身份运行 |
|
||||
| 1 | Sticky | 仅文件所有者可删除目录内文件 |
|
||||
|
||||
```shell
|
||||
# 同时设置特殊权限和普通权限
|
||||
chmod 4755 file # SUID + rwxr-xr-x
|
||||
chmod 2755 dir # SGID + rwxr-xr-x
|
||||
chmod 1777 /tmp # Sticky + rwxrwxrwx
|
||||
```
|
||||
|
||||
#### 通过八进制运算理解权限
|
||||
|
||||
```
|
||||
用户(u) 组(g) 其他(o)
|
||||
rwx r-x r--
|
||||
4+2+1 4+0+1 4+0+0
|
||||
7 5 4 = 754
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### chown 命令
|
||||
|
||||
修改文件或目录的所有者和所属组。
|
||||
|
||||
#### 基本语法
|
||||
|
||||
```shell
|
||||
chown [选项] 所有者[:所属组] 文件
|
||||
```
|
||||
|
||||
#### 常用操作
|
||||
|
||||
```shell
|
||||
# 修改文件所有者
|
||||
chown user file.txt
|
||||
|
||||
# 修改文件所有者和所属组
|
||||
chown user:group file.txt
|
||||
|
||||
# 修改文件所属组
|
||||
chown :group file.txt
|
||||
|
||||
# 递归修改目录及子文件
|
||||
chown -R user:group /var/www/html
|
||||
|
||||
# 仅修改所有者
|
||||
chown -R user /var/www/html
|
||||
|
||||
# 仅修改所属组
|
||||
chown -R :group /var/www/html
|
||||
|
||||
# 显示修改过程
|
||||
chown -v user file.txt
|
||||
```
|
||||
|
||||
#### 常用选项
|
||||
|
||||
| 选项 | 说明 |
|
||||
|------|------|
|
||||
| `-R` | 递归修改目录及子目录下所有文件 |
|
||||
| `-v` | 显示修改过程 |
|
||||
| `-c` | 仅显示更改的文件 |
|
||||
| `-f` | 静默模式,忽略错误 |
|
||||
| `-h` | 修改符号链接本身而非链接目标 |
|
||||
|
||||
#### 与 chgrp 的区别
|
||||
|
||||
```shell
|
||||
# chown 可同时修改所有者和所属组
|
||||
chown user:group file.txt
|
||||
|
||||
# chgrp 只能修改所属组
|
||||
chgrp group file.txt
|
||||
```
|
||||
|
||||
#### 实用场景
|
||||
|
||||
```shell
|
||||
# 部署 Web 项目
|
||||
chown -R nginx:nginx /var/www/html
|
||||
|
||||
# 将目录交给特定用户管理
|
||||
chown -R user:user /home/user/projects
|
||||
|
||||
# 修改 SSH 密钥权限
|
||||
chmod 600 ~/.ssh/id_rsa
|
||||
chown root:root ~/.ssh
|
||||
chmod 700 ~/.ssh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user