所以我已经阅读了很多与此相关的post,而且比以前更加困惑。 有各种工具,包括ttyrec,史努比,acct,rootsh,sudosh,ttyrpld,unix审计和更多的build议。
在我的情况下,我希望能够logging系统上执行的所有命令(如启用了时间戳的历史logging),但是我也想知道谁做了什么? 但是,我们都通过sshlogin到用户帐户的相同小部分(取决于我们在做什么)。 我怎样才能得到一个命令日志,其中包括“谁”会给我的信息(关于连接),所以我可以把这个动作追溯到一个特定的人作为一个普通的“用户”?
auditd软件包是为此devise的,您可以使用PAM为每个login名分配一个会话ID,以便您可以跟踪帐户上的活动返回到原始login名(然后检查login日志以确定该用户从哪里login),以及使用ausearch命令查找您感兴趣的事件。您可以阅读一个非常全面的指南,虽然其中一些细节将需要更改以符合您的发行版。 Redhat 在这里有一个FAQ和一些其他文档的网站。
由于这并不依赖于尝试将命令input到shell或logging用户的命令历史logging,它应该logging像打开vi(这可能是通过X或screen ),写一个脚本(可能是一个字符在一段时间用vi的剪切/粘贴命令和一些运行:.!/usr/games/fortune来获得一些你可能无法logging的源数据),然后运行:%!/bin/bash命令。
已经有各种各样的工具,你的问题(和这些答案)暗示像历史,史努比,审计,sudo日志等…但如果你有一个“帐户的子集”人们正在使用,有没有办法在服务器上告诉谁做了什么。 你可以明确地告诉谁做的是,如果用户有他们自己的专门使用的计算机,并使用键盘logging器来告诉他们在键盘上input的内容。
无论何时您分享帐户,都无法确定实际发生的事情,因为您需要进一步certificate谁在使用您的root帐户或bob帐户或您的员工正在做什么。 如果您试图调查特定事件中发生的事情,您可能需要审查您的访问政策和程序,您的恢复程序,评估您的员工和/或在必要时进行再培训(或对敏感账户的可信度)而不是直接把重点放在追查谁做了什么事情上,因为它可能会吸引更多的资源,而不是find做这件事的人。
否则,您可能需要查看法医调查技术,以便跟踪发生的事情(驱动器映像,日志跟踪等)。如果您没有调查事件,请查看您的政策并进行更好的跟踪和帐户validation(只有您根,只有鲍勃使用他的帐户使用sudo来获得更高的权限,安装和监视审计等),并小心不要让你的信任的圈子感觉像是被他们在显微镜下举行,或者你可能疏远人们尝试完成工作(或妨碍他们完成工作)。
Linux审计( http://people.redhat.com/sgrubb/audit/ )会给你最大的权力,看谁做了什么。 DerfK的答案中有更多关于它的内容。
但是,没有任何东西会告诉你,如果有n个人可以访问webadmin帐户,他们是以webadmin身份login的。 我build议为每个用户使用指定帐户,然后使用su – 或sudo从“function”帐户运行命令。