当我经常需要在复制文件等时设置适当的权限时,我会使用 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命令可以显示最后登录的用户。