### :-: UID 和 GID
Linux 是一个支持多用户的操作系统,每个用户都有 User ID(UID) 和 Group ID(GID),UID 是对一个用户的单一身份标识,而 GID 则对应多个 UID。知道某个用户的 UID 和 GID 是非常有用的,一些程序可能就需要 UID/GID 来运行。可以使用 id 命令来查看:
```
$ id root
uid=0(root) gid=0(root) groups=0(root)
$ id wzhrdx
uid=1000(wzhrdx) gid=1000(wzhrdx) groups=1000(wzhrdx),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),114(netdev)
```
UID 为 0 的 root 用户类似于系统管理员,它具有系统的完全访问权。我自己新建的用户 wzhrdx,其 UID 为 1000,是一个普通用户。GID 的关系存储在 /etc/group 文件中:
```
$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
......
```
所有用户的信息(除了密码)都保存在 /etc/passwd 文件中,而为了安全起见,加密过的用户密码保存在 /etc/shadow 文件中,此文件只有 root 权限可以访问。
`$ sudo cat /etc/shadow`
由于普通用户的权限比较低,这里使用 sudo 命令可以让普通用户以 root 用户的身份运行某一命令。使用 su 命令则可以切换到一个不同的用户:
```
$ whoami
wzhrdx
$ su root
$ whoami
root
```
whoami 用于打印当前有效的用户名称,shell 中普通用户以 $ 开头,root 用户以 # 开头。在输入密码后,我们已经从 wzhrdx 用户转换到 root 用户了。