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

Eine Einführung in Linux Access Control Lists (ACLs)

Zu den Herausforderungen bei der Verwaltung von Linux in der modernen Geschäftsumgebung gehört die Erwartung, dass wir verwalten können und sollten, wer Zugriff auf welche Informationen hat. Früher konnten die einzigen Leute, die Zugriff auf Linux-Dateisysteme benötigten, allgemein kategorisiert werden:durch Linux-Dateisystemberechtigungen.

Wiederholung der Grundlagen

Das Linux-Dateisystem gibt uns drei Arten von Berechtigungen. Hier ist eine vereinfachte Überprüfung:

  • Du ser (oder Benutzereigentümer)
  • G roup (oder Besitzergruppe)
  • O ther (alle anderen)

Mit diesen Berechtigungen können wir drei (eigentlich fünf, aber dazu kommen wir gleich) Zugriffsarten gewähren:

  • R lesen
  • W Ritus
  • eX ecute

Diese Zugriffsebenen sind in vielen Fällen oft ausreichend. Angenommen, Sie haben ein Verzeichnis, in dem sich Dateien aus der Buchhaltung befinden. Sie können diese Berechtigungen folgendermaßen festlegen:

drwxrwxr-x  2 accounting accounting  12 Jan  8 15:13

Der Buchhaltungsdienstbenutzer (der Benutzereigentümer) kann im Verzeichnis lesen und schreiben, und Mitglieder der accounting Gruppe (oder Besitzergruppe) kann lesen und schreiben. Andere (Benutzer, die nicht in der Buchhaltungsabteilung sind) können jedoch sehen und ausführen, was darin enthalten ist, was einige für eine schlechte Idee halten könnten.

[Auch beliebt:Grundlagen des Linux-Systemadministrators:Benutzerkontenverwaltung ]

Wir könnten also die Berechtigungen wie folgt ändern:

drwxrwx---  2 accounting accounting  12 Jan  8 15:13 .

Hinweis: Sie können auch spezielle Berechtigungen verwenden, um Einstellungen zu steuern, z. B. wem tatsächlich neue Dateien gehören, die in diesem Verzeichnis erstellt wurden, sowie das Sticky Bit die steuert, ob Mitglieder der Gruppe die Dateien der anderen löschen können. Dies ist jedoch außerhalb des Rahmens dieser Diskussion.

Anzeigen der aktuellen ACL

Was ist, wenn Sie einen Buchhaltungspraktikanten (Kenny) haben, der in der Lage sein muss, bestimmte Dateien zu lesen (oder sogar nur die Dateien, die Fred, seinem Manager, gehören)? Oder vielleicht brauchen die Leute in der Verkaufsabteilung auch Zugriff auf die accounting die Dateien des Eigentümers verwenden, um Rechnungen für Freds Team zu erstellen, um Kunden Rechnungen zu stellen, aber Sie möchten nicht, dass das Verkaufsteam die anderen Berichte sieht, die Freds Team generiert. Diese Situation kann schwierig sein, da jede Datei und jedes Verzeichnis mit regulären Berechtigungen jeweils nur einen Benutzer und Gruppenbesitzer haben kann. Diese Art von Situation ist das, was Linux Access Control Lists (ACLs) lösen sollten.

ACLs ermöglichen es uns, einen spezifischeren Satz von Berechtigungen auf eine Datei oder ein Verzeichnis anzuwenden, ohne (notwendigerweise) den Basisbesitz und die Berechtigungen zu ändern. Sie ermöglichen uns den Zugriff für andere Nutzer oder Gruppen.

Wir können die aktuelle ACL mit getfacl anzeigen Befehl:

[root]# getfacl /accounting
getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---

Wir können jetzt sehen, dass es in diesem Verzeichnis keine ACLs gibt, da die einzigen aufgelisteten Berechtigungen für den Benutzer, die Gruppe und andere gelten. In diesem Fall ist das zu erwarten, da ich dieses Verzeichnis gerade im Labor erstellt und nichts anderes getan habe, als die Eigentümerschaft zuzuweisen. Beginnen wir also mit dem Hinzufügen einer Standard-ACL:

Festlegen einer ACL

Die Syntax zum Setzen einer ACL sieht folgendermaßen aus:

setfacl [option] [action/specification] file

Die 'Aktion' wäre -m (ändern) oder -x (entfernen), und die Spezifikation wäre der Benutzer oder die Gruppe, gefolgt von den Berechtigungen, die wir festlegen möchten. In diesem Fall würden wir die Option -d verwenden (Standardwerte). Um also die Standard-ACL für dieses Verzeichnis festzulegen, würden wir Folgendes ausführen:

[root]# setfacl -d -m accounting:rwx /accounting

Danach können wir jetzt die Standard-ACL-Informationen für dieses Verzeichnis sehen:

[root]# getfacl /accounting
[root]# getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---
default:user::rwx
default:user:accounting:rwx
default:group::rwx
default:mask::rwx
default:other::---

Was passiert, wenn Fred eine Datei in diesem Verzeichnis erstellt?

[fred]$ touch test
[fred]$ ls -la
drwxrwx---+  2 accounting accounting  18 Jan  8 17:51 .
dr-xr-xr-x. 18 root  root  262 Jan  8 15:13 ..
-rw-rw----+  1 fred  accounting  0 Jan  8 17:51 test
[fred]$ getfacl test
# file: test
# owner: fred
# group: accounting
user::rw-
user:accounting:rwx  #effective:rw-
group::rwx  #effective:rw-

Was passiert, wenn Kenny versucht, eine Datei zu erstellen? Sie können das vielleicht erraten, weil kenny ist nicht in der accounting Gruppe hat er keine Berechtigung. Aber wir möchten, dass Kenny eine gute Erfahrung bei der Zusammenarbeit mit uns macht, also müssen wir ihm die Möglichkeit geben, zu sehen, welche Dateien sich in der accounting befinden Verzeichnis, und wir möchten, dass er neue Dateien erstellen kann:

[root@lab1 accounting]setfacl -m kenny:rwx /accounting
[root]getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
user:kenny:rwx

So weit, ist es gut. Aber was ist, wenn wir nicht möchten, dass dieser Benutzer Dateien in der accounting erstellt? Verzeichnis? Stattdessen wollen wir ihn nur die Dateien dort lesen lassen, und er kann neue Dateien in seinem eigenen Ordner erstellen.

[Verwandter Artikel: Linux-Systemadministratorgrundlagen:Benutzerkontenverwaltung mit UIDs und GIDs]

Wir können Kennys Zugriff auf die accounting festlegen Ordner wie folgt:

[root@lab1 accounting]# setfacl -m kenny:r-x /accounting
[root]# getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
User:kenny:r-x

Jetzt machen wir Kenny zu seinem eigenen Ordner, übertragen ihm die Eigentümerschaft und führen dann die accounting durch Gruppieren Sie den Gruppenbesitzer damit andere Personen in der accounting Gruppe kann sehen, was darin enthalten ist:

[root@lab1 accounting]# mkdir ./kenny
[root]# chown kenny:accounting ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:rwx
group::rwx

Sie haben einen Ordner innerhalb der accounting erstellt Gruppe, die dem Benutzer kenny gehört . Er kann jetzt den Buchhaltungsordner sehen, aber nur Dateien in seinem eigenen Ordner erstellen:

[root@lab1 accounting]# su kenny
[kenny]$ touch test
touch: cannot touch ‘test’: Permission denied
[kenny]$ cd ./kenny
[kenny]$ touch test
[kenny]$ ls
test

Beachten Sie, dass der Ordner der accounting gehört Gruppe kann jeder in dieser Gruppe Dateien dort ablegen. Da wir es mit einem Praktikanten zu tun haben, ist dieser Faktor wahrscheinlich in Ordnung. Was aber, wenn wir Kenny zum Chefrevisor befördern und seine Arbeit vor Fred geheim halten wollen?

[root]# setfacl -m fred:- ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---

Was wäre, wenn wir niemanden wollten um zu sehen, woran Kenny arbeitet?

[root]# setfacl -m g:accounting:- ./kenny

Hinweis: Wenn wir eine Gruppe einrichten möchten ACL, wir müssen dies spezifizieren, indem wir g: einfügen vor dem Namen der Gruppe. Für Benutzer ändern Sie einfach den g zu einem u , aber setfacl gehen davon aus, dass es sich um einen Benutzer handelt, wenn Sie an dieser Stelle nichts eingeben.

Wir müssen noch die Basisberechtigungen für den Gruppenbesitzer entfernen, damit der Rest des Buchhaltungsteams nicht in Kennys Berichte hineinschnüffeln kann:

[root]# chmod g-rwx ./kenny
[root]# ls -al
total 0
drwxrwx-wx+  3 accounting accounting  44 Jan  9 16:38 .
dr-xr-xr-x. 18 root       root       262 Jan  8 15:13 ..
drwx------+  2 kenny      accounting  18 Jan  9 17:07 kenny
-rw-rw----+  1 root       root         0 Jan  9 16:33 test
-rw-rw----+  1 kenny      accounting   0 Jan  9 16:27 test2
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
group::rwx  #effective:---
[root]# su jan
[jan]$ touch ./kenny/test
touch: cannot touch ‘./kenny/test’: Permission denied

Jetzt können wir verwalten, wer sonst Kennys Ordner sehen oder in ihn schreiben kann, ohne den Eigentümer zu ändern. Geben wir dem CEO (Lisa, die kein Mitglied des Buchhaltungsteams ist und keinen Zugriff auf den Rest des Ordners hat) Zugriff auf Kennys Daten:

[root@lab1 accounting]# useradd lisa
[root]# setfacl -m u:lisa:rwx ./kenny
[root]# su lisa
[lisa]$ touch ./kenny/lisa
[lisa]$ ls ./kenny
lisa  test
[lisa]$ touch test
touch: cannot touch ‘test’: Permission denied
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
user:lisa:rwx
group::rwx
group:accounting:---

Beachten Sie erneut, dass die Berechtigungen des Gruppeneigentümers weit offen bleiben, aber die Buchhaltungsgruppe (die immer noch der Eigentümer ist) keinen Zugriff mehr auf diesen Ordner hat. Also, wem gehört es?

drwxrwx---+  2 kenny  accounting  30 Jan  9 17:16 kenny

Dieser Teil ist schwierig. Es ist hilfreich zu wissen, dass wir die Berechtigungen des Eigentümers entziehen können, ohne den Eigentümer zu ändern, aber Sie sollten überlegen, ob dies das gewünschte Ergebnis ist.

Fazit

Das sind also die Grundlagen. ACLs können verwirrend sein, daher ermutige ich Sie, die Manpages für setfacl anzugeben und getfacl eine gute Lektüre. Es gibt viele weitere interessante und nützliche Dinge, die Sie mit diesen Tools tun können, aber hoffentlich verstehen Sie jetzt genug, um loszulegen.

[ Möchten Sie Red Hat Enterprise Linux ausprobieren? Laden Sie es jetzt kostenlos herunter. ]


Linux
  1. Zugriffskontrolllisten und externe Laufwerke unter Linux:Was Sie wissen müssen

  2. Einführung in die Linux-Befehle chgrp und newgrp

  3. Mitglieder einer Gruppe in Linux auflisten

  4. RHEL 7 – RHCSA-Hinweise – Erstellen und Verwalten von Zugriffssteuerungslisten (ACLs)

  5. gleichzeitiger zugriff auf datei linux

Erweiterte Audiosteuerung unter Linux

Eine Einführung in den Vivaldi-Browser unter Linux

Einführung in die Verwaltung von Linux-Containern

Einführung in das Versionskontrollsystem

So gewähren oder verweigern Sie einem bestimmten Benutzer oder einer bestimmten Gruppe in Linux den SSH-Zugriff

Zugriffssteuerungslisten unter Linux erklärt