Als Systemadministrator wird unsere erste Priorität darin bestehen, Daten vor unberechtigtem Zugriff zu schützen. Wir sind alle mit den Berechtigungen vertraut, die wir mithilfe einiger hilfreicher Linux-Befehle wie chmod, chown, chgrp… usw. festlegen. Diese Standardberechtigungssätze haben jedoch einige Einschränkungen und funktionieren manchmal möglicherweise nicht wie gewünscht. Zum Beispiel können wir keine verschiedenen Berechtigungssätze für verschiedene Benutzer im selben Verzeichnis oder Datei festlegen. Daher wurden Zugriffssteuerungslisten (ACLs) implementiert.

Angenommen, Sie haben drei Benutzer, ‚tecmint1‘, ‚tecmint2‘ und ‚tecmint3‘. Jeder gehört zu einer gemeinsamen Gruppe namens ‚acl’. Benutzer ‚tecmint1‘ möchte, dass nur Benutzer ‚tecmint2‘ Dateien, die im Besitz von ‚tecmint1‘ sind, lesen und darauf zugreifen können, und niemand sonst sollte darauf zugreifen können.
ACLs (Zugriffssteuerungslisten) ermöglichen es uns, diesen Trick anzuwenden. Diese ACLs ermöglichen es uns, Berechtigungen für einen Benutzer, eine Gruppe und eine Gruppe von Benutzern zu erteilen, die nicht in der Gruppenliste eines Benutzers enthalten sind.
Hinweis: Laut der Redhat-Produktdokumentation bietet es Unterstützung für ACLs für das ext3-Dateisystem und für über NFS exportierte Dateisysteme.
So überprüfen Sie die Unterstützung für ACLs in Linux-Systemen
Bevor Sie fortfahren, sollten Sie die Unterstützung für ACLs im aktuellen Kernel und den eingebundenen Dateisystemen haben.
1. Überprüfen Sie den Kernel auf ACL-Unterstützung
Führen Sie den folgenden Befehl aus, um die ACL-Unterstützung für das Dateisystem und die Option POSIX_ACL=Y zu überprüfen (wenn anstelle von Y N steht, bedeutet dies, dass der Kernel keine ACL unterstützt und neu kompiliert werden muss).
[root@linux ~]# grep -i acl /boot/config* CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_REISERFS_FS_POSIX_ACL=y CONFIG_JFS_POSIX_ACL=y CONFIG_XFS_POSIX_ACL=y CONFIG_BTRFS_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y CONFIG_GENERIC_ACL=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_NFS_V3_ACL=y CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3_ACL=y CONFIG_NFS_ACL_SUPPORT=m CONFIG_CIFS_ACL=y CONFIG_9P_FS_POSIX_ACL=y
2. Überprüfen Sie die erforderlichen Pakete
Bevor Sie mit ACLs experimentieren, stellen Sie sicher, dass die erforderlichen Pakete installiert sind. Unten sind die erforderlichen Pakete aufgeführt, die mit yum oder apt-get installiert werden müssen.
[root@linux ~]# yum install nfs4-acl-tools acl libacl [on RedHat based systems]
[tecmint@linux ~]$ sudo apt-get install nfs4-acl-tools acl [on Debian based systems]
3. Überprüfen Sie das eingehängte Dateisystem auf die Unterstützung von ACLs
Überprüfen Sie nun das eingehängte Dateisystem, ob es mit der ACL-Option eingehängt ist oder nicht. Zum Überprüfen dessen können wir den Befehl ‚mount‘ verwenden, wie unten gezeigt.
[root@linux ~]# mount | grep -i root /dev/mapper/fedora-root on / type ext4 (rw,relatime,data=ordered)
Aber in unserem Fall wird standardmäßig acl nicht angezeigt. Als nächstes haben wir die Möglichkeit, die eingehängte Partition erneut mit der acl-Option einzuhängen. Bevor wir jedoch weitermachen, haben wir eine weitere Option, um sicherzustellen, ob die Partition mit der acl-Option eingehängt ist oder nicht, da für neuere Systeme dies möglicherweise in die Standard-Einhängeoption integriert ist.
[root@linux ~]# tune2fs -l /dev/mapper/fedora-root | grep acl Default mount options: user_xattr acl
In der obigen Ausgabe sehen Sie, dass die Standard-Einhängeoption bereits die Unterstützung für acl hat. Eine weitere Option ist, die Partition wie unten gezeigt erneut einzuhängen.
[root@linux ~]# mount -o remount,acl /
Fügen Sie dann den folgenden Eintrag zur Datei ‚/etc/fstab‘ hinzu, um ihn dauerhaft zu machen.
/dev/mapper/fedora-root / ext4 defaults,acl 1 1
Hängen Sie die Partition erneut ein.
[root@linux ~]# mount -o remount /
4. Für den NFS-Server
Auf dem NFS-Server werden ACLs vom Client-System genutzt, wenn das Dateisystem, das vom NFS-Server exportiert wird, ACL unterstützt und von NFS-Clients gelesen werden kann.
Zum Deaktivieren von ACLs für den NFS-Share müssen Sie die Option „no_acl“ in der Datei ‚/etc/exportfs‚ auf dem NFS-Server hinzufügen. Um es auf der Client-Seite des NFS wieder zu deaktivieren, verwenden Sie die Option „no_acl“ zur Mount-Zeit.
Wie man die Unterstützung für ACLs in Linux-Systemen implementiert
Es gibt zwei Arten von ACLs:
- Zugriffs-ACLs: Zugriffs-ACLs werden verwendet, um Berechtigungen für eine Datei oder einen Ordner zu gewähren.
- Standard-ACLs: Standard-ACLs werden verwendet, um Zugriffssteuerungslisten nur auf einen bestimmten Ordner anzuwenden/einzurichten.
Unterschied zwischen Zugriffs-ACL und Standard-ACL:
- Standard-ACLs können nur auf Verzeichnisebene verwendet werden.
- Jedes im Verzeichnis erstellte Unterverzeichnis oder Datei erbt die ACLs vom übergeordneten Verzeichnis. Andererseits erbt eine Datei die Standard-ACLs als ihre Zugriffs-ACLs.
- Wir nutzen „-d“ zum Festlegen von Standard-ACLs, und Standard-ACLs sind optional.
Vor dem Setzen von Standard-ACLs
Um die Standard-ACLs für eine bestimmte Datei oder Verzeichnis zu ermitteln, verwenden Sie den Befehl ‚getfacl‚. Im folgenden Beispiel wird das getfacl verwendet, um die Standard-ACLs für einen Ordner ‚Music‚ zu erhalten.
[root@linux ~]# getfacl Music/ # file: Music/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:other::rw-
Nach dem Setzen von Standard-ACLs
Um die Standard-ACLs für eine bestimmte Datei oder ein Verzeichnis festzulegen, verwenden Sie den Befehl ‚setfacl‚. Im folgenden Beispiel wird der setfacl-Befehl neue ACLs (lesen und ausführen) auf einem Ordner ‚Music‚ setzen.
[root@linux ~]# setfacl -m d:o:rx Music/ [root@linux ~]# getfacl Music/ # file: Music/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:other::r-x
Wie man neue ACLs setzt
Verwenden Sie den Befehl ‘setfacl’, um Berechtigungen für eine Datei oder ein Verzeichnis festzulegen oder zu ändern. Zum Beispiel, um Benutzer ‘tecmint1‘ Lese- und Schreibberechtigungen zu geben.
# setfacl -m u:tecmint1:rw /tecmint1/example
Wie man ACLs ansieht
Verwenden Sie den Befehl ‘getfacl’‘, um die ACL einer Datei oder eines Verzeichnisses anzuzeigen. Zum Beispiel, um die ACL von ‘/tecmint1/beispiel‘ anzuzeigen, verwenden Sie den folgenden Befehl.
# getfacl /tecmint1/example # file: tecmint1/example/ # owner: tecmint1 # group: tecmint1 user::rwx user:tecmint1:rwx user:tecmint2:r-- group::rwx mask::rwx other::---
Wie man ACLs entfernt
Um ACL von einer Datei/einem Verzeichnis zu entfernen, verwenden wir die Optionen x und b wie unten gezeigt.
# setfacl -x ACL file/directory # remove only specified ACL from file/directory. # setfacl -b file/directory #removing all ACL from file/direcoty
Lassen Sie uns ACLs in folgenden Szenarien implementieren.
Zwei Benutzer (tecmint1 und tecmint2), beide haben eine gemeinsame sekundäre Gruppe namens ‘acl‘. Wir werden ein Verzeichnis erstellen, das von ‘tecmint1‘ erstellt wurde, und werden dem Benutzer ‘tecmint2‘ Lese- und Ausführungsberechtigungen für dieses Verzeichnis geben.
Schritt 1: Erstellen Sie zwei Benutzer und entfernen Sie das Passwort von beiden
[root@linux ~]# for user in tecmint1 tecmint2 > do > useradd $user > passwd -d $user > done Removing password for user tecmint1. passwd: Success Removing password for user tecmint2. passwd: Success
Schritt 2: Erstellen Sie eine Gruppe und Benutzer zur sekundären Gruppe.
[root@linux ~]# groupadd acl [root@linux ~]# usermod -G acl tecmint1 [root@linux ~]# usermod -G acl tecmint2
Schritt 3: Erstellen Sie ein Verzeichnis /tecmint und ändern Sie den Besitz auf tecmint1.
[root@linux ~]# mkdir /tecmint1 [root@linux ~]# chown tecmint1 /tecmint1/
[root@linux ~]# ls -ld /tecmint1/ drwxr-xr-x 2 tecmint1 root 4096 Apr 17 14:46 /tecmint1/
[root@linux ~]# getfacl /tecmint1 getfacl: Removing leading '/' from absolute path names # file: tecmint1 # owner: tecmint1 # group: root user::rwx group::r-x other::r-x
Schritt 4: Melden Sie sich mit tecmint1 an und erstellen Sie ein Verzeichnis im /tecmint Ordner.
[tecmint@linux ~]$ su - tecmint1 Last login: Thu Apr 17 14:49:16 IST 2014 on pts/4
[tecmint1@linux ~]$ cd /tecmint1/ [tecmint1@linux tecmint1]$ mkdir example
[tecmint1@linux tecmint1]$ ll total 4 drwxrwxr-x 2 tecmint1 tecmint1 4096 Apr 17 14:50 example
[tecmint1@linux tecmint1]$ whoami tecmint1
Schritt 5: Legen Sie nun ACL mit ‚setfacl‚ fest, damit ‚tecmint1‘ alle rwx-Berechtigungen hat, ‚tecmint2‘ nur Leseberechtigungen für den Ordner ‚example‘ hat und andere keine Berechtigungen haben.
$ setfacl -m u:tecmint1:rwx example/ $ setfacl -m u:tecmint2:r-- example/ $ setfacl -m other:--- example/ $ getfacl example/ # file: example # owner: tecmint1 # group: tecmint1 user::rwx user:tecmint1:rwx user:tecmint2:r-- group::r-x mask::rwx other::---
Schritt 6: Melden Sie sich jetzt mit einem anderen Benutzer, d. h. ‚tecmint2‘, auf einem anderen Terminal an und ändern Sie das Verzeichnis zu ‚/tecmint1‘. Versuchen Sie nun, den Inhalt mit dem Befehl ‚ls‘ anzuzeigen, und versuchen Sie dann, das Verzeichnis zu ändern und den Unterschied wie unten zu sehen.
[tecmint@linux ~]$ su - tecmint2 Last login: Thu Apr 17 15:03:31 IST 2014 on pts/5
[tecmint2@linux ~]$ cd /tecmint1/ [tecmint2@linux tecmint1]$ ls -lR example/ example/: total 0
[tecmint2@linux tecmint1]$ cd example/ -bash: cd: example/: Permission denied
[tecmint2@linux tecmint1]$ getfacl example/ # file: example # owner: tecmint1 # group: tecmint1 user::rwx user:tecmint1:rwx user:tecmint2:r-- group::rwx mask::rwx other::---
Schritt 7: Geben Sie ‚tecmint2‘ die Ausführungsberechtigung für den Ordner ‚example‘ und verwenden Sie dann den Befehl ‚cd‘, um die Auswirkungen zu sehen. Jetzt hat ‚tecmint2‘ die Berechtigung, das Verzeichnis anzuzeigen und zu ändern, aber keine Berechtigungen zum Schreiben von Dateien.
[tecmint1@linux tecmint1]$ setfacl -m u:tecmint2:r-x example/ [tecmint1@linux tecmint1]$ getfacl example/ # file: example # owner: tecmint1 # group: tecmint1 user::rwx user:tecmint1:rwx user:tecmint2:r-x group::rwx mask::rwx other::---
[tecmint@linux ~]$ su - tecmint2 Last login: Thu Apr 17 15:09:49 IST 2014 on pts/5
[tecmint2@linux ~]$ cd /tecmint1/ [tecmint2@linux tecmint1]$ cd example/ [tecmint2@linux example]$ getfacl .
[tecmint2@linux example]$ mkdir test mkdir: cannot create directory ‘test’: Permission denied
[tecmint2@linux example]$ touch test touch: cannot touch ‘test’: Permission denied
Hinweis: Nach der Implementierung von ACL sehen Sie ein zusätzliches ‚+‘-Zeichen in der Ausgabe von ‚ls -l‘ wie unten gezeigt.
[root@linux tecmint1]# ll total 4 drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example
Reference Links
Source:
https://www.tecmint.com/secure-files-using-acls-in-linux/