Linux 用户和用户组管理

useradd/usermod/groupadd、/etc/passwd 与 /etc/shadow、sudo 授权。

Beginner
Key Points用户信息在 /etc/passwd,密码哈希在 /etc/shadow,组在 /etc/group;给权限靠组 + sudoers,不要直接改 uid。

三个文件

Text
/etc/passwd   alice:x:1001:1001:Alice:/home/alice:/bin/bash
              │     │ │    │    │          │           └ 登录 shell
              │     │ │    │    │          └ 主目录
              │     │ │    │    └ 描述(GECOS)
              │     │ │    └ 主组 GID
              │     │ └ 用户 UID
              │     └ 密码占位符(真实哈希在 /etc/shadow)
              └ 用户名

/etc/group    dev:x:1002:alice,bob
/etc/shadow   alice:$6$xxxx:19600:0:99999:7:::

增删改

Bash
sudo useradd -m -s /bin/bash alice
sudo passwd alice
sudo usermod -aG docker,sudo alice     # 追加组,-a 不能漏
sudo usermod -L alice                  # 锁定
sudo userdel -r alice                  # 连主目录一起删

sudo groupadd dev
sudo gpasswd -a alice dev
id alice
usermod -G docker alice without -a replaces the supplementary groups, wiping the rest. Always write -aG.

sudo 授权

Bash
sudo visudo        # 永远用 visudo,它会检查语法
Text
# 允许 dev 组执行所有命令
%dev ALL=(ALL) ALL

# 免密执行特定命令
deploy ALL=(ALL) NOPASSWD: /bin/systemctl restart app

切换身份

Bash
su - alice         # 带环境变量切换
sudo -i            # 变成 root 的登录 shell
sudo -u www-data whoami

排查

Bash
id
groups
who
last | head

Friends & Partners