Warum gibt chmod + w anderen keine Schreibberechtigung (o)


17

Wenn ich chmod +w filenamees starte, gibt es keine Schreibberechtigung für und other, es gibt nur Schreibberechtigung für userund group.

Nach dem Ausführen dieses Befehls

chmod +w testfile.txt

laufende ls -l testfile.txtDrucke

-rw-rw-r-- 1 ravi ravi 20 Mar 10 18:09 testfile.txt

aber im fall von +rund +xfunktioniert es einwandfrei.

Ich möchte nicht verwenden chmod ugo+w filename.



1
Wenn Sie nicht verwenden möchten ugo, verwenden Sie a.
muru

Ja, aber ich möchte nur wissen, warum ich +wnicht arbeite.
Ravi Sevta

Deshalb habe ich zwei Kommentare hinterlassen.
muru

@muru. In Ihrer askubuntuAntwort behaupten Sie , Sie verweisen oben auf "Dieses Verhalten ist POSIX-vorgeschrieben und daher kein Fehler". Bitte beachten Sie, dass der POSIX-Anwendungstext nicht normativ ist und daher nicht von POSIX vorgeschrieben wird.
Fpmurphy

Antworten:


25

Ihre spezifische Situation

In Ihrer spezifischen Situation können wir vermuten, dass Ihre aktuelle umaskist002 (dies ist ein gemeinsamer Standardwert) und dies erklärt Ihre Überraschung.

In dieser speziellen Situation, in der der umaskWert 002 ist (alle Zahlen oktal).

  • +r meint ugo+r denn 002 & 444ist000 , mit dem alle Bits gesetzt werden können
  • +x meint ugo+x denn 002 & 111ist000 , mit dem alle Bits gesetzt werden können
  • aber +wheißt ug+wweil 002 & 222ist 002, was verhindert, dass das "o" -Bit gesetzt wird.

Andere Beispiele

  • Mit umask 022 +w würde bedeuten u+w.
  • Mit umask 007 +rwx würde bedeuten ug+rwx.
  • Mit umask 077 +rwxwürde bedeutenu+rwx.

Was hätte Ihren Erwartungen entsprochen?

Wenn Sie ändern , umaskum 000durch die Ausführung

umask 000

Dann in Ihrem Terminal

chmod +w file

setzt die Berechtigungen auf ugo + w.

Randnotiz

Beachten Sie, umask 000wie von ilkkachu vorgeschlagen, dass nicht jeder alle Ihre Dateien lesen und schreiben kann.

Dies umask 000bedeutet jedoch, dass jeder Benutzer, der Zugang zu einem beliebigen Benutzerkonto auf Ihrem Computer hat (einschließlich Programmen, die Serverdienste von c ausführen), alle Dateien lesen und schreiben kann, die Sie mit dieser aktiven Maske erstellen, und sich nicht ändert (sofern die enthaltene Kette von c) Verzeichnisse bis zum Stammverzeichnis ermöglichen dies ebenfalls.


3
umask 000 bedeutet , dass jeder, der eine Art von Zugang zu einem Benutzerkonto auf Ihrem Rechner hat , kann (hierzu können gehören Programme laufen Serverdienste OFC) lesen und schreiben alle Dateien , die Sie mit dieser Maske machen aktiv und nicht ändern, um klar zu sein
StarWeaver

3
"+ r bedeutet ugo = r" - nein, es bedeutet nicht, das rBit für diejenigen Parteien zu setzen, bei denen es die umask erlaubt. Dies ist in den Handbüchern von zB GNU chmod und FreeBSD chmod sowie dem Standard klar angegeben. Gleiches gilt für +x. Denn +wdu hast recht, für den Fall dieser besonderen Umask.
Ilkkachu

3
Das Setzen von umask auf 0 bedeutet auch nicht , dass jeder alle Ihre Dateien lesen und schreiben kann, da viele Anwendungen Dateien erstellen, die im Modus besonders privat sind 0600, was bedeutet, dass die Gruppe und andere keinen Zugriff erhalten, unabhängig von der umask.
Ilkkachu

@ilkkachu + r bedeutet ugo = r, dies hing mit der in der Frage beschriebenen Situation zusammen. Das war nicht allgemein.
Prvt_Yadav

2
@Debian_yadav, genau das ist der Punkt: Das umaskist ein wichtiger Teil des Verhaltens +r, kein Nebeneffekt. Außerdem, selbst umask unter der Annahme 002, chmod +rbedeutet nicht chmod ugo=r, es bedeutetchmod ugo+r
ilkkachu

23

Mit:

chmod +<perms>

Die Dauerwellen werden zu Benutzer , Gruppe und anderem hinzugefügt, wobei die umask weiterhin gültig ist. Dadurch wird sichergestellt, dass der Datei nicht mehr Berechtigungen erteilt werden, als dies bei einer neu erstellten Datei der Fall wäre.

Wenn Sie die Perms Benutzern , Gruppen und anderen Benutzern unabhängig von der umask hinzufügen möchten, verwenden Sie

chmod a+<perms>

das ist die Abkürzung für

chmod ugo+<perms>

Dies bedeutet, dass + x und a + x nicht gleich sind.
Prvt_Yadav

1
Ich hätte gerne Links: man7.org/linux/man-pages/man1/chmod.1.html „Wenn keine von diesen angegeben ist, ist der Effekt so, als ob (a) angegeben wäre, aber Bits, die in der umask gesetzt sind sind nicht betroffen. “
tehnicaorg

0

Sie müssen angeben, wem Sie die Berechtigungen erteilen, z. B. othermithilfe vonchmod o+w testfile.txt


1
Ja, aber ich denke, +wgibt allen die Erlaubnis (Benutzer, Gruppe und andere).
Ravi Sevta

Verwenden Sie, um allen Benutzern Berechtigungen zu erteilen chmod a+w testfile.txt. Verwenden Sie ufür Benutzer, gfür Gruppen, ofür andere und afür alle.
Jaken551

wenn chmod a+w filename, chmod +w filenameund chmod ugo+w filenameauf jede andere Alternative gibt , warum dann nicht nur benutzen+w
Ravi Sevta
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.