Re: Run script as root without sudo

From: Andriy Gapon <avg_at_FreeBSD.org>
Date: Thu, 19 Aug 2021 08:21:04 UTC
On 2021-08-19 08:31, Aristedes Maniatis via freebsd-stable wrote:
> I've got some scripts which are intended to run on a new EC2 instance
> right after it is created. Since the script needs to install packages it
> need to run as root. But because I don't have sudo installed at this
> point (it is a brand new instance), I've only got 'su' to get root.
> 
> The script itself is launched over SSH with the ec2-user account and
> there is no root password at this point in the startup.
> 
> My first attempt was to put this inside the script itself:
> 
> if ["$($whoami)" !="root" ];thenexec su -c"$0" exit1 fi
> 
> 
> But su complains that I'm not allowed to execute a command using the -c
> option as root.

-c option seems to be so confusing for some reason that it should bein
some FAQ document.

From the man page:
     -c class
             Use the settings of the specified login class.  The login class
             must be defined in login.conf(5).  Only allowed for the super-
             user.

You surely though that it did something else, right?
From the man page again:
     If the optional args are provided on the command line, they are
passed to
     the login shell of the target login.  Note that all command line
     arguments before the target login name are processed by su itself,
     everything after the target login name gets passed to the login shell.

> How else can I get this script running as root remotely in a completely
> unattended way?


-- 
Andriy Gapon