Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly1st Edition November 1999 1-56592-449-5, Order Number: 4495 416 pages, $34.95 |
5.3 Dateirechte und Attribute auf MS-DOS und Unix
DOS war niemals als ein Multiuser- und Netzwerk-Betriebssystem geplant. Unix andererseits wurde von Anfang an in diese Richtung hin entworfen. Folglich gibt es Widersprüche und Lücken in der Berichterstattung zwischen den zwei Dateisystemen, die Samba nicht nur wissen, sondern auch Lösungen liefern muss. Eine der größten Abweichungen voneinander stellt die Behandlung der Dateirechte in Unix und DOS dar.
Werfen wir einen Blick darauf, wie Unix Rechte zuweist. Alle Unix-Dateien besitzen Lese-, Schreib- und Ausführungs-Bits für drei Klassen von Usern: Eigentümer, Gruppe und alle. Diese Rechte kann man am äußersten linken Rand sehen, sobald der Befehl
ls
-al
in einem Unix-Verzeichnis ausgegeben wird. Ein Beispiel:-rwxr--r-- 1 tom users 2014 Apr 13 14:11 access.confWindows dagegen hat vier Hauptbits, die es mit jeder Datei verwendet: Read-only, System, Hidden und Archiv. Du kannst diese Bits einsehen, indem du auf die Datei rechts klickst und den Menüpunkt Eigenschaften wählst. Du solltest einen Dialog wie in Figur 5.6 sehen.[1]
[1] Die System Checkbox wird vielleicht bei deiner Datei grau unterlegt sein. Sorge dich deswegen nicht - du sollst es noch sehen können, wann die Box gewählt wird und wann nicht.
Figur 5.6: DOS und Windows, Datei-Eigenschaften
Es folgt die Erklärung jedes dieser Bits:
- Read-only
Der Dateiinhalt kann von einem User gelesen werden, aber man kann nicht darauf schreiben.
- System
Die Datei hat eine bestimmte Aufgabe im Betriebssystem.
- Hidden
Diese Datei wurde für den User als unsichtbar markiert, außer das Betriebssystem ist explizit eingestellt, sie zu zeigen.
- Archiv
Diese Datei wurde verändert, seit das letzte DOS-Backup auf ihm durchgeführt wurde.
Beachte, dass es kein Bit zur Kennzeichnung gibt, wenn eine Datei ausführbar ist. DOS- und Windows NT-Dateisysteme identifizieren ausführbare Dateien über ihre Erweiterungen .EXE, .COM, .CMD oder .BAT.
Folglich ergibt sich keine Verwendung für eines der drei verarbeitbaren Unix-Bits, die auf einer Datei in einer Samba Disk-Share vorhanden sind. Nun, DOS-Dateien haben ihre eigenen Attribute, die aufbewahrt werden müssen, wenn sie in einer Unix-Umgebung gespeichert werden: Archiv-, System- und Hidden-Bit. Samba kann diese Bits bewahren durch Wiederverwendung der ausführbaren Rechte-Bits der Datei auf Seiten von Unix - wenn es angewiesen wird, das zu tun. Nun, das Mappen dieser Bits hat einen unvorteilhaften Nebeneffekt: wenn ein Windows-User eine Datei in einer Samba-Share speichert und du schaust sie in Unix mit dem
ls
-al
-Befehl an, würden einige der ausführbaren Bits nicht verstehen, wozu du sie erwartet hattest.Drei Samba-Optionen entscheiden, ob die Bits gemappt werden:
map
archive
,map
system
, undmap
hidden
. Diese Optionen mappen die Archiv-, System- und Hidden-Attribute auf Eigentümer-, Gruppen- beziehungsweise Allgemein-Bits der Datei. Du kannst diese Optionen der[data]
-Share hinzufügen, indem du jede ihrer Werte einstellst, wie folgt:[data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes map archive = yes map system = yes map hidden = yesDanach versuch, unter Unix eine Datei in der Share zu erzeugen - etwa wie
hello.java
- und ändere die Rechte der Datei auf 755. Mit diesen eingestellten Samba-Optionen solltest du die Rechte auf der Windows-Seite überprüfen und sehen können, dass jede der drei Werte in der Eigenschaften-Dialogbox angehakt wurde. Was ist mit dem Read-only-Attribut? Als Vorgabe setzt Samba 2.0 das immer, wenn eine Datei das Eigentümer Schreibrecht-Bit nicht gesetzt hat. Mit anderen Worten, du kannst dieses Bit durch Ändern der Dateirechte auf 555 setzen.Wir machen dich darauf aufmerksam, das der Vorgabewert der Option
map
archive
aufyes
steht, während die anderen zwei Optionen den Vorgabewertno
besitzen. Das geschieht deswegen, weil viele Programme nicht ordentlich arbeiten, wenn das Archiv-Bit für DOS- und Windowsdateien nicht korrekt gespeichert wird. System- und Hidden-Attribut dagegen sind nicht kritisch für die Arbeit eines Programms und sind dem Ermessen des Administrators anheimgestellt.Figur 5.7 fasst die Bits für Unixrechte zusammen und illustriert, wie Samba diese Bits auf DOS-Attribute mappt. Beachte, dass das Gruppen-Schreib/Lese-Bit und das Allgemein-Schreib/Lese-Bit nicht direkt in ein DOS-Attribut übertragen werden können, aber sie behalten noch ihre alten Unix-Definitionen auf dem Sambaserver.
Figur 5.7: Wie Samba und Unix die Dateirechte betrachten
5.3.1 Masken für die Erzeugung von Dateien
Samba hat einige Optionen als Hilfe für Masken zur Dateierzeugung. Masken zur Dateierzeugung (oder umasks) helfen, die Rechte festzulegen, die eine Datei oder ein Verzeichnis im Moment seiner Erzeugung bekommt. In Unix bedeutet das, dass du kontrollieren kannst, welche Rechte eine Datei oder ein Verzeichnis nicht besitzt, wenn es erzeugt wird. Für Dateien, auf die von Windows aus zugegriffen wird, bedeutet das: du kannst das Read-only-, Archiv-, System- und Hidden-Attribut einer Datei auch ausschalten.
Die Option
create
mask
z.B. zwingt dazu, die Rechte einer von einem Windows-Client erzeugten Datei auf höchstens 744 zu setzen:[data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes create mask = 744während die hier gezeigte Option
directory
mask
die Einstellung der Rechte für ein neu erzeugtes Verzeichnis auf höchstens 755 zulässt:[data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes directory mask = 755Alternativ dazu kannst du auch verschiedene Bits mit den Optionen
force
create
mode
undforce
directory
mode
erzwingen. Diese Optionen bilden ein logisches ODER gegenüber den Datei- und Verzeichnis-Erzeugungsmasken. Damit wird sichergestellt, dass solcherart festgelegte Bits immer gesetzt werden. Du würdest typischerweise diese Optionen global setzen, um sicherzustellen, dass Gruppen- und Allgemein-Schreib/Lese-Rechte passend für neue Dateien oder Verzeichnisse in jeder Share gesetzt wurden.In derselben Weise, wenn du explizit die Unix-Besitzer und -Gruppen-Attribute einer auf der Windows-Seite erzeugten Datei setzen willst, kannst du die Optionen
force
user
undforce
group
verwenden. Ein Beispiel:[data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes create mask = 744 directory mask = 755 force user = joe force group = accountingDiese Optionen ordnen eigentlich einen statischen Unix-User und eine Gruppe jeder Verbindung zu, die zu einer Share hergestellt wird. Nun, das geschieht after der Authentifizierung des Clients; es erlaubt keinen freien Zugriff auf eine Share. Diese Optionen werden häufig benutzt für ihre Nebeneffekte bei der Zuweisung eines bestimmten Users und einer Gruppe zu jeder neuen Datei oder jedem neuen Verzeichnis, das in einer Share erzeugt wird. Benütze diese Optionen mit Besonnenheit.
Eine der Fähigkeiten von Unix schließlich, die DOS fehlt, ist das Vermögen, eine read-only Datei aus einem beschreibbaren Verzeichnis zu löschen. Wenn in Unix ein Verzeichnis beschreibbar ist, kann eine read-only Datei in diesem Verzeichnis dennoch entfernt werden. Das könnte dir erlauben, Dateien in jedem deiner Verzeichnisse zu löschen, selbst wenn die Datei von jemand anderem hinterlassen wurde.
DOS-Dateisysteme sind nicht für mehrere User eingerichtet, und daher entschieden ihre Entwickler, dass read-only "geschützt gegen zufällige Änderung, inbegriffen Löschen" bedeutet, eher als "geschützt gegen irgendwelche andere User auf einer Single-User-Maschine." Daher verboten die Entwickler von DOS das Entfernen einer read-only Datei. Sogar heute noch zeigen Windows-Dateisysteme dasselbe Verhalten.
Normalerweise ist das harmlos. Windowsprogramme versuchen gar nicht, read-only Dateien zu löschen, weil sie wissen, dass es eine schlechte Idee ist. Nun, eine Anzahl von Quellcode-Kontrollprogrammen - die zuerst für Unix geschrieben wurden - laufen unter Windows und fordern die Fähigkeit, read-only Dateien zu löschen. Samba erlaubt dieses Verhalten mit der Option
delete
readonly
. Um diese Funktion zu ermöglichen, setzt du die Option aufyes
:[data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes create mask = 744 directory mask = 755 force user = joe force group = accounting delete readonly = yes5.3.2 Optionen der Datei- und Verzeichnisrechte
Die Optionen für Datei- und Verzeichnisrechte werden in Tabelle 5.5 zusammengefasst; jede Option wird dann im Detail beschrieben.
Tabelle 5.5: Optionen der Datei- und Verzeichnisrechte Option
Parameter
Funktion
Vorgabe
Bereich
map archive
boolean
Schützt das DOS Archiv-Attribut im User-Arbeits-Bit (0100).
yes
Share
map system
boolean
Schützt das DOS System-Attribut im Gruppen-Arbeits-Bit (0010).
no
Share
map hidden
boolean
Schützt das DOS Hidden-Attribut im Allgemein-Arbeits-Bit (0001).
no
Share
create mask (create mode)
numerisch
Setzt die maximalen Rechte für von Samba erzeugte Dateien.
0744
Share
directory mask (directory mode)
numerisch
Setzt die maximalen Rechte für von Samba erzeugte Verzeichnisse.
0755
Share
force create mode
numerisch
Erzwingt die festgelegten Rechte (bitweises ODER) für von Samba erzeugte Dateien.
0000
Share
force directory mode
numerisch
Erzwingt die festgelegten Rechte (bitweises ODER) für von Samba erzeugte Verzeichnisse.
0000
Share
force group (group)
string (Gruppenname)
Setzt die effektive Gruppe für einen auf diese Share zugreifenden User.
Nichts
Share
force user
string (Username)
Setzt den effektiven Usernamen für einen auf diese Share zugreifenden User.
Nichts
Share
delete readonly
boolean
Erlaubt einem User das Löschen einer read-only Datei aus einem beschreibbaren Verzeichnis.
no
Share
5.3.2.1 create mask
Das Argument für diese Option ist eine Oktalzahl, die erkennen lässt, welche Berechtigungs-Flags von einem User beim Erzeugen einer Datei in einer Share gesetzt werden könnten. Die Vorgabe ist 0755, was bedeutet: der Unix-Eigentümer kann höchstens lesen, schreiben und auf Wunsch seine oder ihre eigenen Dateien ausführen, während Mitglieder der Gruppe des Users und andere sie nur lesen und ausführen können. Wenn du sie auf nicht ausführbare Dateien ändern musst, empfehlen wir 0644 oder
rw-r--r--
. Merk dir, dass die Execute-Bits vom Server verwendet werden könnten, sichere DOS Dateiattribute zu mappen, wie vorher beschrieben. Wenn du die create mask veränderst, müssen diese Bits auch Teil der erzeugten Maske sein.5.3.2.2 directory mask
Das Argument für diese Option ist eine Oktalzahl, die erkennen lässt, welche Berechtigungs-Flags von einem User beim Erzeugen eines Verzeichnisses in einer Share gesetzt werden könnten. Die Vorgabe ist 0755, was jedem erlaubt, auf der Unix-Seite die Verzeichnisse höchstens zu lesen und zu durchstreifen, aber nur dir erlaubt, sie zu ändern. Wir empfehlen die Maske 0750, die den Zugriff von allgemeinen Usern wegnimmt.
5.3.2.3 force create mode
Diese Option setzt die Berechtigungsbits, die Samba zu setzen erzwingt, wenn eine Änderung der Dateirechte gemacht wurde. Es wird oft verwendet, um Gruppenrechte zu erzwingen, wie vorher besprochen. Es kann auch benützt werden, um einige der DOS-Attribute voreinzustellen, die wir erwähnten: Archiv (0100), System (0010) oder Hidden (0001). Diese Option tritt immer nach den Optionen
map
archive
,map
system
,map
hidden
undcreate
mask
in Kraft.Viele Windows-Applikationen benennen ihre Daten-Dateien in datafile.bak um und erzeugen neue, auf diese Weise verändern sie ihren Besitz und die Berechtigung, sodass Mitglieder derselben Unix-Gruppe sie nicht editieren können. Die Einstellung
force create mode = 0660
wird die neue Datei für die Gruppenmitglieder editierbar halten.5.3.2.4 force directory mode
Diese Option setzt die Berechtigungsbits, die Samba zu setzen erzwingt, wenn eine Änderung der Verzeichnisrechte gemacht oder ein Verzeichnis erzeugt wurde. Es wird oft verwendet, um Gruppenrechte zu erzwingen, wie vorher besprochen. Diese Option hat die Voreinstellung 0000 und kann geradeso verwendet werden wie
force
create
mode
, um Gruppen- oder andere Rechte wenn nötig zu ergänzen. Diese Option tritt immer nach den Optionenmap
archive
,map
system
,map
hidden
unddirectory
mask
in Kraft.5.3.2.5 force group
Diese Option, manchmal
group
genannt, weist eine statische Gruppen-ID zu, die auf allen Verbindungen zu einem Dienst verwendet wird, nachdem der Client sich erfolgreich ausgewiesen hat. Das ordnet eine besondere Gruppe zu jeder neuen Datei oder jedem neuen Verzeichnis zu, die (das) von einem SMB-Client erzeugt wurde.5.3.2.6 force user
Die Option
force
user
weist eine statische User-ID zu, die auf allen Verbindungen zu einem Dienst verwendet wird, nachdem der Client sich erfolgreich ausgewiesen hat. Das ordnet einen besonderen User zu jeder neuen Datei oder jedem neuen Verzeichnis zu, die (das) von einem SMB-Client erzeugt wurde.5.3.2.7 delete readonly
Diese Option erlaubt einem User, ein Verzeichnis zu löschen, das eine read-only Datei enthält. Als Vorgabe werden DOS und Windows eine solche Operation nicht gestatten. Du willst vielleicht diese Option ausgeschaltet lassen, außer wenn ein Programm diese Fähigkeit braucht, viele Windows-User würden entsetzt sein, wenn sie entdecken, dass sie zufällig eine Datei löschten, die sie read-only gesetzt hatten. Tatsächlich fragt sogar der Unix-Befehl
rm
die User, ob sie wirklich den Schutz aufheben und read-only Dateien löschen wollen. Es ist eine gute Idee, Samba zuletzt als vorsichtigen Aufpasser zu haben.5.3.2.8 map archive
Das DOS Archiv-Bit wird gebraucht, um eine Datei zu kennzeichnen, die verändert wurde, seit sie zuletzt archiviert wurde (z.B. ein Backup mit dem DOS Archiv-Programm.) Die Einstellung der Samba-Option
map
archive
=
yes
verursacht, dass das DOS Archiv-Flag auf das Unix-Bit "Ausführen durch den User" (0100) gemappt wird. Am besten lässt du diese Option eingeschaltet, wenn deine Windows-User ihre eigenen Backups machen oder Programme benützen, die das Archiv-Bit erfordern. Unix fehlt der Begriff eines Archiv-Bits völlig. Backup-Programme nehmen typischerweise eine Datei, die auflistet, bei welchen Dateien an welchem Datum ein Backup gemacht wurde, so erfüllt der Vergleich der Datei-Modifikationsdaten denselben Zweck.Die Einstellung dieser Option auf
yes
verursacht hin und wieder eine Überraschung auf Unix, wenn ein User bemerkt, dass eine Datendatei als ausführbar markiert ist, aber kaum Schaden anrichtet. Versucht ein User sie auszuführen, bekommt er oder sie normalerweise eine Fehlermeldung, wenn die Shell die ersten wenigen Zeilen als Kommandos auszuführen versucht. Das Umgekehrte ist ebenfalls möglich; ein exekutierbares Unix-Programm schaut aus, wie wenn es kürzlich auf Windows kein Backup gehabt hätte. Aber das ist selten und gewöhnlich harmlos.5.3.2.9 map system
Das DOS System-Attribut wird benützt, um Dateien als für das Betriebssystem nötig zu bezeichnen. Sie dürfen nicht gelöscht, umbenannt oder ohne besondere Mühe verschoben werden. Setz diese Option nur, wenn du Windows-Systemdateien auf dem Unix-Fileserver speichern musst. Ausführbare Unix-Programme werden als nicht-verschiebbare besondere Windows-Dateien erscheinen, wenn sie von Windows-Clients betrachtet werden. Das mag sich als ein wenig ungünstig erweisen, wenn du eine verschieben oder entfernen willst. In den meisten Fällen ist es aber ziemlich harmlos.
5.3.2.10 map hidden
DOS verwendet das Hidden-Attribut, um anzuzeigen, dass eine Datei gewöhnlich nicht in den Verzeichniseinträgen gesehen werden darf. Unix hat keine solche Anlage, es ist die Sache von individuellen Programmen (vor allem der Shell) zu entscheiden, was zu zeigen und was nicht zu zeigen ist. Normalerweise wirst du keine DOS-Dateien haben, die versteckt sein müssen, also ist es am besten, diese Option ausgeschaltet zu lassen.
Die Einstellung dieser Option auf
yes
bewirkt beim Server das Mappen des Hidden-Flag auf das Bit "Ausführbar für alle" (0001). Dieses Feature kann einen ziemlich überraschenden Effekt erzeugen. Jedes Unix-Programm, das von allen exekutierbar ist, scheint zu verschwinden, wenn du es von einem Windows-Client aus suchst. Wenn diese Option nicht gesetzt ist und ein Windows-User versucht, eine auf einer Samba-Share versteckte Datei zu markieren, wird es nicht funktionieren - Samba hat keinen Platz, um das Hidden-Attribut zu speichern!
© 1999, O'Reilly & Associates, Inc.