linux ps查看进程显示的是用户ID,不是用户名是怎么回事?

linux ps查看进程显示的是用户ID,不是用户名是怎么回事?,第1张

使用ps命令时,发现部分用户显示的是用户名,有些用户显示的是UID,例如nmon程序的运行时webmaster,但是ps显示的不是直接显示uid 500。

通过man发现:8位用户名的账户能够显示完整的用户名,9位用户名的账户就显示了UID使用下面的命令来解决

ps -o ruser=userForLongName -e -o pid,ppid,c,stime,tty,time,cmd

注意:“userForLongName”是随便填写的,Linux会自动检查此字符串的长度,为15,则15位以下的用户名都可以正常显示。

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。

ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。

使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

可以使用whoami.

具体参考如下:

命 令:whoami 或者 who am i

功能说明:显示用户名称。

语法:whoami [--help][--version]

补充说明:显示自身的用户名称,本指令相当于执行"id -un"指令。

whoami 命令显示登录名。与使用命令 who 并指定 am i

不同,whoami 命令在有 root 用户权限时也有效,因为它不检查 /etc/utmp 文件。

该命令只出现在windows系列中的

windows 2000中。

参数:

 --help  在线帮助。

 --version  显示版本信息。

附:whoami

与who am i 的区别

who这个命令重点是用来查看当前有哪些用户登录到了本台机器上。

who -m的作用和who am

i的作用是一样的。

who -q用来显示当前登录用户的个数。

who am i

显示的是实际用户的用户名,即用户登陆的时候的用户ID。此命令相当于who -m。

who am i显示的是“登录用户”的用户名。

用Linux的术语来解释就是:(实际用户=uid,即user id。有效用户=euid,即effective user id)

whoami 显示的是有效用户ID.

whoami显示的是当前“ *** 作用户”的用户名。

先看看这三个命令的输出信息:

[jb51@jb51 ~]$ whoami

jb51

[jb51@jb51 ~]$ who am i

jb51

pts/3 2011-07-25 13:17 (:0.0)

[jb51@jb51 ~]$ who

jb51 :0 2011-07-25

09:54

jb51 pts/0 2011-07-25 09:55 (:0.0)

jb51 pts/1 2011-07-25 09:57

(:0.0)

jb51 pts/3 2011-07-25 13:17 (:0.0)

当我用sudo su(或者sudo su

-)更换到root用户之后,你再看看:

[jb51@jb51 ~]$ sudo su

[root@jb51 jb51]# whoami

root

[root@jb51 jb51]# who am i

jb51 pts/3 2011-07-25 13:17 (:0.0)

[root@jb51 jb51]# who

jb51 :0 2011-07-25 09:54

jb51 pts/0 2011-07-25

09:55 (:0.0)

jb51 pts/1 2011-07-25 09:57 (:0.0)

jb51 pts/3 2011-07-25

13:17 (:0.0)

Linux系统中,每个用户的ID都有两种,即用户ID(User ID,简称UID)和组ID(Group

ID,简称GID),这与文件拥有者和拥有群组两种属性所对应。

文章开头也提到了,Linux系统并不认识我们的用户名和密码,那问题来了,文件是如何判别它的拥有者名称及群组名称的呢?

每个文件都有自己的拥有者ID和群组ID,在显示文件属性时,系统会根据/etc/passwd和/etc/group文件中的内容,分别找到UID和GID所对应的用户名和群组名,最终显示出来。

在/etc/passwd文件中,利用UID可以找到所对应的用户名,在/etc/group文件中,利用GID可以找到所对应的群组名。

可以做个小实验,在Linux *** 作系统中,常用的有两个账户,分别为root超级管理员账户和普通账户,我们可以先使用root账号登录并执行命令vim

/etc/passwd,在该文件中找到普通用户并将其UID随意改一个数字,这是你会发现,当你查看普通账户所拥有的文件时,你会发现所有文件的拥有者并不是普通用户,而是数字。

一般情况下,当登录Linux *** 作系统后,会先寻找/etc/passwd是否有输入账号,如果没有,则跳出,如果有,则读取对应的UID与GID,随后进入/etc/shadow核对密码,一切完成后,则进入shell管控。

由此可见,UID与GID在日常的账户管理中,发挥着非常重要的作用,因为一不小心就可能访问不了自己的文件,所以温馨提示大家,不要随便改动自己的/etc/passwd与/etc/group文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6179071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存