JensDiemer

Hat man mehrere Benutzter an einem Linux System und möchte sich Dateien teilen, ist das gar nicht so einfach.
Hier eine Variante, wie man das bewerkstelligen kann.

Warnung vorweg: Das sollte man nur machen, wenn alle Benutzer des Systems getraut werden kann.

Ziel ist es, das man z.B. die MP3 Sammlung oder die Digtalbilder nur einmal auf dem System speichert, aber jeder Nutzer nicht zu lesend, sondern auch schreibend darauf zugreifen kann. So kann jeder z.B. bei Bildern neue Tags vergeben.

Kurzanleitung:

  • Alle Benutzer in die Benutzergruppe users packen
  • umask auf 002 setzten
  • Die gemeinsamen Verzeichnisse:
    • zentral speichern und per symlink in das jeweilige Home-Verzeichnis einbinden
    • Setgid (Set Group ID) nutzten, siehe auch: https://de.wikipedia.org/wiki/Setgid
    • chown -R .users /foo/bar
    • find /foo/bar -type d -exec chmod g+rwxs {} \;

Bsp:

Benutzergruppe

Benutzer in users packen:

1
2
$ sudo adduser foo users
$ sudo adduser bar users

umask

umask ist normalweise 022, das beteutet, bei neu erstellten Sachen:

  • neue Verzeichnisse: 755 also: drwxr-xr-x
  • neue Dateien: 644 also: -rw-rr

Nun könnte man also 002 setzten, dann würde das raus kommen:

  • neue Verzeichnisse: 775 also: drwxrwxr-x
  • neue Dateien: 664 also: -rw-rw-r--

Oder man geht einen Schritt weiter und setzt 007 damit "other" nichts mehr darf, also:

  • neue Verzeichnisse: 770 also: drwxrwx---
  • neue Dateien: 660 also: -rw-rw----

Eine Übersicht:

umask neue Verzeichnisse neue Dateien
022 755 drwxr-xr-x 644 -rw-r--r--
002 775 drwxrwxr-x 664 -rw-rw-r--
007 770 drwxrwx--- 660 -rw-rw----

umask setzten

Nun kann man global in /etc/profile bzw. /etc/login.defs die umask setzten oder lokal für jeden Benutzter.
Ich setzte sie lokal in jedem Homeverzeichniss:

1
(echo; echo "umask 007") | tee -a ~/.profile >> ~/.bash_profile

Test

in der Testphase

1
2
adduser share --ingroup users --disabled-login --shell /bin/false
chmod 2770 /home/share/ # ist: drwxrws---