如何使用 id 命令?

admin8个月前笔记85
Linux 中的 id 命令

如下为 id 命令的语法:

id [options] [username]

在实际命令中,如果没有提供 username(即用户名),那么该命令将会显示当前登录用户的信息。

比如,下面例子为在 ubuntu 中显示当前登录用户的信息:

$ id
uid=1000(gliu) gid=1000(gliu) groups=1000(gliu),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),119(lpadmin),130(lxd),131(sambashare)

在上面的输出中,用户 gliu 的 uid为1000,gid 为 1000,这是用户 gliu 默认所属的主要组。

除此之外,用户 gliu 也是某些其他组的成员,这些组也显示在输出中。

以下是id命令的最常见选项:

选项描述
-u打印有效的用户ID
-g打印有效的组ID
-G打印用户所属的所有组的ID
-n打印名称(需与-u、-g 或 -G 组合)
-r打印真实ID(需与-u、-g 或 -G 组合)
“真实”与“有效”的用户ID和组ID

这可能会让你感到有些疑惑,什么是 “真实” 的用户ID?什么是 “有效” 的用户ID?

在系统中创建用户时,会为其指定用户名、用户ID(uid)和默认的组,该默认组的ID就是该用户的gid,这就是“真实”的用户ID和组ID。

同时,在Linux中,进程可以通过其他用户和组运行,所以还有第二组ID,即称为“有效”的ID。

大多数时候,“真实”ID和“有效”ID是相同的。但是也有不同的时候,也就是使用有效ID的时候,比如普通用户需要修改受保护的文件,最常见的场景就是使用 passwd 命令修改密码。修改密码其实是修改的 root 用户所属的 /etc/passwd 文件。

id 命令的一些例子

接下来我们介绍一些使用 id 命令的例子。

1,打印某个用户的 uid 和gid

要打印用户的 uid 和 gid,只需在 id 命令后指定用户名即可:

id <username>

可以列出 Linux 系统中所有的用户,以获取用户名。关于如何列出所有用户,我们后面会单独介绍。

2,仅打印用户的 UID

可以使用 -u 选项来打印用户的 uid。如前所述,如果省略用户名,它会显示当前登录用户的信息。如下语法结构:

id -u

注意,这里只会显示 uid,它是一个数值,而不是名称:

$ id -u
1000
3,仅打印用户的 gid

可以使用选项 -g 来打印用户的 gid。这里所说的 gid 是指用户所属的默认组的组ID,它是一个数值。

id -g

同样,它只会显示组的数字ID,看下面的例子:

$ id -g nobody
65534
4,打印用户所属的所有其他组的ID

一个用户可以属于多个组,这是 Linux 文件系统的基本特性。你可以使用 usermod 命令并将其添加到 sudo 组以授予其 root 权限。

可以使用 -G 选项显示用户所属的所有组的 ID:

id -G <username>

同样,这里也是只显示ID,为数值:

$ id -G gliu
1000 4 24 27 30 46 119 130 131
5,打印用户名称(而不是数字ID)

数字ID可能会让人弄混了,所以如果需要的话,可以使用 -n 选项,与 -u、-g 或者 -G 结合使用,来显示用户名。

比如,如果想要显示用户所属的所有组,可以这样使用:

id -nG <username>

我们使用先前的那个打印用户所有组的例子,添加 -n 选项,它会显示如下内容:

$ id -nG gliu
gliu adm cdrom sudo dip plugdev lpadmin lxd sambashare
打印真实的ID

以上所介绍的例子都显示的是“有效”的ID,但是几乎所有时候其也是“真实”的ID。但是,如果你想确保获得“真实”的ID,可以使用 -r 选项,将其与 -u、-g 或者 -G 结合使用:

id -ru <username>

关于它的输出,大家可以自行尝试一下看看。


相关文章

OpenAI 推出超神 ChatGPT 注册攻略来了

OpenAI 推出超神 ChatGPT 注册攻略来了

前几天,OpenAI 推出超神 ChatGPT,非常火爆。但是呢,因为不可抗力原因,大部分人无法体验到。这里我分享一下注册的攻略。准备首先能能访问 Google(前置条件,不能明确说,懂得都懂)你得有...

JavaScript对象重构

JavaScript对象重构

用常量来表示数字如果我们有很多重复的值且表示一样的含义,但没有明确地说明,那么我们应该将它们转换为常量,以便每个人都知道它们的含义,并且如果需要更改,我们只需更改一个地方就行了。例如我们可能会这样写代...

PPTP、L2TP、SSR、V2Ray、HTTP分别是什么有什么区别

PPTP、L2TP、SSR、V2Ray、HTTP分别是什么有什么区别

之前用过V2rayN,今天发现PPTP有些不明白的问题特来记录下相关的资料,PPTP和L2TP各是一种协议;网络上做这个代理的都有配套的的有手机端和PC端软件,好像是专门供给挂机和游戏用的;分别有静态...

简述数据中心网络技术简史

简述数据中心网络技术简史

数据中心的网络其实就是一个局域网,有数据和存储两大块:存储网络主要是FC技术,现在出现了IP SAN,基于以太网IP转发的存储,整体上来讲存储网络的技术发展并不快,花样也不多,以至于到现在很少有人讨论...

git config实用指南

git config实用指南

git config介绍作为现代软件开发中不可或缺的工具之一,Git 不仅提供了强大的版本控制功能,还允许用户根据自己的需求进行个性化配置。其中,git config 命令是我们最常用的管理 Git...

详解CentOS通过日志反查入侵

详解CentOS通过日志反查入侵

1 查看日志文件Linux查看/var/log/wtmp文件查看可疑IP登陆last -f /var/log/wtmp该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。