diff --git a/bin/aleesa-telegram-bot b/bin/aleesa-telegram-bot index 21819e7..ddd2702 100755 --- a/bin/aleesa-telegram-bot +++ b/bin/aleesa-telegram-bot @@ -34,7 +34,7 @@ my $runAsUid = $<; my $piddir = "/var/run/" . basename (abs_path ($0)); my $C = loadConf (); -# if we run under root, create pid dir and set correct owner for it +# if we run under root, create pid dir and set correct owner for it, same for debug log if it is defined if ($< == 0) { my $user = $C->{user}; die "Unable to run as root, please define unprivileged user in config.json\n" unless (defined ($user)); @@ -60,25 +60,22 @@ if ($< == 0) { } } -# script intended to run as "unit" user, so drop privs to "unit" user +# drop privs setgid ($gid) or die "Unable to switch to group of $user($!)\n"; setuid ($uid) or die "Unable to switch to account $user($!)\n"; +} else { + $piddir = $workdir; } # double fork attach to /dev/null all stdio and go background daemonize (); # write pidfile -my $pidfile; - -if ($runAsUid == 0) { -# TODO: handle case where we run with unpriv. user - $pidfile = sprintf ("%s/%s.pid", $piddir, basename (abs_path ($0))); - logger ("Creating pidfile at $pidfile"); - open (PID, ">", $pidfile) or die "Error opening $pidfile: $!\n"; - print PID $$ or die "Error writing to $pidfile: $!\n"; - close PID; -} +my $pidfile = sprintf ("%s/%s.pid", $piddir, basename (abs_path ($0))); +logger ("Creating pidfile at $pidfile"); +open (PID, ">", $pidfile) or die "Error opening $pidfile: $!\n"; +print PID $$ or die "Error writing to $pidfile: $!\n"; +close PID; # set correct proctitle $0 = abs_path ($0);