Wie richte ich einen Ordner so ein, dass alle darin erstellten Berechtigungen übernommen werden?

18

Ich habe einen Ordner / data (eigentlich eine Partition) für alle Daten, auf die alle Benutzer (in diesem Fall Familienmitglieder) zugreifen sollten. Wir haben alle individuelle Benutzerkonten und sind oft alle jederzeit auf diesem einen PC eingeloggt.

Wie kann ich Berechtigungen einrichten, damit wir alle Zugriff auf Dateien behalten, unabhängig davon, wer sie erstellt, einschließlich neuer Ordner? Wenn ich einen Ordner erstelle, erhält er meinen Benutzer und meine Gruppe, sodass niemand anders darauf schreiben kann.

steevc
quelle
für die besucher. Wenn Sie nur den Gruppennamen übernehmen möchten chmod -R g+s /parentdir. Hinweis: chmod -R Bei Bedarf
vorher ausführen
1
Hinweis zum Obigen: Das -RFlag to chmodist sehr selten nützlich, da wir selten Verzeichnisse (die immer eine Ausführungsberechtigung benötigen) und reguläre Dateien (die selten eine Ausführungsberechtigung benötigen) mit denselben Berechtigungen haben möchten
Zanna

Antworten:

17

Ein anderer Ansatz ist die Verwendung von Zugriffssteuerungslisten, einer Obermenge von Dateiberechtigungen.

Zunächst müssen wir das acl- Installieren Sie acl Paket installieren :

sudo apt-get install acl

Vor Ubuntu 14.04 muss die Partition mit der Option bereitgestellt werden , dass aclFolgendes funktioniert. Es könnte hinzugefügt werden in /etc/fstab, wie in

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

oder für ein bereits gemountetes Dateisystem

sudo mount -o remount,acl /media/shared

Als Nächstes sollten Sie eine neue Gruppe erstellen, zu der alle Benutzer hinzugefügt werden, die im Lese- / Schreibmodus auf die Freigabe zugreifen dürfen. Ich nenne es usershare. Eine bereits vorhandene Gruppe kann verwendet werden.

sudo addgroup usershare

Jetzt fügen wir die Benutzer enzotibund steevczu dieser Gruppe hinzu:

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(gültig beim nächsten Login).

Dann fügen wir allen Dateien, die sich bereits in befinden , eine ACL mit rwxBerechtigungen für die Gruppe hinzuusershare/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

Schließlich fügen wir eine Standard-ACL mit rwxBerechtigungen für die Gruppe usersharefür alle Dateien hinzu, die von nun an innerhalb von erstellt werden/media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

Jetzt haben alle Benutzer der usershareGruppe die vollen Berechtigungen für alle Dateien unter /media/shared. Die Berechtigungen jedes Benutzers in den Home-Verzeichnissen des Benutzers und anderer Benutzer sind nicht betroffen.

Ich habe diese Lösung getestet und sie scheint zu funktionieren, aber Vorschläge und Korrekturen sind willkommen.

Anmerkung : Neue Dateien und Verzeichnisse, die im betrachteten Verzeichnis erstellt wurden, haben Schreibrechte für die usershareGruppe, aber Dateien, die in den Ordner kopiert oder verschoben wurden, behalten ihre ursprünglichen Rechte. Wenn der Benutzer meines Wissens nur Schreibzugriff auf neu erstellte Verzeichnisse benötigt, ist dies kein Problem. Andernfalls sollten die Berechtigungen manuell geändert werden. In dieser Antwort erfahren Sie, wie Sie dieses Problem lösen können, indem Sie die umask der Benutzer definieren 002.

Enzotib
quelle
Ich kenne acl nicht sehr gut. Können Sie eine Datei mit Berechtigungen wie "rw-r - r--" von Ihrem Ausgangsordner in den freigegebenen Ordner testen und kopieren und prüfen, ob die Berechtigungen für die usershareGruppe auf Ihre Standardberechtigung "rwx" geändert werden ?
vereinbaren Sie den
@arrange: nein, es funktioniert nicht wie vorgesehen. Ich werde in der Antwort darauf hinweisen. Vielen Dank
Enzotib
Ich würde hinzufügen, dass der /etc/fstab/ remountstep nicht benötigt wird, da standardmäßig mit aktivierter Option ext4gemountet werden sollte acl.
Enzotib
8
  1. Ordner erstellen.

    Beispielsweise:

    mkdir /mnt/family
    

    Wenn Sie Partition , um sie ... wenn ext4 montieren muss alles was Sie brauchen in /etc/fstabIS

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. Erstelle eine Gruppe myfam.

    addgroup myfam
    
  3. Fügen Sie dieser Gruppe einige Benutzer hinzu

    adduser papa myfam  
    adduser mom myfam
    
  4. Nun nimm und gib die Erlaubnis.

    Ich denke, Sie sollten anfangen, sich zu ändern umask.

    Standard-Dateisystemberechtigungen und Zugriffsrechte in 12.04

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    Jetzt am wichtigsten. In dieser Zeile erstellen setgidSie alles , was Sie unter diesem Ordner erstellen, und haben Ihre Benutzer als Eigentümer und Gruppe myfam. Dadurch konnte das System die primäre Benutzergruppe überschreiben.

    chmod -R g+s /mnt/family   
    
Pas_
quelle
3

Am einfachsten ist es, jeden Benutzer zur Gruppe aller anderen Benutzer hinzuzufügen.

Ändern Sie dann die umask jedes Benutzers von 022 auf 002, dies könnte in erfolgen /etc/profile.

Bearbeiten

Der erste Schritt könnte durch den folgenden ersetzt werden: Alle Benutzer sollten usersals primäre Gruppe zur Gruppe gehören .

Edi2

Wie @James_Henstridge vorschlug, kann es praktisch sein, das Bit setgid im Hauptverzeichnis zu setzen, damit neu erstellte Dateien und Verzeichnisse unabhängig vom Benutzer dieselbe Gruppe haben. Auf diese Weise können Sie die Einstellung usersals primäre Gruppe für Benutzer vermeiden .

Enzotib
quelle
Möglicherweise möchten Sie Ihre Antwort bearbeiten, um auch vorzuschlagen, das Bit setgid in allen Verzeichnissen zu setzen, /datadamit neue Dateien die Gruppeneigentümerschaft übernehmen.
James Henstridge
edit3 :) Wenn Sie eine Datei in den /dataOrdner kopieren , werden die Berechtigungen nicht vererbt, sodass die alten Dateien mit gw-Berechtigungen nicht von anderen geändert werden können. edit4: Die Einstellung usersals primäre Gruppe und umask0002 ist definitiv keine gute Idee, da jeder aus dieser Gruppe Ihre neu erstellten Dateien ändern kann.
Ordnen Sie den
@arrange: in bezug auf dein edit4 habe ich vorgeschlagen, usersnur die benutzer in die gruppe aufzunehmen, die rw-zugriff auf die freigabe haben dürfen. Es war eine Frage der Bequemlichkeit, es könnte auch eine andere Gruppe dafür geschaffen werden. In Bezug auf Ihre edit3, es ist nicht korrekt, kopierte Datei die Ordnergruppe zu erwerben.
Enzotib
@enzotib: um meinen Punkt mit anderen Worten zu wiederholen: edit4 - Wenn usersmeine primäre Gruppe ist und mehr Benutzer in dieser Gruppe sind, können sie meine Dateien auch außerhalb des freigegebenen Verzeichnisses ändern; edit3 - Ich habe Berechtigungen geschrieben , NICHT Ordnergruppe.
vereinbaren Sie den
@arrange: dein punkt ist richtig, ich habe gerade eine andere antwort geschrieben, könnte interessant sein deine meinung zu hören.
Enzotib
2

Dies klingt nach einem Job für ACLs. Giles hat auf der SE Unix- und Linux-Site eine sehr gründliche Antwort , die mir geholfen hat, das gleiche Problem zu lösen.

Ephsmith
quelle
1
Das hat funktioniert! Ich habe andere Antworten mit ACL gesehen, aber dies ist die einzige, die ich gesehen habe, die die Berechtigungen nicht nur für neue Dateien und Verzeichnisse ändert, die im freigegebenen Verzeichnis erstellt wurden, sondern auch für diejenigen, die kopiert oder in dieses Verzeichnis verschoben wurden.
ダ ダ ボ ー
0

Ich verstehe nicht, sind alle Linux-Linux, Linux-Windows, Linux - ???, mit Samba ?, SSH ?, Pigeons ?; Auf jeden Fall müssen Sie die anderen Mitglieder mit Ihrem Benutzernamen (Ihrer Gruppe) in die Gruppe aufnehmen, und sie erhalten die gleichen Berechtigungen wie Sie.

juancarlospaco
quelle
Dies sind mehrere Benutzer auf einem PC. Ich bin sicher, es muss eine Möglichkeit geben, die Standardberechtigungen auf etwas Nützliches zu setzen.
Steevc
0

Ich bin auf diese Frage gestoßen, als ich nach Antworten für mein GROUP PERMISSION-Problem gesucht habe. Ich habe die Frage gelesen und es scheint, als würde ich bereits umsetzen, was die Frage zu erreichen versucht.

Also machte ich mir die Mühe, darauf zu antworten.

Ich habe bereits eine Freigabe für alle Benutzer in meinem LAN eingerichtet, die nur gelesen und ausgeführt werden kann, und nur mein Konto hat die Berechtigung, in die freigegebenen Ordner zu schreiben.

Ich habe einen Mehrzweck-Server in meinem LAN, der Ubuntu 12.04 LTS Desktop Edition verwendet. Ich habe eine Mischung Client-Maschinen von Linux und Windows.

Hier ist, wie ich es eingerichtet habe:

1. Auf meinem Server habe ich Benutzerkonten mit dem Namen adminundclientone

Das adminKonto ist das Konto, das bei der Installation von ubuntu erstellt wurde, und das clientoneKonto ist das Konto, das über das Menü BENUTZERKONTEN in ubuntu erstellt wurde. Es hat nur eine Standardberechtigung, keine Administratorrechte und wird der usersGruppe hinzugefügt . Sie können dies natürlich nur über das Terminal tun. Fügen Sie weitere zusätzliche Benutzerkonten für Ihre Client-Computer hinzu.

2.Die freigegebene Partition / der freigegebene Ordner wird in fstab automatisch bereitgestellt, wobei nur die Standardoption verwendet wird.

3. Mein Netzwerk befindet sich in einer Arbeitsgruppenumgebung und in einer mylanArbeitsgruppe.

Alle Maschinen in meinem LAN sind so eingestellt, dass sie die mylanArbeitsgruppe verwenden.

4.Mein freigegebener Ordner mit dem Namen enthält sharedbereits Dateien. Also ändere ich den Besitzer und die Gruppe rekursiv mit dem folgenden Befehl.

 sudo chown -Rv admin:users /shared

5.Ich setze die Ordner- und Dateiberechtigung auch /sharedrekursiv mit dem Befehl auf Ordner

 sudo chmod -Rv 750 /shared

Gastcomputer in meiner mylanArbeitsgruppe haben mit chmod 750 keinen Zugriff auf die Freigabe

Sie können verwenden

 sudo chmod -Rv 755 /shared

Alle zukünftigen Benutzerkonten innerhalb der usersGruppe haben nur Leserechte.

6. Auf meinem Client-Computer (Windows XP) habe ich ein Benutzerkonto mit dem Namen eingerichtet clientone. Derselbe Benutzername und dasselbe Passwort wie bei dem auf meinem Ubuntu-Server erstellten. Ein zweites Konto mit dem Namen clienttwowird ebenfalls auf dem Ubuntu-Server erstellt und es ist dasselbe Benutzerkonto, das auf meinem zweiten Computer (linuxmint 15) verwendet wird.

7. Auf meinem Client-Computer, nachdem clientoneich mich mit dem Konto angemeldet habe , gehe ich zu Befehl ausführen und gebe dann ein

 //192.168.10.254/shared

192.168.10.254ist die IP-Adresse meines Ubuntu-Servers, /sharedist der Ordner, der auf meinem Ubuntu-Server freigegeben ist

 smb://192.168.10.254/shared

Wenn Sie zur Eingabe eines Kennworts aufgefordert wurden, geben Sie das Kennwort Ihres Benutzerkontos ein. Und auch Ihr Schlüsselbund-Passwort, wenn KEYRING auf Ihren Linux-Rechnern aktiviert ist.

Dieser funktioniert für mich in meinem eigenen Netzwerk-Setup. Mein Server ist ein Mehrzweckserver, der als Squid-Server, XBMC- und Mediatomb-Server sowie als Amahi-Server dient.

Ich suche noch nach Möglichkeiten, wie ich den Dateifreigabeteil meines Setups verbessern kann. Die obige Anleitung ist keine kugelsichere Lösung. Kaufen Sie sie und probieren Sie sie aus. Ich teste und versuche das ACL-Ding zusammen mit automatisch gemounteten freigegebenen Ordnern. Da Ihre Anforderungen an die Freigabe von Ordnern immer komplizierter werden, garantiert Ihnen die obige Anleitung keinen Erfolg.

Info hinzugefügt:

Ich habe Amahi Server auf meinem Server installiert. Ich habe es auch verwendet, um Benutzerkonten zu erstellen, die Zugriff auf die freigegebenen Ordner haben sollen. Ich habe es auch verwendet, um neue Ordnerfreigaben zu erstellen.

Wenn Sie komplexere Benutzerberechtigungen für verschiedene Benutzer wünschen, ist ACL die richtige Wahl.

GaryP
quelle
0

Ich habe Videodateien auf meinem Namen, aber wenn ich mich mit dem Namen meiner Töchter anmelde, kann ihr Konto die Videodateien nicht sehen. Also ging ich zu den Benutzerkonten, entsperrte sie (oben rechts) und änderte dann ihren Kontotyp von "Standard" zu "Administrator" (das ist, was mein Konto ist). Jetzt werden alle Videodateien, wirklich alles, angezeigt wenn unter ihrem Konto angemeldet.

Joe
quelle