Was ist der Unterschied zwischen chmod u+x
und gerecht chmod +x
? Ich habe eine Menge Tutorials gesehen, in denen es heißt u+x
, Skripte ausführbar zu machen. Das Weglassen von u
scheint jedoch keine Wirkung zu haben.
Was ist der Unterschied zwischen chmod u+x
und gerecht chmod +x
? Ich habe eine Menge Tutorials gesehen, in denen es heißt u+x
, Skripte ausführbar zu machen. Das Weglassen von u
scheint jedoch keine Wirkung zu haben.
Antworten:
Die Manpage von chmod
deckt das ab.
Dies bedeutet, dass chmod u+x somefile
nur der Eigentümer dieser Datei Ausführungsberechtigungen chmod +x somefile
erhält, wohingegen dies dasselbe ist wie chmod a+x somefile
.
Das Format eines symbolischen Modus ist
[ugoa...][[+-=][rwxXstugo...]...][,...]
. Es können mehrere symbolische Operationen angegeben werden, die durch Kommas getrennt sind.Eine Kombination der Buchstaben 'ugoa' steuert, welche Benutzer auf die Datei zugreifen: der Benutzer, dem sie gehört (u), andere Benutzer in der Dateigruppe (g), andere Benutzer, die nicht zur Dateigruppe gehören (o), oder alle Benutzer (a). Wenn keine von diesen angegeben ist, ist der Effekt so, als ob 'a' angegeben wäre, aber die in der umask gesetzten Bits sind nicht betroffen.
chmod +x file
unterscheidet sich von chmod a+x file
- siehe Ravexinas Antwort für Details.
Wenn Sie dies nur tun, +x
wird dies auf alle Flags angewendet: [u] ser, [g] roup, [o] thers.
Geben Sie man chmod
für weitere Informationen.
Zunächst empfehle ich Ihnen, diese Fragen und die unten verlinkten Antworten zu lesen:
Es hilft Ihnen, alle notwendigen Teile zu verstehen, die Sie wissen müssen.
chmod +x
ist gleich chmod ugo+x
(Basierend auf umask
Wert)chmod a+x
ist gleich chmod ugo+x
(ohne Berücksichtigung des umask
Wertes)Das Ergebnis von chmod a+x
ist, das ausführbare Bit für alle (Eigentümer, Gruppe, Andere) zu setzen, richtig?
Da chmod +x
es jedoch ein bisschen knifflig ist, heißt es " umask
Wert verwenden" und basierend auf diesem Wert addieren Sie das x
zu jedem, der erlaubt ist.
Also, wenn das umask
meiner Umgebung ist 0002
:
$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
Es wird zu x
Benutzer (Eigentümer), Gruppe und anderen hinzugefügt , in dieser Situation (die für die meisten Systeme die Standardsituation ist) ist es genau wie chmod ugo+x
oder genauso chmod a+x
oder in einer ausführlicheren Form:
chmod u+x,g+x,o+x
Können Sie die Verbindung zwischen chmod u+x,g+x,o+x
und die Ausgabe von erkennen umask -S
?
Jetzt ändern wir umask
die aktuelle Shell auf 0003
:
$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
Wie Sie jetzt sehen können, erhalten nur der Eigentümer und die Gruppe das ausführbare Bit und nicht die anderen. Es bedeutet chmod +x
jetzt gleich chmod u+x,g+x
oder chmod ug+x
.
Was passiert , wenn ich laufe chmod +w
auf eine Datei nach der Einstellung umask
zu 0003
?
Wie zuvor betrifft es nur user
und group
der Datei, da 3 auch die Schreibberechtigung (2) entfernt.
Dies hat den gleichen Effekt, wenn Sie etwas entfernen wie chmod -w
:
$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx
chmod u+x
macht die Datei für Ihren Benutzer ausführbar (es wird sie nur für Ihren Benutzer hinzugefügt, obwohl sie möglicherweise bereits vom Gruppeneigentümer oder "anderen" ausführbar ist).
chmod +x
oder chmod a+x
('all plus executable bit') macht die Datei für alle ausführbar.
Wenn Sie dies für ein Verzeichnis tun, wird das Verzeichnis stattdessen durchsuchbar. Dh, Sie können den Inhalt eines Verzeichnisses auflisten, für das Sie die Berechtigung + x haben.
chmod u+x file
bedeutet, dass Sie das ausführbare Bit zum Eigentümer der Datei hinzufügen, während Sie das ignorieren umask
(Ihr Mod wird gesetzt, keine Frage).
chmod +x file
bedeutet , dass das ausführbare Bit an den Eigentümer, Gruppe und andere hinzufügen , während die Berücksichtigung umask
(Überprüfen Sie zunächst mit umask
dann gelten die Mods, könnte es unterschiedliche Auswirkungen auf umask Wert basierend haben).
Lassen Sie uns zwei Dateien erstellen:
$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file2
Jetzt stelle ich die umask
auf „111“ ausführbare Bits zu entfernen: umask 111
.
$ chmod u+x file1
$ chmod +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file2
Wie Sie sehen können, hat das chmod
ignorierte umask
und das file1 ausführbare Bit für seinen Besitzer, das zweite hat jedoch nichts getan, da es den Wert von umask berücksichtigt.