Was macht chmod -u?

19

Durch Zufall bin ich weggelaufen chmod -u filenameund es hat mir alle Berechtigungen genommen, die ich hatte filename.

Die Manpage verweist nicht auf eine -uOption. Beim Experimentieren konnte ich feststellen, dass nicht alle Berechtigungen entfernt werden, sondern nur der Lese- und Ausführungszugriff, wobei der Schreibzugriff intakt bleibt.

Was genau macht das?


Meine Schlussfolgerung oben ist falsch, ich denke jetzt, dass es die Berechtigungen, die der Eigentümer hat, aus allen Kategorien entfernt.


Ich denke, das Verhalten ist analog zu a=u, nur ist es -anstelle von =und akann genauso fallengelassen werden, wie es zum Beispiel mit kann a+x.

y_wc
quelle
6
+1 für das Stellen einer grundlegenden Frage, die nicht in der Manpage enthalten ist.
1
„Das Format eines symbolischen Modus ist [ugoa...][[-+=][perms...]...], in dem perms entweder Null oder mehrere Buchstaben aus dem Satz rwxXst, oder einen einzelnen Buchstaben aus dem Satzugo “ (GNU chmod man - Seite); POSIX ist ziemlich undurchsichtig, definiert jedoch eine "Permcopy" -Produktion für denselben Effekt.
Michael Homer
1
@MichaelHomer Es sagt nicht, was es tut.
y_wc
1
@y_wc "Anstelle eines oder mehrerer dieser Buchstaben können Sie genau einen der Buchstaben ugo angeben : die Berechtigungen, die dem Benutzer erteilt wurden, dem die Datei gehört ( u), die Berechtigungen, die anderen Benutzern gewährt wurden, die Mitglieder der Gruppe der Datei sind ( g). und die Berechtigungen, die Benutzern gewährt werden, die keiner der beiden vorhergehenden Kategorien angehören ( o). "
Michael Homer
1
Ja, das habe ich gelesen. Ich sehe nicht, dass es erwähnt, was es tut. Dort steht, dass ich einen dieser Buchstaben spezifizieren kann. Wenn Sie beispielsweise angeben, uwerden die Berechtigungen angegeben, die dem Benutzer erteilt werden, dem die Datei gehört. Aber es sagt nicht, was es tut. Was heißt überhaupt spezifizieren?
y_wc

Antworten:

19

Dies ist keine Option, sondern eine standardmäßige (aber ungewöhnliche) Methode zum Festlegen der Berechtigungen. Es bedeutet (zu entfernen -) die Berechtigungen mit dem Dateibesitzer (assoziiert u), für alle Benutzer (kein voraus u, goder o). Dies ist in der Manpage dokumentiert.

Die Manpage von GNU chmod dokumentiert dies als:

Das Format eines symbolischen Modus lautet [ugoa...][[-+=][perms...]...], wobei permsentweder null oder mehr Buchstaben aus der Menge rwxXstoder ein einzelner Buchstabe aus der Menge ugo enthalten sind

und später

Anstelle eines oder mehrerer dieser Buchstaben können Sie genau einen der folgenden Buchstaben angeben: ugo: die Berechtigungen, die dem Benutzer erteilt wurden, dem die Datei gehört ( u), die Berechtigungen, die anderen Benutzern gewährt wurden, die Mitglieder der Gruppe der Datei sind ( g) und ugo Berechtigungen, die Benutzern gewährt werden, die keiner der beiden vorhergehenden Kategorien angehören ( o)

Dies -ubedeutet, dass -alle Berechtigungen, die derzeit für den Eigentümer ( u) aktiviert sind, für alle a-uBenutzer entfernt ( ) werden (entspricht , außer dass die aktuelle Umask eingehalten wird). Das ist zwar nicht oft sehr nützlich, chmod +uaber manchmal ist es das Analoge , die Berechtigungen des Besitzers auf andere zu kopieren, wenn Sie beispielsweise rekursiv arbeiten.


Es ist auch in POSIX dokumentiert , aber etwas unklarer definiert: Die Berechtigungsspezifikation ist weit gefasst who[+-=]perms(oder eine Zahl), und deren Auswirkungen werden weiter spezifiziert:

Die permcopy Symbole u, gund owerden die aktuellen Berechtigungen mit dem Benutzer, eine Gruppe zugeordnet darstellen, und andere Teile der Datei Modusbits, respectively. permBezieht sich im weiteren Verlauf dieses Abschnitts auf die Nicht-Terminals permund permcopyauf die Grammatik.

und dann

-

... Wenn who nicht angegeben ist, werden die Dateimodusbits, die durch perm für den Eigentümer, die Gruppe und andere Berechtigungen dargestellt werden, mit Ausnahme derjenigen mit entsprechenden Bits in der Dateimoduserstellungsmaske des aufrufenden Prozesses, gelöscht.

Michael Homer
quelle
Danke, Michael. Die POSIX-Dokumentation überzeugt. Die GNU jedoch ... Bitte sehen Sie diesen Kommentar von mir. Ich verstehe nicht, wie das, was nach "So" kommt, aus dem, was vorher war. permskann sein u, dass ich bekam. Ja, ugibt die Berechtigungen oder den Besitzer an. Aber wie folgt daraus, dass -udie Berechtigungen des Eigentümers (Modul umask) von allen Benutzern entfernt werden?
y_wc
Denn genau das -tut es immer: Es entfernt die angegebenen Berechtigungen von der angegebenen Benutzerklasse. -uist genau analog zu -woder (näher) zu ugo-u.
Michael Homer
Ich wollte gerade sagen, dass ich nicht hierher gekommen bin, um die Dokumentation zu besprechen, und dass ich froh war, einfach zu verstehen, was los ist, aber die Dokumentation hat einfach geklickt. Vielen Dank.
y_wc
Könnte ich Sie mit einer anderen chmodDokumentationsfrage belästigen? Lassen Sie mich wissen, wenn Sie der Meinung sind, dass dies eine separate Frage verdient. "und = bewirken, dass sie hinzugefügt und nicht erwähnte Bits entfernt werden, mit der Ausnahme, dass die nicht erwähnten gesetzten Benutzer- und Gruppen-ID-Bits eines Verzeichnisses nicht betroffen sind." chmod u=rx directoryLässt die Berechtigungen des Besitzers als rwx. Aber das ist nicht was passiert, stattdessen werden sie die erwarteten r-x. Interpretiere ich etwas falsch?
y_wc
Es heißt, dass die sBits setuid / setgid ( ) allein gelassen werden, wenn Sie sie nicht erwähnen, und alles andere, was Sie nicht angegeben haben, wird entfernt.
Michael Homer
2

Die Antwort ist ein bisschen ähnlich wie /unix//a/429424/255251 .

chmod -u file_name

entfernt nicht alle Berechtigungen, berücksichtigt jedoch den umaskWert.

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

Ändern Sie nun den umask-Wert

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
Prvt_Yadav
quelle
2
Lehrreich, gut zu wissen und sehr nützlich, aber ich denke, das ist nicht wirklich das Problem, obwohl es sehr verwandt ist. Vielen Dank.
y_wc