Hallo !
Erstmal der allgemeine Teil:
Ich steh wieder mal voll auf dem Schlauch:
Ich mochte einem Benutzer „userX“ vollen Zugriff auf ein
Verzeichnis „daten“ ermöglichen.
Bei den langatmigen Anleitungen zum Umgang mit dem Befehl
chmod komme ich aber beim besten
Willen nicht dahinter, wie der Befehl genau auszusehen hat,
denn alle Beispiele beschreiben
„Besitzer“, „Gruppen“ und „Andere“.
Mach mal ein ls -l: Da steht bei jeder Datei die Rechte, der Besitzer und die Gruppe:
drwxr-xr-x 3 fleischer users 208 2005-04-08 11:41 tmp
---------- --------- -----
Rechte Besitzer Gruppe
Rechte lassen sich, wie du richtig geschrieben hast, getrennt für Besitzer, Gruppe und Andere vergeben. Jede Datei hat genau einen Besitzer und gehört zu eine Gruppe. Ein Benutzer kann dagegen mehreren Gruppen angehören.
Zu den eigentlichen Rechten habe ich schon einmal was geschrieben, siehe http://www.alexander-fleischer.de/info/chmod.php .
Wie müssten denn die korrekten Befehle lauten, wenn „userX“
nicht der Besitzer von „daten“
ist, die Datei aber explizit nur durch root und „userX“
benutzt werden können soll?
Dann muss userX entweder Besitzer werden, oder zu einer Gruppe hinzugefügt werden, welche Zugriff auf die Daten haben soll. Da „root“ sowieso auf alles Zugriff hat, solltest du einfach den Besitzer der Daten auf „userX“ ändern (chown userX daten) und danach die Zugriffsrechte so setzen, das nur userX zugreifen kann (chmod 600 daten).
Wenn ich Rechte nur für Gruppen angeben kann, muss ich also
dafür sorgen dass „userX“ in
einer bestimmten Gruppe ist?
Entweder die /etc/group direkt bearbeiten, oder per groupadd / groupmod.
Wie gebe ich bei chmod an für WELCHE Grupppe die Rechte
geändert werden? Dazu finde ich keine
klaren Aussagen.
Es erhält immer die Gruppe Rechte, die der Datei zugeordnet ist, das kann nur eine sein. Kann man mit chgrp ändern…
Wie lege ich Gruppen an,
groupadd
ändere die Gruppe eines Benutzers,
usermod -G
ändere ich den Besitzer einer
Datei?
chown
Nun zu deinem Problem: Auf nicht-Linux Dateisystem geht, wie du schon gemerkt das alles nicht. FAT32 bietet einfach keine Möglichkeit, diese Attribute zu speichern. Daher haben alle Dateien auf der Windows-Partition die gleichen (nicht änderbaren) Besitzer / Gruppe / Rechte. Du kannst die Rechte nur für die gesamte Partition ändern. Das geht dauerhaft durch Anpassen der Datei /etc/fstab (File System TABle). Da steht zum Beispiel eine Zeile drin (augeben mit „cat /etc/fstab“, pro Dateisystem gibt es eine Zeile):
/dev/hde2 /windows/C vfat uid=fleischer,gid=users,umask=0007 0 0
--------- ---------- ---- ----------------------------------
Platte Mountpoint FS Mount-Optionen
FS=Filesystem
Vorn steht die Gerätedatei für die Partition, also /dev/hda1 für die 1. Partition auf der ersten IDE-Platte (Primary Master), oder wie hier die 2. Partition auf der 5. IDE Platte (SATA).
Dahinter steht, wo das Ganze im Dateisystem zu finden ist, danach das Dateisystem selbst (FAT32=>vfat).
Das Interressante sind die Optionen dahinter, uid= gibt den Besitzer aller Daten an, gid die Gruppe, umask welche Rechte NICHT gesetzt sind (in dem Fall ist das chmod 770, mit fmask=0110,dmask=0007 kann man das auch für Verzeichnisse (d) und Dateien (f) getrennt einstellen, da Verzeichnisse ausführbar sein müssen, „normale“ Dateien dagegen nicht).
Die Optionen passend ergänzen, vorher am besten erst mal auf der Konsole probieren, mit mount -oremount, /mountpoint (als root) neu mounten und mit ls -l nachsehen, ob die Rechte stimmen (gilt bis zum Reboot).
Um das dauerhaft zu machen, dann also die Optionen (die man übrigens alle bei „man mount“ findet) in der fstab ergänzen (sollte die Distribution da noch andere hinzugefügt haben, stehen lassen, ebenso alle anderen Felder und Zeilen der fstab). Dann sollte es auch nach dem booten stimmen…
Alexander
PS: sicherer wird FAT32 dadurch nicht, das Filesystem kennt nunmal keine Rechteverwaltung, wer da schreiben will, muss nur Knoppix/Windows booten…