Linux 用户和用户组管理
useradd/usermod/groupadd、/etc/passwd 与 /etc/shadow、sudo 授权。
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 aliceusermod -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三个文件
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 aliceusermod -G docker alice 漏了 -a 会把用户的附加组替换成只有 docker,原来的组全丢。永远写 -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