我正在尝试找出一种快速简单的方法来查看每个人的有效用户 ID 列表...我本以为如果有人切换了用户帐户,“w”或“who”将能够显示...但是它只显示他们登录时使用的真实用户 ID。
答案1
一种方法是将fuser
命令应用于 中的伪终端设备/dev/pts
,例如sudo fuser -v /dev/pts/*
。
例如,我登录到 Linux 系统并user1
运行,然后通过另一个终端sudo su user2
再次登录(作为)。user1
运行后sudo fuser -v /dev/pts/*
,我得到以下输出:
USER PID ACCESS COMMAND
/dev/pts/0: user1 5533 F.... bash
root 6291 F.... sudo
/dev/pts/1: user1 5655 F.... bash
root 5748 F.... sudo
root 5752 F.... su
user2 5753 F.... bash
查看此处的第二个输出块(对应于/dev/pts/1
),您可以看到user1
已切换为user2
。有关此方法的更多信息,您可能需要查阅以下帖子:我们如何知道谁在伪终端设备的另一端?
答案2
登录信息将显示在 /var/log/secure 文件 (red hat\centos) 或 /var/log/auth.log (debian\ubuntu) 中,并且登录信息的格式包含行文本“session opening for” ,因此cat /var/log/(secure OR auth.log) | grep "session opened for"
应该提供如下登录列表:
Jan 9 07:07:07 主机名 su:pam_unix(su:session):由 user2 (uid=2000) 为用户 user1 打开的会话
ps aux | grep username
应该列出在“用户名”下运行的 shell,这是检查“用户名”活动的快速方法,如果您不希望找到任何“用户名”活动,则非常引人注目。但这不会告诉您谁以“用户名”登录,因此仍然需要查阅日志文件。
对于大量用户来说,这些检查可能会变得很麻烦,我希望有一些类似ps -eo ruid,euid
针对用户而不是所有进程的检查,但我发现没有那么简单。
答案3
调查解决方案:
我遇到了这个问题,试图确定谁通过服务帐户攻击服务器。
通过sudo
进入服务帐户然后检查,~/.ssh/authorized_keys
我能够识别用户并与他们讨论他们的使用情况。
无论如何,这就是我解决问题的方法并且它有效......