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

So erzwingen Sie Benutzer-/Gruppenbesitz von Dateien auf einer Samba-Freigabe

Die Frage

Sie haben ein Festplattenverzeichnis, das von Linux- und Microsoft Windows-Clients gemeinsam genutzt wird. Mehrere Benutzer benötigen Zugriff auf diese Verzeichnisfreigabe, aber wenn Dateien von den Linux-Clients erstellt oder geändert werden, werden die Linux-Dateiberechtigungen angewendet, was es den Windows-Clients erschwert oder unmöglich macht, auf diese Dateien zuzugreifen.

Sie möchten diese Datenträgerressourcen auf homogene Weise gemeinsam nutzen.

Die Lösung

Abhängig von Ihrer allgemeinen Wartungsstrategie kann eine der folgenden Techniken verwendet werden.

1. Benutzer- oder Gruppenbesitz erzwingen

In der Datei /etc/samba/smb.conf Sie können die Direktive verwenden:

force user = [user]
force group = [group]

Dadurch werden die normalen Dateibesitzattribute für den Datei- oder Verzeichniszugriff außer Kraft gesetzt. Standardmäßig werden die effektiven Benutzeranmeldeinformationen verwendet. Durch die Verwendung einer (oder beider) der obigen Anweisungen kann der zugehörige Berechtigungsnachweis auf einen bestimmten Wert gezwungen werden. Somit werden alle Dateizugriffe so durchgeführt, als ob der zugreifende Prozess mit den angegebenen Anmeldeinformationen ausgeführt würde.

Wenn die Direktive die Form hat:

force group = +[group]

dann wird nur für Linux-Benutzer, die bereits Mitglieder von [Gruppe] sind, ihre primäre Gruppe für die Dauer des Zugriffs in [Gruppe] geändert. Linux-Benutzer, die nicht bereits Mitglieder der [Gruppe] sind, sind von dieser Anweisung nicht betroffen.

2. Verwenden Sie die Verzeichniszugriffsberechtigungen

Betrachten Sie den /tmp-Verzeichnis:Es ist ein Notizblock, der es mehreren Benutzern ermöglicht, Dateien zu erstellen, zu ändern oder zu löschen. Um zu verhindern, dass Benutzer A eine Datei löscht, die Benutzer B gehört, hat das Verzeichnis das Sticky-Bit gesetzt:

$ ls -ld /tmp
drwxrwxrwt 14 root root 360 Mar 19 08:25 /tmp

Beachten Sie das t Flag der Berechtigungen:Dies zeigt das „Sticky an ” Bit wird für das Verzeichnis gesetzt. Jeder Benutzer kann Dateien in diesem Verzeichnis erstellen, aber nur der Eigentümer kann den Eintrag löschen; ohne das Sticky-Bit könnte jeder jede Datei löschen, da das Verzeichnis weltweit Lese-/Schreib-/Ausführungsrechte hat.

1. Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, das gemeinsam genutzte SAMBA-Verzeichnis dem SAMBA-Benutzer zu überlassen:

# /bin/mkdir [/path/to/SAMBA/share]
# /bin/chown -R [user]:[group] -R [/path/to/SAMBA/share]

2. Schalten Sie als Nächstes das Setgid-Bit für das Verzeichnis ein, um die Gruppenanmeldeinformationen jedes Verzeichniseintrags dazu zu zwingen, mit den Gruppenanmeldeinformationen dieses Verzeichnisses übereinzustimmen:

# /bin/chmod g+s [/path/to/SAMBA/share]
# /bin/ls -ld [/path/to/SAMBA/share]
drwxrws--- 1 [user] [group] 0 Mar 19 09:07 [/path/to/SAMBA/share]

3. Erstellen Sie nun als Root-Benutzer eine Datei im Verzeichnis [/path/to/SAMBA/share]. Die Datei gehört root, aber ihre Gruppe ist die Gruppe [Gruppe]:

# /bin/mkdir /example
# /bin/chown root:oracle /example
# /bin/chmod g+s /example
# /bin/ls -ld /example
drwxr-sr-x 2 root oracle 4096 Mar 19 10:03 /example

4. Zuletzt erstellen Sie als Root-Benutzer eine Datei in /example:

# id
uid=0(root) gid=0(root) groups=0(root)
# touch /example/file
# ls -ld /example /example/file
drwxrws--- 2 root oracle 4096 Mar 19 10:09 /example
-rw-r--r-- 1 root oracle    0 Mar 19 10:09 /example/file

Beachten Sie, dass die zum Erstellen der Datei verwendeten Anmeldeinformationen zwar root:root waren, die für die Datei gespeicherten Anmeldeinformationen jedoch root:oracle waren; der Gruppenbesitz wurde automatisch auf die Gruppe des Verzeichnisses gesetzt.

Hinweis

Die oben beschriebene setgid-Methode funktioniert auch, wenn stattdessen das setuid-Bit verwendet wird. Führen Sie im chmod-Schritt stattdessen Folgendes aus:

# chmod u+s [/path/to/SAMBA/share]

Sie können auch den Dateibesitz und die Gruppenmitgliedschaft wie folgt überschreiben:

# chmod u+s,g+s [/path/to/SAMBA/share]

Obwohl dies eine faszinierende Fähigkeit ist, kann dies einen begrenzten Nutzen haben.

3. Zugriffskontrolllisten (ACL) verwenden

Zugriffssteuerungslisten oder ACL sind Dateisystemfunktionen, bei denen ein zusätzlicher Satz von Dateiattributen zusätzlich zu den normalen Linux-Dateibesitzer-/Gruppen-/anderen Berechtigungen gespeichert wird. Die Verwendung von ACL ermöglicht eine sehr feinkörnige Kontrolle über den genauen Zugriffstyp, der einem bestimmten Zugriffstyp gewährt werden soll.

Die Implementierung des SAMBA-Dateisystems unter Linux unterstützt Zugriffskontrolllisten, aber die Funktion muss explizit über das Attribut acl mount aktiviert werden. Es ist möglich, diese Funktion dynamisch zu aktivieren, als:

# mount -o remount,acl [/path/to/samba/mount/point]

Nehmen wir als Beispiel an, wir haben eine Freigabe /samba/office/, wo wir jedem Benutzer erlauben, eine Datei zu schreiben, aber die Gruppenanmeldeinformationen sollten auf office gezwungen werden. Wir könnten den Befehl verwenden:

# mount -o remount,acl /group
# setfacl -R -d -m u::rwx,g:office:rwx,o::r-x /samba/office
# /bin/getfacl /samba/office
# file: samba/office/
# owner: root
# group: office
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group:office:rwx
default:mask::rwx
default:other::r-x

Da wir diese ACL für das Verzeichnis einrichten, gilt sie für die darin enthaltenen Dateien und Unterverzeichnisse.


Linux
  1. Linux chmod und chown – So ändern Sie Dateiberechtigungen und Eigentumsrechte in Linux

  2. Wie stellt man den Besitz der Standardgruppe/des Benutzers aller Dateien unter /var wieder her?

  3. Wie erzwinge ich Gruppenbesitz auf Samba-Freigabe?

  4. So verwenden Sie den Befehl chown, um den Besitz in Linux zu ändern

  5. So erstellen Sie eine Samba-Freigabe unter Ubuntu 20.04

Linux:So teilen Sie Dateien in einem lokalen Netzwerk mit woof

So teilen Sie Dateien lokal unter Linux mit NitroShare

So benennen Sie eine Datei (en) in Linux um

So fügen Sie einen Benutzer zu einer Gruppe unter Linux hinzu

So fügen Sie einen Benutzer zu einer Linux-Gruppe hinzu

So komprimieren Sie eine Datei unter Linux