Ist es möglich, das Recht zum Kopieren von Dateien zu verweigern?
Ich habe ein Skript, das von anderen ausführbar sein sollte. Sie dürfen die Datei auch lesen (obwohl es kein Problem wäre, das Lesen zu verbieten). Ich möchte aber nicht, dass das Skript geändert und ausgeführt wird.
Es ist kein Problem, diese Berechtigungen festzulegen, aber man kann das Skript leicht kopieren, ändern und ausführen. Kann das überhaupt vermieden werden?
Das Betriebssystem ist Red Hat Enterprise Linux Workstation Version 6.2 (Santiago).
+rx
oder+x
für den Benutzer (oder Gruppe) , die es durch ausführen kannchmod '+rx' <user or group> '<exec file>'
-rwxr-x---
kann nicht von mir geändert werden. Wenn ich es kopiere (und daher der Besitzer dieser Kopie bin), kann ich es später schreiben und ausführen ... @RichHomolka Bearbeitet die FrageAntworten:
Sie können dafür sudo verwenden.
Sie können Ihren Benutzern erlauben, Ihr Skript und nur dieses Skript zu bearbeiten.
Schritt für Schritt:
Erstellen Sie das Systemkonto "executor_account" (Sie können einen beliebigen Namen verwenden) und geben Sie ihm Berechtigungen für Ihr Skript. Verwenden Sie dafür kein Root-Konto.
Konfigurieren Sie sudo.
Sie müssen lernen, wie man sudo benutzt und Ihren Benutzern erlauben, "sudo executor_account myscript.sh" zu erstellen und sonst nichts. Es ist möglich, dass sie Dateien ausführen, die sie nicht ausführen können. Ich bin kein Linux-Experte, ich werde dies nicht erklären, aber Sie können überall viele Tutorials über sudo finden.
Ich denke, das ist die einzige Möglichkeit, dem Benutzer das Ausführen von Dateien zu ermöglichen, die er nicht lesen kann.
Das Skript wird von einem anderen Benutzerkonto ausgeführt, sodass alle "Produkte" des Skripts (Protokolle usw.) dem von Ihnen erstellten speziellen Konto gehören. Man muss damit irgendwie umgehen, wenn ein Skript oder ein Programm, das von einem Skript ausgeführt wird, einige Dateien erzeugt.
quelle
Nein, mit Linux-Dateiberechtigungen ist dies nicht möglich. Benutzer müssen das Shell-Skript lesen können, um es ausführen zu können. Dies bedeutet, dass sie eine Kopie erstellen, ändern und ausführen können.
quelle
Das ist ein bisschen kompliziert, aber - schreiben Sie ein C-Programm, das so aussieht:
An der " Insert Magie hier. Geben Sie den Code ein, in den das Skript geschrieben werden soll
sh
. zum Beispiel,Wenn es mehr als nur ein paar Zeilen sind, kann es einfacher sein, es als String-Array zu speichern. Kompilieren Sie dann dieses Programm und lassen Sie die Binärdatei nur ausführen (z. B. Modus 710 oder 711).
Keine Lösung ist narrensicher, da Benutzer sehen können, welche Befehle
ps
in einem anderen Fenster ausgeführt werden. Dies gibt ihnen jedoch nur fragmentarische Einblicke in das Skript.Wenn die Logik Ihres Skripts sehr sensibel ist, besteht die eigentliche Antwort natürlich darin, es in eine kompilierbare Sprache zu übersetzen.
quelle