http://www.perlmonks.org?node_id=11110809


in reply to Syntax using user define $>

What are you trying to accomplish?

The expression $> && ($> == 0) should always be false and Deparse suggests that $> && $> eq 0 parses as that. Testing $> itself should be false iff you are running with EUID 0. Remember that UID values are numbers so you should compare them with the numeric comparisons rather than string comparisons in Perl; see perlop for more details.

Replies are listed 'Best First'.
Re^2: Syntax using user define $>
by bigal_george (Acolyte) on Jan 01, 2020 at 01:24 UTC
    OK sorry if confusing.
    Testing $> itself should be false when sudo - yes.
    Goal is to allow sudo when needed by files permissions and user otherwise,
    Info I had said that when running administrator these should be called:
    use strict;
    use warnings FATAL=>"all";
    if($>)
    {
    exec { "/path-to-wrapper-program" }
    ( "/path-to-wrapper-program",$0,@ARGV);
    }
    My confusion was that Id assumed the exec call was for sudo but now seems pointless, as application runs fine without.

      Programs should not automatically reinvoke themselves using sudo, ever. If the program needs to be run with privileges and does not have them, simply report the "Permission Denied" error you get from the system to the user and let the user take the hint to retry with sudo.