title: How can I find out the original username a process was started with?
body: <p>There is a perl script that needs to run as root but we must make sure the user who runs the script did not log-in originally as user 'foo' as it will be removed during the script.</p>
  
  <p>So how can I find out if the user, who might have su-ed several times since she logged in has not impersonated 'foo' at any time in that chain?</p>
  
  <p>I found an interesting perl script that was calling the following two shell scripts, but I think that would only work on Solaris.</p>
  
  <pre><code>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}\'`;
  </code></pre>
  
  <p>This needs to work on both Linux and Solaris and I'd rather eliminate the repeated calls to he the shell and keep the whole thing in Perl.</p>