Wie werden Dateiberechtigungen auf neu erstellte Dateien angewendet?

12

Ich habe ein Verzeichnis mit folgenden Berechtigungen:

drwxr-s---. user group folder

Auf dem Desktop greife ich auf diesen Ordner zu und klicke mit der rechten Maustaste, um einen neuen Dateiaufruf zu erstellen foo.txt. Dann habe ich mit dem Terminal eine weitere Datei mit dem Befehl erstellt $ touch bar.txt.

Wenn ich die Berechtigungen für diese Dateien überprüfe, habe ich:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

Ich habe erwartet -rw-r-----. user group. Wie kam es zu der zusätzlichen Schreibberechtigung für Gruppen- und Leseberechtigung für andere?

Fragenüberlauf
quelle

Antworten:

16

Setguid

Hier sind 2 Kräfte am Werk. Das erste ist das Setgid-Bit, das für den Ordner aktiviert ist folder.

drwxr-s---. user group folder

Das ist die sin der Packung von Zeichen am Anfang dieser Zeile. Sie sind folgendermaßen gruppiert:

d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users

Das r-sbedeutet, dass für alle Dateien oder Verzeichnisse, die in diesem Ordner erstellt wurden, die Gruppe automatisch auf die Gruppe festgelegt wird group.

Das ist , was die Dateien verursacht foo.txtund bar.txtwie so erstellt werden:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

Berechtigungen & umask

Die Berechtigungen, die Sie sehen, sind eine andere Sache. Diese richten sich nach den Einstellungen für Ihre umask. umaskMit dem Befehl können Sie sehen, auf was Sie eingestellt sind umask:

$ umask
0002

HINWEIS: Diese Bits werden auch als "Modus" -Bits bezeichnet.

Es ist eine Maske, mit der alle Bits deaktiviert werden, die sich auf aktivierte Berechtigungen beziehen. In diesem Beispiel möchte ich nur die Schreibrechte für andere deaktivieren.

0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits

Die Darstellung der "Bits" in diesem Befehl erfolgt dezimal. Eine 2 entspricht also 010 in binärer Form, was das Schreibbit ist. Eine 4 (100) würde bedeuten, dass Sie das Lesen deaktivieren möchten. Eine 7 (111) bedeutet, dass Sie alle deaktivierten Lese- / Schreib- / Ausführungsfunktionen ausführen möchten. Aufbau von hier:

$ umask 007

Deaktiviert die Lese- / Schreib- / Ausführungsbits für andere Benutzer.

Was ist dann mit Ihren Dateien?

Nun, das umaskregelt die Berechtigungen, die gesetzt werden, wenn eine neue Datei erstellt wird. Wenn wir also folgendes umaskSet hätten:

$ umask 007

Und angefangen, neue Dateien zu berühren, sehen wir, wie sie so erstellt werden:

$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile2.txt

Wenn wir es zu etwas anderem geändert haben, sagen Sie Folgendes:

$ umask 037
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

Dies hat jedoch keine Auswirkungen auf Dateien, die wir bereits erstellt haben. Siehe hier:

$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

Was ist dann mit dem Dateibrowser los?

Das umaskist, was ich eine "weiche" Einstellung genannt hatte. Es ist keineswegs absolut und kann in Unix auf verschiedene Arten relativ einfach umgangen werden. Viele der Tools verfügen über Schalter, mit denen Sie die Berechtigungen als Teil ihrer Operation angeben können.

Nehmen Sie mkdirzum Beispiel:

$ umask
0037

$ mkdir -m 777 somedir1
$

$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov  3 22:44 somedir1

Mit dem -mSchalter können wir übersteuern umask. Der touchBefehl verfügt nicht über diese Funktion, sodass Sie kreativ werden müssen. Sehen Sie sich diese Fragen und Antworten zum Thema an : Können Dateien mit Berechtigungen erstellt werden, die in der Befehlszeile festgelegt wurden? für gerade solche Methoden.

Andere Möglichkeiten? Einfach überschreiben umask. Der Dateibrowser tut dies höchstwahrscheinlich oder ignoriert umaskdie Datei einfach vollständig und legt sie mit den Berechtigungen ab, für die er konfiguriert ist.

slm
quelle
Ich dachte umask soll Privilegien entfernen, nicht hinzufügen. Oder vermisse ich etwas?
Fragenüberlauf
@QuestionOverflow - Sie maskieren, welche Berechtigungen beim Erstellen von Dateien und Verzeichnissen zulässig sind. Daher der Name. Es maskiert die Verwendung von Bits während des Erstellungsprozesses.
slm
Meine umask liest 0002. Wenn umask Berechtigungen festlegt, anstatt Berechtigungen zu entfernen, wird das Ausführungsbit bei mir sowohl für Benutzer als auch für Gruppen festgelegt touch, dies ist jedoch nicht der Fall .
Fragenüberlauf
@QuestionOverflow - das ist eine Einschränkung des touchBefehls. Siehe den Link, den ich in meinem A eingefügt
slm
Um einige Punkte anhand der Kommentare zu verdeutlichen: 1) Die Berechtigungen einer neuen Datei werden immer von umask + dem Programm bestimmt, mit dem die Datei erstellt wurde. 2) Berechtigungen werden niemals vom übergeordneten Verzeichnis geerbt.
Fragenüberlauf