How can I pass Root Password to a script

Solution 1:

There's a lot of security implications in this, but let's get right to the best way to handle this.

Don't use the root password directly. Use sudo to run the scripts. Sudo is installed by default on Ubuntu and is available on almost all popular Linux distributions in the package repositories. Once sudo is installed, you'll want to edit /etc/sudoers.

su -
visudo
# add something like the following:
Cmnd_Alias SCRIPT=/path/to/script1
script_user ALL=NOPASSWD: SCRIPT

Thus script_user can run the first script as root through sudo, which would then launch the other script as root. For more information about the sudoers file, see the sudoers(5) man page on your system.

But do your scripts absolutely have to run as root? Most times this isn't required at all, but is done out of convenience.

Solution 2:

Another option would be to set suid on the file to root. Example: chmod u+s script.sh as root so when a normal user executes the script it runs with the file permissions of the owner aka root.

Just for your own knowledge if you don't want to set sudo to run without a password you can pass the password to sudo through stndin like echo PASSWORD|sudo -S ./script.sh

However this can be a security concern as it will show the password in history or anyone watching like "ps". You can also look into Expect and Empty.