linux基础知识-10

可以通过/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

原文地址:https://www.cnblogs.com/myccloves/p/9309716.html