EDIT: diesSticky Bit aktiviert Skript kann nicht in eine Stammdatei schreibenscheint ein ähnliches Problem zu sein
BEARBEITEN:Wie kann ich SetUID in einem Shell-Skript verwenden, um es als Nicht-Root-Benutzer auszuführen?ist auch sehr ähnlich.
Ich habe ein Skript, nennen wir es read.sh. Ich habe eine Datei, nennen wir sie geheim.
# cd /home/normie
# echo "some stuff" > secret
# echo "#!/bin/bash" > read.sh
# echo "cat secret" >> read.sh
# chmod 600 secret
# chmod 4755 read.sh
# su normie
$ ./read.sh
<<Error about not having access to secret>>
Habe ich etwas übersehen? Ich dachte, das SUID-Bit würde das Skript als Eigentümer ausführen? Wenn ich das Folgende ausführe
# echo "touch newfile" > sumfile.sh
# chmod 4755 sumfile.sh
# su normie
$ ./sumfile.sh
$ ls -alh
<<newfile shows as owned by root>>
Was ist hier los und wie kann ich es so machen, wie ich es will? Ich will, dass normale Benutzer ein bestimmtes Skript mit vollem Root-Zugriff ausführen. (Ich dachte, das wäre es, was das Suid-Bit macht.)
Antwort1
Installieren Sie sudoapt install sudo
Machen Sie die relevanten Benutzer zu einem Teil einer Gruppegroupadd group && usermod -g group user
Fügen Sie Folgendes zu /etc/sudoers hinzu%group (ALL)=(root:root) NOPASSWD:/path/to/script.sh
Fügen Sie .bashrc einen Alias hinzualias ALIAS='sudo /path/to/script.sh'" >> ~user/.bashrc
Alle Mitglieder der Gruppe können das betreffende Skript jetzt als Root ausführen.
Antwort schamlos geklaut vonWie kann ich SetUID in einem Shell-Skript verwenden, um es als Nicht-Root-Benutzer auszuführen?(Benutzer9517)