有一个 perl 脚本需要以 root 用户身份运行,但我们必须确保运行脚本的用户在最初登录时没有作为用户 'foo' 登录,因为在脚本中它将被删除。
那么我该如何找出该用户是否曾经在此期间模拟过 'foo' 用户,即使她已经多次 su-ed?
我发现一个有趣的 perl 脚本在调用以下两个 shell 脚本,但我认为这仅适用于 Solaris。
my $shell_parent =
`ps -ef | grep -v grep | awk \'{print \$2\" \"\$3}\' | egrep \"^@_\" | awk \'{print \$2}'`;
my $parent_owner =
`ps -ef | grep -v grep | awk \'{print \$1\" \"\$2}\' | grep @_ | awk \'{print \$1}\'`;
这需要在Linux和Solaris上都可以工作,我更愿意消除对shell的重复调用,并将整个内容保留在Perl中。
struct psinfo
中看到的,可能可以获取argv的地址,从进程内存中读取,但我真的不建议这样做)。 - Hasturkun