Verzeichnis mit mehreren Benutzern teilen

pinky

pinky

König
Hi!

Ich suche nach einer einfachen Möglichkeit ein Verzeichnis mit mehreren lokalen Benutzern zu teilen.

Hintergrund: Meine Freundin und ich verwenden beide den gleichen PC. Jetzt wollen wir Sachen wie Urlaubsbilder gerne so speichern, dass jeder darauf zugreifen kann.

Ich habe hierfür ein Verzeichnis /home/share angelegt und würde das (evtl. auch nur irgendwelche Unterverzeichnisse in die jeweiligen Home Verzeichnise verlinken). Das Problem sind die Benutzerrechte, meine erste Idee war eine gemeinsame Gruppe und das group-id bit auf das shared Verzeichnis setzen.

Damit wird auch jeder Datei die gemeinsame Gruppe zugeordnet, jeder kann also die Dateine in /home/share lesen. Die Schreibrechte werden aber nur für den Benutzer gesetzt der die Datei erstellt hat:

Code:
-rw-r--r-- 1 freundin   shareddir    0 2009-10-19 01:47 foo

Hat also meine Freundin ein Bild in unser gemeinsames Verzeichnis kopiert, dann kann ich es zwar ansehen aber nicht bearbeiten, löschen, verschieben etc. All das sollten aber immer beide können, egal wer die Datei ursprünglich mal erstellt hat.

Hat jemand eine Idee wie ich mein Vorhaben verwirklichen kann?
 
Zuletzt bearbeitet:
Setze einfach eine entsprechende umask für neu angelegte Dateien für das System fest (z.B. über die /etc/profile), so dass auch die Gruppe Schreibrechte bekommt. Alternativ halt der bereits erwähnte Weg über ACLs.
 
Setze einfach eine entsprechende umask für neu angelegte Dateien für das System fest (z.B. über die /etc/profile), so dass auch die Gruppe Schreibrechte bekommt. Alternativ halt der bereits erwähnte Weg über ACLs.

umask geht doch nur Benutzer oder mount-point weit (über die fstab), richtig? Ich brüchte es aber nur für ein Verzeichnis (natürlich + Unterverzeichnisse).

Ich habe es jetzt mal über acl mit diesem Befehl versucht:

Code:
setfacl -d -m group:shareddir:rwx /home/share/

Scheint ganz gut zu funktionieren wenn neue Dateien/Verzeichnisse angelegt werden. Bei kopieren/verschieben nach /home/share bleiben die alten Rechte aber erhalten. Wäre schön, wenn das auch noch gehen würde. Sonst geht es vermutlich auch schief, wenn z.B. meine Freundin von der gemounteten Digicam Bilder in das Verzeichnis kopiert.
 
Code:
groupadd freundin_und_ich
usermod -a -G freundin_und_ich freundin
usermod -a -G freundin_und_ich ich
chgrp -R freundin_und_ich /home/share
chmod -R g+rwx /home/share
 
Code:
groupadd freundin_und_ich
usermod -a -G freundin_und_ich freundin
usermod -a -G freundin_und_ich ich
chgrp -R freundin_und_ich /home/share
chmod -R g+rwx /home/share

Wie in meinem ersten Beitrag geschrieben, habe ich bereits eine gemeinsame Gruppe für beide User angelegt und mit dem setgroup-id bit dafür gesort, dass jede neue Datei der Gruppe "freundin_und_ich" gehört. Problem ist jetzt noch dafür zu sorgen, dass wirklich jede Datei die dort landet, egal ob durch ein cp, mv oder neu erstellt der Gruppe immer die gleichen Reche gibt wie dem Benutzer der die Datei erstellt hat.

Mit ACL's habe ich das für neu erstellte Dateien hin bekommen, bei cp oder mv werden aber die alten Rechte mitgesleppt, lediglich die Gruppenzugehörigkeit wird angepasst, dank setgroupid-bit.

Deine letzte Zeile hat zwei Probleme für mein Problem:
1. bekommen alle Dateien das x-bit, auch die wo man es eigentlich nicht will.
2. Ist dein Befehl eine einmalige Sache, wenn danach jemand eine neue Datei nach /home/share kopiert, dann stimmen die Rechte für diese Datei wieder nicht.

Es muss doch möglich sein ein Verzeichnis mit mehreren Benutzern zu teilen?
 
Ich glaube nicht, dass du das so automatisieren kannst.
Wenn du z.B. ein
Code:
cp -a
ausführst, werden nunmal die Dateirechte entsprechende "mitkopiert", sprich nicht geändert.
Kannst ja ein Alias basteln, mit shellscript:
~/bin/cp_chgrp
Code:
#! /bin/bash
/bin/cp $1 $2
chgrp freundin_und_ich $2
chmod g+rw $2
Code:
alias cp="~/cp/cp_chgrp"

(Wäre eine "dreckige" Lösung.)

MfG,
Schard
 
Ich glaube nicht, dass du das so automatisieren kannst.
Wenn du z.B. ein
Code:
cp -a
ausführst, werden nunmal die Dateirechte entsprechende "mitkopiert", sprich nicht geändert.

bei einem cp -a wird das ja erzwungen und ist auch ok. Aber bei einem normalen cp, bei einem Kopiervorgang mit konqueror, thunar, nautilus,...?

Daran scheitert auch deine Idee mit einem eigen Kopierbefehl. Meine Freundin wird ihre Bilder höchstwahrscheinlich nie in der Konsole von der Digikam oder einem USB-Stick in das Bilder-Verzeichnis kopieren. Da wird höchstwahrscheinlich ein Dateimanager, eine Fotoverwaltung, etc. verwendet werden.

Ich habe schon an Samba gedacht, da kann man so shared-Folder relativ leicht einrichten. Aber irgendwie gefällt mir das nicht, für lokale Sachen eine Netzwerkschicht dazwischen zu schieben.
 
Wird der PC immer nach dem arbeiten abgefahren oder soll er uptime rekorde brechen? Ich würde den chmod auf dein Gemeinsames Verzeichnis nämlich übern cronjob und/oder runlevel-script laufen lassen. Ist zwar auch nicht gerade elegant, aber wenns hilft ist doch ok.
 
Wird der PC immer nach dem arbeiten abgefahren oder soll er uptime rekorde brechen? Ich würde den chmod auf dein Gemeinsames Verzeichnis nämlich übern cronjob und/oder runlevel-script laufen lassen. Ist zwar auch nicht gerade elegant, aber wenns hilft ist doch ok.

Das war auch die Notlösung die ich mir überlegt habe und die ich jetzt wohl umsetzen werden. Schade, dass es da keine elegante Lösung gibt...
 
Es gibt auch für Ordner, die keine eigenen Partitionen sind, eine "elegante" Lösung und diese nennt sich Sticky-Bit. Ist das Sticky-Bit für einen Ordner gesetzt, kann der Eigentümer darin Dateien anlegen und jeder, der zur Gruppe des Ordners gehört kann diese ändern.
 
Es gibt auch für Ordner, die keine eigenen Partitionen sind, eine "elegante" Lösung und diese nennt sich Sticky-Bit. Ist das Sticky-Bit für einen Ordner gesetzt, kann der Eigentümer darin Dateien anlegen und jeder, der zur Gruppe des Ordners gehört kann diese ändern.

Du meist das setgid-bit? Das Sticky-Bit kenne ich nur im Zusammenhang mit ausführbaren Dateien.

Das setgid-Bit habe ich, wie in meinem ersten Beitrag geschrieben schon gesetzt. Das bewirkt aber nur, dass alle in der selben Gruppe lese-Rechte haben aber keine Schreib-rechte.

Wenn meine Freundin eine Datei anlegt, dann sehen die Rechte mit dem setgid-bit danach so aus:

-rw-r--r-- 1 freundin shareddir 0 2009-10-19 01:47 foo

Ich kann die Datei also auch lesen, da ich in der Gruppe shareddir bin, aber nicht schreiben.

Wenn du etwas anderes wie das setgid-bit meinst, dann würde ich mich freuen, wenn du es noch etwas genauer beschreiben könntest.
 
Das Set-Group-ID-Bit (+s) ist nicht das Sticky-Bit (+t). Siehe z.B. http://www.comptechdoc.org/os/linux/usersguide/linux_ugfilesp.html

Sorry, wenn ich mich gerade etwas blöd anstelle, aber beim sticky-bit geht es doch um die execute-Rechte und nicht um die write-Rechte.

Wenn ich das sticky bit auf /home/share setze werden dadurch doch nicht alle Dateien die dort hin kopiert werden oder dort erzeugt werden mit den Gruppenrechten rw ausgestattet. Oder verstehe ich gerade etwas nicht...
 
User, die der Owner-Gruppe angehören, sollten aber dann in den Dateien schreiben und lesen können.
 
User, die der Owner-Gruppe angehören, sollten aber dann in den Dateien schreiben und lesen können.

Sorry, aber irgendwie bekomme ich das nicht auf die Reihe.

Ich habe jetzt das sticky-bit auf /home/share gesetzt:

Code:
$ ls -la /home/
[..]
drwxrws--T  3 pinky shareddir  4096 2009-10-23 12:06 share
[..]

Danach habe ich in /home/share zwei Dateien erzeugt (einmal als pinky und einmal als freundin) und die Rechte sehen danach so aus:

Code:
$ ls -la /home/share/
drwxrws--T 3 pinky shareddir 4096 2009-10-23 12:06 .
drwxr-xr-x 7 root     root      4096 2009-10-19 01:43 ..
-rw-r--r-- 1 pinky shareddir    0 2009-10-23 12:06 bar
-rw-r--r-- 1 freundin   shareddir    0 2009-10-23 12:03 foo

Wir können also immer noch nicht die jeweilig anderen Dateien editieren.

Was mache ich falsch?
 
Sorry, aber irgendwie bekomme ich das nicht auf die Reihe.

Ein Versuch zu helfen.

Auf der Console folgendes Ausführen (Copy & Paste)
1.
Code:
chmod -R 0775 share-verzeichnis

2.
Code:
echo "umask 0002">~/.bash_profile
(bitte den Punkt nicht übersehen.)
jetzt als freundin einloggen und den echo-befehl nochmal ausführen

3. Reboot

4. fertig
 

Ähnliche Themen

Gnome-Menüs und mehr sichern

Zurück
Oben