Wie man ein Skript veranlasst, Befehle als root auszuführen

Ich bin neu in Ubuntu und Bash-Skripten, aber ich habe geraderunUpdates.sh und fügte dies zu meinem @ hin.profile um es auszuführen:

if [ -f "$HOME/bin/runUpdates.sh" ]; then
    . "$HOME/bin/runUpdates.sh"
fi

Das Problem ist, dass das Skript so ausgeführt werden soll, als würde es von root ausgeführt (da ich mein sudo-Passwort nicht eingeben möchte).

Ich habe ein paar Orte gefunden, die ich tun solltesudo chown root.root <my script> undsudo chmod 4755 <my script> und wenn ich es laufen lasse, sollte es als root laufen. Aber es ist nicht..

Das Drehbuch sieht für mich gut aus. Was vermisse ich?-rwxr-xr-x 1 root root 851 Mar 23 21:14 runUpdates.sh*

Können Sie mir bitte helfen, die Befehle in diesem Skript als root auszuführen? Ich möchte die sudors-Datei nicht wirklich ändern, sondern nur die Befehle in diesem Skript im Stammverzeichnis ausführen (falls möglich).

#!/bin/sh

echo "user is ${USER}"

#check for updates
update=`cat /var/lib/update-notifier/updates-available | head -c 2 | tail -c 1`;
if [ "$update" = "0" ]; then
        echo -e "No updates found.\n";
else
        read -p "Do you wish to install updates? [yN] " yn
        if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
                echo -e 'No\n';
        else
                echo "Please wait...";
                echo `sudo apt-get update`;
                echo `sudo apt-get upgrade`;
                echo `sudo apt-get dist-upgrade`;
                echo -e "Done!\n";
        fi
fi

#check for restart
restartFile=`/usr/lib/update-notifier/update-motd-reboot-required`;
if [ ! -z "$restartFile" ]; then
        echo "$restartFile";
        read -p "Do you wish to REBOOT? [yN] " yn
        if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
                echo -e 'No\n';
        else
                echo `sudo shutdown -r now`;
        fi
fi

Ich fügte hinzu, der Benutzer soll debuggen, er gibt immer meinen Benutzer nicht root aus und fordert zur Eingabe des sudo-Passworts auf (da ich die Befehle mit sudo aufrufe) oder sagt mir, dass Sie root sind. (wenn ich sudo entferne)

Auch gibt es eine Möglichkeit, die Update-Befehle stdout in Echtzeit auszugeben, nicht nur einen Block, wenn sie fertig sind?

(Ich habe es auch mit dem shebang als @ versuc#!/bin/bash)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage