GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie wirkt sich umask auf ACLs aus?

Ich habe dieses Beispiel mit dem Titel:ACL und MASK in Linux gefunden. In diesem Artikel werden die folgenden Beispiele demonstriert, die meiner Meinung nach helfen zu verstehen, wie ACLs und umask miteinander interagieren.

Hintergrund

Wenn eine Datei auf einem Linux-System erstellt wird, werden die Standardberechtigungen 0666 angewendet werden, während beim Erstellen eines Verzeichnisses die Standardberechtigungen 0777 verwendet werden angewendet werden.

Beispiel 1 - Datei

Angenommen, wir setzen unsere umask auf 077 und berühren eine Datei. Wir können strace verwenden um zu sehen, was tatsächlich passiert, wenn wir dies tun:

$ umask 077; strace -eopen touch testfile 2>&1 | tail -1; ls -l testfile
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-------. 1 root root 0 Sep 4 15:25 testfile

In diesem Beispiel sehen wir, dass das System open() aufruft erfolgt mit den Berechtigungen 0666, jedoch wenn der umask 077 vom Kernel angewendet werden, werden folgende Berechtigungen entfernt (---rwxrwx ) und wir haben rw------- übrig auch bekannt als 0600.

Beispiel - 2 Verzeichnis

Dasselbe Konzept kann auf Verzeichnisse angewendet werden, außer dass die Standardberechtigungen nicht 0666, sondern 0777 sind.

$ umask 022; strace -emkdir mkdir testdir; ls -ld testdir
mkdir("testdir", 0777)                  = 0
drwxr-xr-x 2 saml saml 4096 Jul  9 10:55 testdir

Dieses Mal verwenden wir den mkdir Befehl. Die mkdir Befehl rief dann den Systemaufruf mkdir() auf . Im obigen Beispiel sehen wir, dass die mkdir Befehl namens mkdir() Systemaufruf mit den Standardberechtigungen 0777 (rwxrwxrwx ). Diesmal mit einer umask von 022 Die folgenden Berechtigungen werden entfernt (----w--w- ), also bleibt 0755 (rwxr-xr-x). ), wenn die Verzeichnisse erstellt wurden.

Beispiel 3 (Anwenden der Standard-ACL)

Lassen Sie uns nun ein Verzeichnis erstellen und demonstrieren, was passiert, wenn die Standard-ACL zusammen mit einer darin enthaltenen Datei darauf angewendet wird.

$ mkdir acldir
$ sudo strace -s 128 -fvTttto luv setfacl -m d:u:nginx:rwx,u:nginx:rwx acldir

$ getfacl --all-effective acldir
# file: acldir
# owner: saml
# group: saml
user::rwx
user:nginx:rwx          #effective:rwx
group::r-x          #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:nginx:rwx      #effective:rwx
default:group::r-x      #effective:r-x
default:mask::rwx
default:other::r-x

Lassen Sie uns nun die Datei aclfile erstellen :

$ strace -s 128 -fvTttto luvly touch acldir/aclfile

# view the results of this command in the log file "luvly"
$ less luvly

Holen Sie sich jetzt die Berechtigungen der neu erstellten Datei:

$ getfacl --all-effective acldir/aclfile 
# file: acldir/aclfile
# owner: saml
# group: saml
user::rw-
user:nginx:rwx          #effective:rw-
group::r-x          #effective:r--
mask::rw-
other::r--

Beachten Sie die Maske mask::rw- . Warum ist es nicht mask::rwx genau wie beim Erstellen des Verzeichnisses?

Überprüfen Sie den luvly log-Datei, um zu sehen, welche Standardberechtigungen für die Erstellung der Datei verwendet wurden:

$ less luvly |grep open |tail -1
10006 1373382808.176797 open("acldir/aclfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 <0.000060>

Hier wird es etwas verwirrend. Mit der Maske auf rwx eingestellt Wenn das Verzeichnis erstellt wurde, würden Sie dasselbe Verhalten für die Erstellung der Datei erwarten, aber es funktioniert nicht so. Das liegt daran, dass der Kernel open() aufruft Funktion mit den Standardberechtigungen von 0666 .

Zusammenfassend

  • Dateien erhalten keine Ausführungsberechtigung (maskiert oder wirksam). Egal, welche Methode wir verwenden:ACL, umask oder mask &ACL.
  • Verzeichnisse können Ausführungsberechtigungen erhalten, aber es hängt davon ab, wie das Maskierungsfeld eingestellt ist.
  • Die einzige Möglichkeit, Ausführungsberechtigungen für eine Datei festzulegen, die unter ACL-Berechtigungen steht, besteht darin, sie manuell mit chmod festzulegen .

Referenzen

  • acl-Manpage

Aus Sicherheitsgründen lässt das Linux-Betriebssystem keine automatische Erstellung einer Datei mit einem Ausführungsbit zu. Dadurch soll verhindert werden, dass Cyberangreifer Programme in solche Dateien schreiben und ausführen, wenn sie sich Zugriff auf Ihren Server verschaffen. Es ist nur eine Sicherheitsvorkehrung. Sie müssen für immer das Ausführungsbit für Dateien manuell setzen, nachdem Sie sie mit dem Dienstprogramm chmod erstellt haben


Linux
  1. Wie ändere ich Dateiberechtigungen auf einem Fat32-Laufwerk?

  2. So ändern Sie Dateiberechtigungen im cPanel-Dateimanager

  3. Wie funktioniert Rm? Was macht Rm?

  4. Wie grep \n in Datei

  5. Verschieben einer Datei, während sie verwendet wird – Wie funktioniert das?

Linux-Berechtigungen – So finden Sie Berechtigungen einer Datei

Chmod-Befehl – ​​So ändern Sie Dateiberechtigungen in Linux

So ändern Sie Dateiberechtigungen mit FileZilla

So ändern Sie Dateiberechtigungen in cPanel

So ändern Sie Dateiberechtigungen

Wie funktioniert /proc/*?