Wenn es darum geht, eine Datei ausführbar zu machen, was ist der Unterschied zwischen chmod 755
und chmod +x
und wann würde ich welche verwenden? Ich habe bisher nur benutzt chmod +x
und ich habe gerade etwas gelesen und es benutzt chmod 755
und ich konnte nicht sagen, ob es besser war, es zu benutzen chmod 755
oder nicht chmod +x
.
command-line
permissions
chmod
Darth4212
quelle
quelle
chmod +x
Setzt das Flag "Alle ausführbaren Dateien", ohne andere Berechtigungen zu ändern.chmod 755
setzt rwxr-xr-xAntworten:
Kurzfassung:
Um sie vergleichen zu können, sollten wir sie aus der gleichen Perspektive betrachten, also:
chmod +x
ist gleichchmod ugo+x
(Basierend aufumask
Wert)chmod 755
entsprichtchmod u=rwx,go=rx
Erläuterung:
Erstens sollten Sie wissen, dass:
+
bedeutet, dass diese Berechtigung zu den anderen Berechtigungen hinzugefügt wird, über die die Datei bereits verfügt.=
bedeutet, alle Berechtigungen zu ignorieren, sie genau so einzustellen, wie ich sie zur Verfügung stelle.read = 4, write = 2, execute = 1
Hier ist die Binärlogik dahinter (falls Sie interessiert sind):
Mit
+x
sagen Sie, dass Sie+
das ausführbare Bit (x
) dem Eigentümer, der Gruppe und anderen hinzufügen sollen .ugo+x
oderu+x,g+x,o+x
x
werden alle davon berücksichtigt. Und wie @Rinzwind betonte, basiert es auf demumask
Wert und fügt das hinzu, was esumask
erlaubt. erinnern , wenn Sie das Ziel angeben , wieo+r
dannumask
keine Wirkung mehr hat.u+x
, um dem Eigentümer nur ausführbares Bit hinzuzufügen.Mit
755
spezifizieren Sie:u=rwx
(4 + 2 + 1 für den Besitzer)g=rx
(4 + 1 für Gruppe)o=rx
(4 + 1 für andere)Also
chmod 755
ist wie:chmod u=rwx,g=rx,o=rx
oderchmod u=rwx,go=rx
.quelle
chmod 755
Sie diese Bits verwenden , setzen Sie UND Sie löschen auch alle suid / sgid / sticky-Bits (die möglicherweise vorhanden waren) (zum Beispiel: NIEchmod 755 /tmp
). 755 sollte immer als 0755 betrachtet werden, dh die erste Oktalmenge von Bits wird ebenfalls auf 0 gesetzt.chmod +x
Fügt die Ausführungsberechtigung für alle Benutzer zu den vorhandenen Berechtigungen hinzu.chmod 755
Legt die755
Berechtigung für eine Datei fest.755
bedeutet vollständige Berechtigungen für den Eigentümer und Lese- und Ausführungsberechtigungen für andere.quelle
Ein anderer Weg , um es zu betrachten (was ich finde leichter zu verstehen) ist , dass
chmod +x
die Berechtigungen setzt relativ , währendchmod 755
sie sie Einstellung absolut .Nach
chmod 755
heißt lief auf eine Datei, die Berechtigungen werden 755 sein, oderrwxr-xr-x
.chmod +x
übernimmt nur die vorhandenen Berechtigungen und fügt der Datei Ausführungsberechtigungen hinzu .quelle
Ich empfehle, die chmod- Manpage zu lesen , um alle Details zu erfahren. Sie sehen nur zwei verschiedene Betriebsmodi, die mit dem Befehl chmod verfügbar sind, um dieselbe Aufgabe zum Ändern von Berechtigungen auszuführen.
Der Oktalmodus verwendet Zahlen und legt die gesamten Berechtigungen der Datei fest. Der Zeichenmodus verwendet die Buchstaben und wird im Allgemeinen verwendet, um nur vorhandene Berechtigungen zu ändern.
chmod 755
Legt fest,rwxr-xr-x
währendchmod +x
Berechtigungen angepasst werden, sodass dem Eigentümer, der Gruppe und der Welt ausführbare Berechtigungen hinzugefügt werden. Unter der Annahme einer Standarddateiberechtigungrwxr--r--
würde diese auf die gleichen Berechtigungen wie 755 von angepasstrwxr-xr-x
.quelle
Der Unterschied besteht darin, welche Berechtigungen festgelegt werden und in welchem Modus Sie sie festlegen.
Mit setzen
chmod +x
Sie das ausführbare Bit für alle - den Eigentümer, die Eigentümergruppe und die anderen Benutzer. Dies wird als symbolischer Modus bezeichnet. Um das zu zitierenman chmod
:Wenn
chmod 755
Sie Oktalzahlen verwenden, wird deren binäre Darstellung zum Festlegen bestimmter Berechtigungsbits verwendet. Die ersten drei Bits (links) entsprechen den Berechtigungen des Besitzers, die mittleren drei Bits den Gruppenberechtigungen und die letzten drei Bits (ganz rechts) den Berechtigungen aller anderen Benutzer. Die Reihenfolge der Bits ist immer gleich,read,write,execute
oderrwx
, genau weil die Reihenfolge gleich ist, setzt die einzelne Zahl bei der Konvertierung in die Binärdarstellung die Berechtigungsbits, für die das entsprechende Positionsbit in der Zahl 1 ist, und hebt die Einstellung auf, die 0 ist Speziell:7
ist im Binärformat 111, sodass Sie alle Lese-, Schreib- und Ausführungsbits für den Eigentümer festlegen.rwx
gesetzt ist.5
ist 101 in Binär, Sie setzen also Lese- und Ausführungsberechtigungen, deaktivieren jedoch Schreibberechtigungen. Da die Oktalzahl 5 für Gruppen- und andere Benutzer ist, haben diese beiden Kategorien die gleichen Berechtigungen. Damitr-x
ist gesetzt.Hier ist die kleine Demo:
quelle
Ein wichtiger Unterschied ist, dass chmod + umask-Einschränkungen unterliegt und chmod <octal> nicht.
Betrachten Sie das folgende Beispiel:
Wenn Sie also eine Delta-Änderung an Berechtigungen vornehmen möchten, die Ihren umask-Einstellungen entspricht, verwenden Sie die '+' - Syntax. Wenn Sie es jedoch absolut unabhängig von umask festlegen möchten, verwenden Sie das Format <octal> und stellen Sie fest, dass Sie alle Bits und nicht nur ein Delta angeben müssen.
quelle
Neben diesen schönen Antworten möchte ich einen kleinen, aber wahrscheinlich wichtigen Unterschied erwähnen. Der Befehl
chmod 755 file
ist äquivalent zuchmod 0755 file
. Wenn wir diesen Befehl für eine Datei ausführen, für die das SETUID-Bit oder das SETGID-Bit gesetzt ist, wird das SETUID / SETGID-Bit entfernt.chmod +x file
Lässt das SETUID / SETGID-Bit unberührt. Wir können dies im folgenden Beispiel sehen:quelle