# Wie Zugriff von mehreren Benutzern auf ein Verzeichnis

## alex00

Habe folgendes Problem. Ich nutze digikam zum Verwalten meiner Fotos. Ich und meine Frau greifen auf den Ordner

/home/Bilddatenbank

gemeinsam zu. Wenn ich nun Bilder in das Verzeichnis spiele so bekommen sie als Besitzer mich zugewiesen und als Gruppe "users". Leider kann meine Frau diese Bilder dann zwar anzeigen aber nicht ändern und speichern. Wenn sie Bilder reinspielt so ist es umgekehrt. Das ganze kann ich nur immer für die gerade im Verzeichnis befindliche Bilder ändern, indem ich eben die Rechte ändere. Sobald ich neue Bilder reinspiele gilt das eben für die neuen Bilder nicht mehr.

Kann ich das ganze dauerhaft ändern? Wenn ja wie? Also ich  kann ich es machen dass neue Dateien die ich reinkopiere immer die Rechnet bekomme, dass jeder andere Benutzer sie ändern kann?

Danke für jede Hilfe.

----------

## musv

Erstmal ist /home/bilderdatenbank bissel ungünstig gewählt. In /home sollten eigentlich nur Benutzer stehen, die es auch tatsächlich gibt.

Besser wäre, das Verzeichnis "Bilderdatenbank" in Deinem Homeverzeichnis oder dem Deiner Frau anzulegen und von dort aus dann einen Symlink zum jeweilig anderen Homeverzeichnis setzen.

Rechte:

Ich vermute mal, daß ihr beide in der Gruppe "User" seid. Demzufolge sollte es reichen, das Verzeichnis einfach mit den Rechten 775 zu bestücken. Ist jetzt die Frage, wenn man die Bilder editiert, ob das dann als "Schreiben in den Bildern" zählt oder einfach als Überschreiben der Datei. In ersterem Fall würdest du dann wieder das Rechteproblem haben. Ich vermute aber mal, daß die diversen Grafikprogramme einfach nur die Datei komplett überschreiben, und da sollten dann die Verzeichnisrechte ausreichend sein.

----------

## _eckobar_

du könntest entweder das Sticky Bit für Verzeicnisse und / oder eine umask lösung mit einer gemeinsamen gruppe anstreben. andere möglichkeit wäre natürlich auch noch ACLs

----------

## alex00

Ok...also erst mal danke für eure Antworten. Könntet ihr mir auch die Befehle angeben die ich ausführen muss.

Danke

----------

## _eckobar_

der link zugriffsrechte sollte dir eigentlich weiterhelfen betreffend umask.

stickybit kannst du mittels

```
find ./ -type d -iname "*" -exec chmod a+s {} \;
```

 setzen. wobei beim stickybit wichtig ist, dass du gruppen rechte auf den ordnern dementsprechend editiert hast, sonst macht es keinen sinn. hier nochmal die theorie zum sticky bit.

ACLs sind schon "etwas" komplizierter. zuerst brauchst du ACL-support im kernel. hab kurz gegoogelt, was mir sinnvoll aussieht und dir sicher weiterhelfen wird:

 http://www.suse.de/~agruen/acl/linux-acls/online/

 http://wiki.kaspersandberg.com/doku.php?id=howtos:acl

----------

## SvenFischer

Das Stickybit ist hier falsch am Platz, dann kann er nicht die Datei einer anderen modifizieren.

ein simples chmod 660 -R /Verzeichnis sollte helfen, um die bestehenden zu ändern. Um auch die neu hinzugefügten Datein diese Maske zu geben, musst Du (und hier enden meine Kenntnisse, außer, das ACL's geil sind und sicherlich die Lösung sind). Eine umask Änderung betrifft glaube ich immer gleich ganze Partitionen, oder?

----------

## _eckobar_

 *SvenFischer wrote:*   

> Das Stickybit ist hier falsch am Platz, dann kann er nicht die Datei einer anderen modifizieren.
> 
> ein simples chmod 660 -R /Verzeichnis sollte helfen, um die bestehenden zu ändern. Um auch die neu hinzugefügten Datein diese Maske zu geben, musst Du (und hier enden meine Kenntnisse, außer, das ACL's geil sind und sicherlich die Lösung sind). Eine umask Änderung betrifft glaube ich immer gleich ganze Partitionen, oder?

 

warum sollte hier stickybit falsch am platz sein? wenn stickybit auf verzeichniss angewendet wird und mit dementsprechendem rechten auf dem verzeichnis (default wert durch umask editiert) versetzt den user doch in die lage die dateien zu modifizieren?!?! bitte nicht verhaften, wenn ich jetzt falsch liege

----------

## alex00

Also ich blicke nicht mehr durch  :Sad: 

----------

## holgi1789

 *alex00 wrote:*   

> Ok...also erst mal danke für eure Antworten. Könntet ihr mir auch die Befehle angeben die ich ausführen muss.
> 
> Danke

 

Ich empfehle auch ACL, da dort nur dein Bilddatenbankverzeichnis betroffen ist. Einrichtung dieser unter

http://gentoo-wiki.com/HOWTO_Use_filesystem_ACLs beschrieben.

Da ihr beide in der Gruppe users steht, reicht es, wenn die Gruppe Users Schreibrechte für alle neu angelegten Dateien bekommt.

```
setfacl -m d:g:users:rwx /home/bilddatenbank
```

Alle neu erstellten Dateien, als auch Bilder sind von den Rechten so, dass ihr beide schreiben dürft.

Leider klappt das nicht für bestehende. Da digikam imho Unterverzeichnisse anlegt, musst du entweder den Bildern Ausführrechte geben, oder mit find arbeiten.

Unschöne Lösung mit Ausführrechten

```
setfacl -m g:users:rwx -R /home/bilddatenbank
```

Eleganter mit für Verzeichnisse

```
find /home/bilddatenbank -type d --exec setfacl -m g:users:rwx {} \;
```

dann für Dateien

```
find /home/bilddatenbank -type f --exec setfacl -m g:users:rw {} \;
```

SuSE hat ne ganz gute Doku zu ACLs:

http://www.suse.de/~agruen/acl/chapter/fs_acl-de.pdf

ACLs sind wirklich ne geile Sache. Muss ein bißchen rumspielen und sich dran gewöhnen, dann will man sie aber nicht mehr missen.

----------

## flash49

ACLs braucht man nicht unbedingt, deshalb hier mal der klassische Unix Weg:

 *_eckobar_ wrote:*   

> 
> 
> warum sollte hier stickybit falsch am platz sein? wenn stickybit auf verzeichniss angewendet wird und mit dementsprechendem rechten auf dem verzeichnis (default wert durch umask editiert) versetzt den user doch in die lage die dateien zu modifizieren?!?! bitte nicht verhaften, wenn ich jetzt falsch liege

 

Du bist verhaftet.  :Twisted Evil: 

In dem Thread gibt es wohl einiges an Misverständnissen, deshalb mal alles schön der Reihe nach:

1.) Neben den normalen Datei/Verzeichnis Rechten(rwx) gibt es 3 zusätzliche Flags: suid(--s------), sgid(-----s---), sticky(--------t) Das sticky Flag/Bit wird also mit "t" gesetzt bzw. angezeigt!

2.)Bei Dateien mit mit suid/sgid Flag wird das jeweilige Programm mit den Rechten des Besitzers/der Gruppe ausgeführt. (Beispiel: passwd, damit jeder Benutzer sein Passwort ändern kann) Das sticky Flag bei Programmen wird heute nicht mehr verwendet.

3.)Bei Verzeichnissen geben die suid/sgid Flags, wem die neuen Dateien im Verzeichnis gehören: Sind sie gesetzt, dann gehören sie dem Besitzer/der Gruppe, dem/der das Verzeichnis gehört.

Das sticky Flag wird vor allem für Verzeichnisse wie /tmp verwendet. In diese Verzeichnisse soll jeder Benutzer schreiben können, damit er aber nur seine Dateien auch wieder löschen kann (und nicht auch alle anderen) setzt man das sticky Bit. Bei unseren Problem hätte das also genau die entgegengesetzte Wirkung!

Zurück zum Problem:

Das die Dateien nur lesbar sind liegt an der umask. Diese legt fest welche Rechte beim erstellen von Dateien herausgenommen werden.

Beispiel: Ist die umask 027 so bekommen neue Dateien als default die Berechtigung rw-r-----, Verzeichnisse erhalten rwx-r-x---

Die umask sollte also in unsrem Fall auf 007 (oder 002, was bei Einzelplatzrechner auch noch OK ist) stehen. Am besten setzt man die umask in /etc/profile gleich für alle Benutzer.

Leider handelt man sich damit ein kleines Sicherheitsproblem ein: Alle Mitglieder seiner, deshalb muß man als seine Hauptgruppe ein Spezialgruppe wählen, bei der nur jeder selbst Mitglied ist.

Beispiel für user "joe" mit der neuen Gruppe "joe" (Es hat sich eingebürgert diese Gruppe genauso wie den Benutzer zu nennen) :

Als root:

```
groupadd joe

usermod -g joe joe

cd ~joe

chown -R :joe  . #das dauert wahrscheinlich eine Weile

```

Damit sind unsere persönlichen Daten zwar wieder sicher, aber jetzt können andere Benutzer wieder nicht unsere Dateien in "/home/sharedfiles" lesen/bearbeiten, da sie ja nicht zu unserer Spezialgruppe gehören (das war ja auch erstmal der Sinn!). Und jetzt kommt endlich das gid Flag ins Spiel!

Wieder als root:

```
chown :users /home/shared

chmod g+rwxs /home/shared
```

Jetzt darf jeder in der Gruppe users in "/home/sharedfiles" schreiben und lesen und alle anderen in der Gruppe können diese Dateien auch wieder schreiben und lesen!

----------

## alex00

 *flash49 wrote:*   

> ACLs braucht man nicht unbedingt, deshalb hier mal der klassische Unix Weg:
> 
>  *_eckobar_ wrote:*   
> 
> warum sollte hier stickybit falsch am platz sein? wenn stickybit auf verzeichniss angewendet wird und mit dementsprechendem rechten auf dem verzeichnis (default wert durch umask editiert) versetzt den user doch in die lage die dateien zu modifizieren?!?! bitte nicht verhaften, wenn ich jetzt falsch liege 
> ...

 

Ja aber genügt der letzte Teil hier nun auch (also alles ab "Als root:") oder muss ich die meldungen davor auch berücksichtigen? Gilt das dann auch für neue Dateien die dazukommen? Und vorallem wie setze ich das umask von dem hier gesprochen wird?

----------

## flash49

 *Quote:*   

> Ja aber genügt der letzte Teil hier nun auch (also alles ab "Als root:") oder muss ich die meldungen davor auch berücksichtigen? 

 

Alles ab "Zurück zum Problem:" reicht zum Einrichten, das vorher ist als Erklärung gedacht.

Das einzige, was man wirklich machen muß ist das setzen der umask. Das hat aber das oben genannte Sicherheitsproblem zur Folge.

 *Quote:*   

> Gilt das dann auch für neue Dateien die dazukommen?

 

Ja das gilt für alle neuen Dateien und Verzeichnisse. Die Verzeichnisse "erben" auch das sgid Flag und die umask wird sowieso immer benutzt.

 *Quote:*   

> Und vorallem wie setze ich das umask von dem hier gesprochen wird?

 

 *flash49 wrote:*   

> Am besten setzt man die umask in /etc/profile gleich für alle Benutzer. 

 

Zum Testen kann man die umask auch mit dem gleichnamigen Befehl ansehen/setzen (man umask)

----------

## holgi1789

 *alex00 wrote:*   

> 
> 
> Ja aber genügt der letzte Teil hier nun auch (also alles ab "Als root:") oder muss ich die meldungen davor auch berücksichtigen? Gilt das dann auch für neue Dateien die dazukommen? Und vorallem wie setze ich das umask von dem hier gesprochen wird?

 

Wenn du nur die Schritte ab root machst und die umask setzt, kann deine Frau auch all deine Dateien im Homeverzeichnis überschreiben. Deshalb der Vorschlag dein Home-Verzeichnis mit einem separaten User zu setzen. Das ist auf jeden Fall sauberer.

Systemweite umask - Einstellungen stehen in /etc/profile.

In der ~/.bashrc kannst du sie auch für jeden Nutzer setzen.

Die Oktalwerte werden von den maximalen Rechten abgezogen, also wenn jeder alles darf, gibt es 777 für Verzeichnisse und 666 für Dateien. Eine umask von 027 bedeutet, dass für Verzeichnisse 750 und für Dateien 640 (-1 wird nicht interpretiert) rauskommt. Das heisst owner darf alles, group nur lesen (+hinein wechseln) other nix.

Neu angelegte Dateien (!) erhalten übrigens nie ein Ausführflag, der muss für z. B. Scripte immer manuell angegeben werden.

----------

## musv

Also ich glaub acl und die Zusatzbits (Sticky) sind hier bissel überdimensioniert.

Nicht umsonst gibt's die Unterscheidung zwischen Nutzer- und Gruppenrechten. Sonst könnte man ja die Gruppenrechte gleich abschaffen.

D.h. im Klartext:

```

mkdir Fotoverzeichnis

chmod 775 Fotoverzeichnis

```

sollte ausreichend sein.

----------

## alex00

 *musv wrote:*   

> Also ich glaub acl und die Zusatzbits (Sticky) sind hier bissel überdimensioniert.
> 
> Nicht umsonst gibt's die Unterscheidung zwischen Nutzer- und Gruppenrechten. Sonst könnte man ja die Gruppenrechte gleich abschaffen.
> 
> D.h. im Klartext:
> ...

 

Ja aber das beeinflusst doch nicht neue dateien die dazukommen, oder?

----------

## holgi1789

 *alex00 wrote:*   

>  *musv wrote:*   Also ich glaub acl und die Zusatzbits (Sticky) sind hier bissel überdimensioniert.
> 
> Nicht umsonst gibt's die Unterscheidung zwischen Nutzer- und Gruppenrechten. Sonst könnte man ja die Gruppenrechte gleich abschaffen.
> 
> D.h. im Klartext:
> ...

 

Richtig, da fehlt dann ein umask 002 oder umask 007. Dadurch würden die neuen Dateien im Fotoverzeichnis dann auch für die Gruppe schreibbbar. Allerdings sind alle neuen Dateien im gesamten System, die du anlegst dann für users schreibbar. Deshalb die Idee mit gid-Flag und den separaten Benutzergruppen oder die Idee mit den ACL-Rechten. Möchtest du ein sauberes System sind die beiden Wege das einzig mögliche. Bei einem Heimrechner mit zwei Leuten kann man auch den oben genannten nehmen. Ich würde aber trotzdem sagen, dass es nicht schadet, sich näher mit ACL und sid, gid und sticky bits auseinander zu setzen.

----------

## _eckobar_

verneige mich erfürchtig vor flash49. war da wirklich auf dem holzweg. sorry   :Embarassed: 

----------

## alex00

Geht leider noch nicht....habe jetzt das Problem dass neu erstellte Dateien (auch die neu eingespielten Fotos) die Rechte folgendermaßen gesetzt bekommen:

-rw-rw-----

Aber achtung dies ist nur wenn ich eine Datei in einem Unterverzeichnis von /home/Bilddatenbank mache. Wenn ich eine Datei direkt in /home/Bilddatenbank erstelle geht es.

----------

## _eckobar_

mal ein schuss ins blaue, vielleicht stimmts ja....

da du ja eine bereits bestehende ordner struktur hast musst du 

```
chown :users /home/shared

chmod g+rwxs /home/shared
```

 auch auf die unterverzeichnisse anwenden

```
find /home/shared -type d -iname "*" -exec chown :users {} \; && find /home/shared -type d -iname "*" -exec chown g+rwxs {} \;
```

damit rechte-handling auch in den unterverzeichnissen greift.

----------

## holgi1789

 *alex00 wrote:*   

> Geht leider noch nicht....habe jetzt das Problem dass neu erstellte Dateien (auch die neu eingespielten Fotos) die Rechte folgendermaßen gesetzt bekommen:
> 
> -rw-rw-----
> 
> 

 

Aber das ist doch genau was du willst! Eigentümer und Gruppe können lesen und schreiben, der Rest nicht.

 *alex00 wrote:*   

> 
> 
> Aber achtung dies ist nur wenn ich eine Datei in einem Unterverzeichnis von /home/Bilddatenbank mache. Wenn ich eine Datei direkt in /home/Bilddatenbank erstelle geht es.

 

Geht was? Wie sehen denn da die Rechte aus?

----------

## alex00

 *_eckobar_ wrote:*   

> mal ein schuss ins blaue, vielleicht stimmts ja....
> 
> da du ja eine bereits bestehende ordner struktur hast musst du 
> 
> ```
> ...

 

Bekomme:

chown: ,,g+rwxs": ungültiger Benutzer

----------

## _eckobar_

sorry. copy & paste fehler

```
find /home/shared -type d -iname "*" -exec chown :users {} \; && find /home/shared -type d -iname "*" -exec chmod g+rwxs {} \;
```

----------

## alex00

Wenn ich jetzt neue Verzeichnisse unter /home/Bilddatenbank erstelle so haben sie folgende Rechte:

drwxrws---

Sie sind aber für den anderen Benutzer gesperrt. Kann da nicht mal mehr rein als zweiter Benutzer.

Das ist übrigens für alle Unterverzeichnisse auch so. Leider.

----------

## holgi1789

 *alex00 wrote:*   

> Wenn ich jetzt neue Verzeichnisse unter /home/Bilddatenbank erstelle so haben sie folgende Rechte:
> 
> drwxrws---
> 
> Sie sind aber für den anderen Benutzer gesperrt. Kann da nicht mal mehr rein als zweiter Benutzer.
> ...

 

Welcher Gruppe gehört denn /home/Bilddatenbank

```
ls -l /home/Bilddatenbank
```

Ist der zweite User auch in der Gruppe?

```
id "name zweiter nutzer"
```

----------

## alex00

sorry mein fehler...geht alles...zweiter benutzer war nicht in users.

danke.

----------

## UTgamer

Ich wollte eure Tips nicht zwischen drin stören, ich nehme immer eine extra Partition zum Datentausch zwischen den Benutzern die mit FAT32 formatiert ist.  :Wink: 

Wie wäre es denn wenn jemand ein Wiki für genau diesen Fall schreiben würde, da die Frage sicher nicht zum ersten mal aufgetaucht ist.

So nach dieser Diskussion:

 - UMASK Rechtevergabe mit nachträglichen gid Anderungen

oder das ganze mit 

 - ACL's (Kerneladdon) erklärt

(Wenn ich Linux bei den Leuten installiere, rate ich ihnen immer zum Datenaustausch zwischen ihrem Win und Lin eine FAT32 Partition einzurichten, die dann für jeden Austausch herhalten muß, was ja auch hier helfen würde. Das verstehen die Leute sehr schnell und einfach.  :Very Happy:  )

----------

## alex00

Kann das mit den Rechten zusammenschreiben, kein Problem....in welches Wiki soll ich es geben?

----------

## UTgamer

Wie wäre es hierrunter:

http://gentoo-wiki.com/Main_Page

findet ganz sicher Anklang.  :Smile: 

----------

