可以通过/etc/passwd和/etc/group查看用户名,组名,用户ID,组ID等信息,但我们一般通过命令来查看用户相关的信息。
一、id命令
用id命令来确定用户的成员身份信息。
默认情况下(没有参数),id命令显示当前用户信息。 显示uid,gid,用户所属主要组,用户所属次要组。
如果只想要知道部分信息可以添加参数:
id [option] [username]
选项 | 说明 |
---|---|
-g, --group | 只打印主要组ID |
-G, --groups | 打包所有组id |
-u, --user | 只打印用户id |
-n,--name | 显示用户名或组名,默认是显示ID,需要和上面的选项配合使用 |
例:打印用户所有组
id -Gn
二、whoami命令
此命令打印当前用户名,与 id -un效果一样。
一般在bash shell的提示符中,显示了用户名,所以很少用。但有些shell只显示一个$,这样whoami就很有用了。
三、当前登录的是谁?
之前我们学过通过who命令来查看当前谁登录了系统。还有两个命令可以查看谁登录了系统:users, w
users最简单,只打印登录的用户名。
who命令可以显示用户名,登录的终端,登录的时间信息。
w显示更多的信息:
第一行显示:当前时间,自开机以来运行时间,用户数量,1,5,15分钟的平均负载。 之后显示的是:
列 | 说明 |
---|---|
USER | 用户名 |
TTY | 用户登录的终端 |
FROM | 如果用户从网络登录,显示登录地址 |
LOGIN@ | 用户开始会话时间 |
IDLE | 终端已经空闲的时间 |
JCPU | 与此终端会话相关的进程所消耗CPU时间 |
PCPU | 当前进程消耗CPU时间 |
WHAT | 用户当前进行进程 |
四、转换身份
在linux中,用户想临时变成另一个用户,比如:张三想临时用我的终端,这时需要切换(switch user)到他的用户,这个命令就是:su
su把用户id转换到指定的user,如果没有指定用户名则切换到root
su [options] [user]
选项 | 说明 |
---|---|
- | 使shell成为登录shell |
-c | 运行指定命令,然后返回 |
-m,-p | 保持当前环境 |
-s, --shell=SHELL | 用SHELL作为新用户的shell |
注意:在切换用户时,需要知道用户的密码。
(一)登录shell和非登录shell
当执行 su test 时称为非登录shell,这个shell运行的命令都属于test用户,但这个shell的许多环境都从原先用户那里继承。为了作为新用户完全登录需要执行: su - test,这个shell称为登录shell。
(二)切换到根用户
su -
su - root
不指定用户名,默认就切换到根用户,根用户的提示符是#,而普通用户的提示符是:$
五、次要组转换主要组
我们可以临时修改用户的主要组,使用newgrp命令。 注意这个组必须是用户的次要组(也就是把次要组转换为主要组),一旦用户注销后则恢复初始状态。
newgrp testgroup
如果newgrp后面没有参数,则切换到同用户名相同的组。
例:
touch abc创建文件abc,发现文件所属组是cclove, 之后用id -nG 查看一下当前用户的次要组有很多,我们选择lp做为主要组,使用:newgrp lp命令。 之后我们再创建文件 touch abd发现abd文件的属组变成了lp。
最后用id查看一下用户信息,发现主要组变成了lp