使用 su 我是哪个用户?

使用 su 我是哪个用户?

当我经常需要在复制文件等时设置适当的权限时,我会使用 su,但忘记是否使用过 su 来实现这一点,例如:

root@host> su bob
bob@host> copy folderA folderB

但有时我会忘记我是以 bob 身份登录的,还是以 root 身份登录后通过 su 变成 bob 的,这有什么关系?完整的例子如下:

bob@host> su
....
root@host> su bob
bob@host> cp folderA folderB
....
bob@host> ????????

现在,我忘记我是否直接登录到计算机或者是否通过 su 登录,我可以按 CTRL-D,它会告诉我我是否是 root,但如果不是,我将被注销。

我知道 sudo 很好而且安全,但我很好奇是否有办法在不避免使用 su 的情况下做到这一点。

有人有什么想法吗?

答案1

您可以通过查看树中正在运行的进程来做到这一点。

ps axjf

查看长输出,直到找到类似这样的内容:

    1  2426  2426  2426 ?           -1 S<s      0   3:35 /usr/sbin/sshd
 2426  7024  7024  7024 ?           -1 S<s      0   0:00  \_ sshd: user1 [priv]
 7024  7029  7024  7024 ?           -1 S<    1002   0:00      \_ sshd: user1@pts/0
 7029  7030  7030  7030 pts/0    29857 S<s   1002   0:00          \_ -bash
 7030 29831 29831  7030 pts/0    29857 S<       0   0:00              \_ su
29831 29833 29833  7030 pts/0    29857 S<       0   0:00                  \_ bash
29833 29845 29845  7030 pts/0    29857 S<    1017   0:00                      \_ su user2
29845 29846 29846  7030 pts/0    29857 S<    1017   0:00                          \_ bash
29846 29857 29857  7030 pts/0    29857 R<+   1017   0:00                              \_ ps axjf

你可以看到我以 user1 身份登录,然后 su 为 root,再 su 为 user2

这个命令在 Debian 上对我来说很好用。如果你使用不同版本的 Linux 并且它不起作用,只需查看 ps 的手册页并搜索单词“tree”

答案2

你可以使用它whoami来告诉你有效的用户ID,也可以使用它who am i来告诉你你以谁的身份登录。

$ who am i
iain     pts/0        2011-09-15 17:33 (192.168.1.104)
$ whoami
iain

$ su -
# whoami
root
# who am i
iain     pts/0        2011-09-15 17:33 (192.168.1.104)

# su - user1
$ whoami
user1
$ who am i
iain     pts/0        2011-09-15 17:33 (192.168.1.104)

答案3

last命令可以显示最后登录的用户。

相关内容