Entschuldigen Sie meine Ausdrucksweise und ich hoffe, ich habe meine Frage so klar wie möglich beschrieben.
Ich verwende ein Red-Hat-System. Derzeit bin ich ein Superuser im System und muss sudo python cuckoo.py
Folgendes tun, um dieses Python-Programm auszuführen. Es liest und schreibt in einem bestimmten Verzeichnis namens „Cuckoo“.
Nun möchte ich einem normalen Benutzer Zugriff auf diese „cuckoo.py“ sowie das Arbeitsverzeichnis gewähren. Allerdings möchte ich diesem Benutzer gleichzeitig keine Superuser-Berechtigungen erteilen, da dies mein System beschädigen könnte.
Wie kann ich also den normalen Benutzer direkt anrufen lassen, python cuckoo.py
ohne dass er die Fehlermeldung „Zugriff verweigert“ erhält?
Ich bin für jede Hilfe und jeden Kommentar dankbar. Und wenn ich einige wirklich schlechte Wortkombinationen verwende, die etwas unklar machen, weisen Sie mich bitte ebenfalls darauf hin, und ich werde mein Bestes tun, um es ausführlicher zu erklären.
Danke!
EDIT: Vielleicht sind meine Worte nicht ganz klar... Ich möchte diesen normalen Benutzer nicht in „root“ aufnehmen. Ich habe gerade eine Gruppe erstellt und diesen normalen Benutzer der Gruppe hinzugefügt, und die Verzeichnisberechtigung ist auf 755 eingestellt. Aber ich möchte, dass die Gruppe Schreibberechtigung hat, damit alles reibungslos läuft cuckoo.py
. Ich frage mich also, wie ich sowohl root als auch dieser Gruppe Lese-, Schreib- und Ausführungsberechtigungen geben kann?
Antwort1
Wenn das Skript nur deshalb als Root ausgeführt werden muss, um in Ihrem spezifischen Verzeichnis lesen/schreiben zu können, gibt es zwei Möglichkeiten, dies zu lösen (um einem normalen Benutzer die erfolgreiche Ausführung des Skripts zu ermöglichen):
- Erstellen Sie eine Gruppe, machen Sie den Ordner, in dem Sie arbeiten, zum Eigentümer dieser Gruppe und fügen Sie den Benutzer zu dieser Gruppe hinzu.
sudo groupadd <groupname>
sudo usermod -a -G <groupname> <username>
sudo chgrp -R <groupname> <folder>
- Ändern Sie einfach die allgemeine Berechtigung des Ordners (nicht empfohlen, wenn Sie nicht möchten, dass jeder Benutzer auf Ihrem Computer auf Ihren Ordner zugreifen kann
cuckoo
).
sudo chmod -R 664 ./cuckoo
Diese Berechtigung ermöglicht Lesen und Schreiben für Besitzer, Gruppe und Welt
Antwort2
Es scheint, dass ich die Frage falsch interpretiert habe. Wenn das Skript unabhängig davon als Root ausgeführt werden muss und Sie möchten, dass ein normaler Benutzer es ausführen kann, können Sie die Anweisungen aufdiese AskUbuntu-Frage.
Bedenken Sie, dass Sie die Berechtigungen in dieser Datei streng sperren müssen, damit dies sicher ist.
Machen Sie die Datei zum Root-Eigentümer und zur Gruppe „Root“:
sudo chown root.root <my script>
Legen Sie nun den Sticky But fest und machen Sie ihn für alle ausführbar und nur für Root beschreibbar:
sudo chmod 4755 <my script>
Bedenken Sie, dass, wenn dieses Skript die Eingabe oder Bearbeitung von Dateien zulässt, dies auch als Root erfolgt.
Das SetUID-Bit sorgt dafür, dass ein Skript oder eine Binärdatei immer als Eigentümer der Datei/Binärdatei ausgeführt wird. Ein Beispiel für eine solche Binärdatei ist „passwd“.