Linux 的用户和组信息,本质上就是几个纯文本配置文件:
| 文件路径 | 存放内容 |
|---|---|
| /etc/passwd | 用户账户信息:用户名、UID、GID、家目录、默认 Shell |
| /etc/shadow | 用户密码哈希(仅 root 可读) |
| /etc/group | 用户组信息:组名、GID、组成员 |
查看命令:
cat /etc/passwd cat /etc/group sudo cat /etc/shadow
/etc/passwd 一行的结构:
mind:x:1000:1000:Mind:/home/mind:/bin/bash
依次为:用户名、密码占位符 x、UID、GID、备注、家目录、默认 Shell。
· **UID:**用户的数字编号。0 = root(超级管理员),普通用户一般从 1000 开始。
· **GID:**用户组的数字编号。系统实际识别的是 UID/GID 数字,用户名只是给人看的。
Ubuntu / Debian 推荐交互式的 adduser(自动建家目录、引导设密码):
sudo adduser testuser
通用底层命令 useradd(默认不建家目录,需手动加参数):
sudo useradd -m -s /bin/bash testuser2 # -m 建家目录,-s 指定默认 Shell sudo passwd testuser2 # 再设置密码
# -m 建家目录,-s 指定默认 Shell sudo passwd testuser2 # 再设置密码
sudo userdel testuser2 # 只删除账户 sudo userdel -r testuser2 # 连家目录一起删除(谨慎)
id testuser # 查看 UID、GID 和所属组 whoami # 当前我是谁 who / w # 当前登录在线的用户
sudo groupadd devteam sudo groupdel devteam
sudo usermod -aG devteam testuser
注意:-a 表示追加(append),-G 指定附加组。-a 一定不能省略,否则会把用户从其他组中移除!
修改组之后需要重新登录才会生效。
groups testuser # 查看某用户属于哪些组 getent group devteam # 查看组成员
sudo gpasswd -d testuser devteam # 从组里移除 sudo usermod -l newname oldname # 修改用户名 sudo usermod -d /new/home user # 修改家目录
· **su(switch user):**切换用户。su - testuser 加载完整环境,exit 退回。
· **sudo(substitute user do):**用当前用户身份,临时以 root 执行一条命令,使用自己的密码,更安全且可审计。
用户必须在 sudo 组中才能使用 sudo: sudo usermod -aG sudo testuser
ls -l file # 查看属主、属组、权限 sudo chown user:group file # 修改属主和属组 chmod 750 file # 修改权限
750 的含义(八进制):属主 7 = rwx(4+2+1),属组 5 = r-x,别人 0 = 无权限。
访问者分三类:属主 u、属组 g、其他人 o;权限分三种:读 r、写 w、执行 x。
本文作者:Deshill
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!