Inhaltsverzeichnis

Allgemein

Das mounten von Laufwerken ist ein sicherheitskritisches Thema. Aus diesem Grund ist es unter FreeBSD standardmäßig nicht möglich als normaler Benutzer Laufwerke zu mounten. Dieses Verhalten lässt sich jedoch ändern, was speziell für Privatrechner sinnvoll sein kann.

Im Weiteren wird das System so angepasst, dass ein privilegierter Nutzer erhöhte Rechte erlangt und und somit unter anderem optische Datenträger als auch USB-Sticks mounten darf.

Benutzer privilegieren

Ein Benutzer gehört standardmäßig nur der eigenen Gruppe an. (Die aktuellen Gruppenzugehörigkeiten können im übrigen mit dem Befehl id angezeigt werden).

Ist der Benutzer ebenfalls in der Gruppe wheel Mitglied so hat er bereits erhöhte Rechte und ist z.B. in der Lage mit dem Befehl su root-Rechte zu erlangen. Eine andere Stufe der Rechteebenen stellt die Gruppe operator dar.

Genauere Informationen zu diesem Thema sind unter Benutzer und Gruppen abgelegt.

Benutzer zu operator hinzufügen

Die Datei /etc/group wird editiert und die Zeile

operator:*:5:root

durch den eigenen Benutzer ergänzt.

operator:*:5:root,benutzername

Nach dem nächsten Login sollte der Benutzer nun in der Gruppe operator sein, was ihm z.B. bereits die Rechte beschert den Rechner herunterzufahren.

Devicerechte anpassen

Als nächstes werden die Rechte der Devices angepasst welche der Benutzer mounten dürfen soll. Hierfür werden die beiden Dateien /etc/devfs.conf und /etc/devfs.rules, welche das dynamische Device-Dateisystem devfs steuern, angepasst. Die zweite Datei muss ggf. erst erstellt werden.

Um Laufwerke zu mounten bedarf der Benutzer Lese- und Schreibrechte auf der entsprechenden Devicenode. Die Laufwerks-Devices gehören standardmäßig root:operator. Da der Benutzer bereits der Gruppe operator angehört müssen nun nur noch die Rechte für die Gruppe gesetzt werden.

/etc/devfs.conf

Die Datei /etc/devfs.conf steuert die Devicenodes in /dev welche zur Bootzeit erzeugt werden. Hierunter fallen im Allgemeinen alle Festplatten sowie die optischen Laufwerke.

Um dem Benutzer zu erlauben das optische Laufwerk zu mounten wird die Datei um folgende Zeile erweitert:

Für ATAP-Laufwerke:

perm    acd0    0660

Für SCSI-Laufwerke (oder bei Verwendung von atapicam zusätzlich zur obigen Zeile).

perm    cd0    0660

Beim nächsten Start wird die Devicenode des ersten optischen Laufwerks die richtigen Rechte haben.

/etc/devfs.rules

Die Datei /etc/devfs.rules steuert wie mit dynamisch erzeugten Devicenodes zu verfahren ist. Dynamische Devicenodes werden zur Laufzeit erzeugt, z.B. beim anstecken eines USB-Sticks. Es ist im weiteren zu wissen, dass USB-Sticks als SCSI-Laufwerk erkannt werden und demnach eine Devicenode im Bereich /dev/daX zugewiesen bekommen.

Die Datei anlegen/erweitern

Um dem Benutzer zu erlauben SCSI-Laufwerke zu mounten wird die Datei um folgende Zeilen erweitert:

[localrules=5]
add path 'da*' mode 0660 group operator

Hier wird festgelegt, dass neu erzeugte Devicenodes mit dem Namen da* (also SCSI-Laufwerke) mit den Rechten 0660 und der Gruppenzugehörigkeit operator angelegt werden sollen.

Eine Besonderheit ist zu beachten. Falls echte SCSI-Festplatten verbaut sind welche hiervon ausgenommen werden sollen. Sind z.B zwei Festplatten verbeut die bereits da0 und da1 belegen muss die entsprechende Zeile wie folgt aussehen:

add path 'da[2-9]*' mode 0660 group operator

Alle nun dynamisch erzeugten Devicenodes des Typs daX sollten nun die richtigen Rechte haben.

Das Ruleset aktivieren

Damit die eben angelegte Rule auch befolgt wird muss die Datei /etc/rc.conf noch um folgende Zeile ergänzt werden.

devfs_system_ruleset="localrules"

Nach dem nächsten Start des Systems sind die Änderungen aktiv.

usermount erlauben

Zuletzt muss noch die prinzipielle Erlaubnis zum mounten als Benutzer gesetzt werden. Hierfür wird die sysctl-Variable vfs.usermount auf 1 gesetzt.

Hierzu wird die Datei /etc/sysctl.conf um folgende Zeile ergänzt:

vfs.usermount=1

Nach dem nächsten Start wird die Einstellung übernommen. Im laufenden Betrieb kann die Variable auch durch das Programm sysctl gesetzt werden.

Mountpoint anlegen

Ein Mountpoint in welchen ein Benutzer ein Laufwerk einhängt muss dem Benutzer mit kompletten Rechten gehören. Die Gruppenzugehörigkeit genügt hier nicht. Daher ist auch die Verwendung von /mnt für den Usermount nicht möglich.

Es sollte nun irgendwo im System ein Mountpoint angelegt werden der dem Benutzer gehört. Im hiesigen Beispiel wird ein Ordner mount im Heimatverzeichnis des Benutzers angelegt.

Hierfür wird als Benutzer im Heimatverzeichnis einfach ein Ordner angelegt.

cd ~
% mkdir mount

USB-Stick mounten

Nun kann mit folgendem Aufruf ein USB-Stick welcher als da0 erkannt wurde und mit FAT32 formatiert ist gemountet werden.

% mount_msdosfs /dev/da0 /home/benutzername/mount

Wichtig ist, dass die Laufwerke unbedingt ausgeworfen werden müssen bevor sie abgezogen werden!!

% umount /home/benutzername/mount

optisches Laufwerk mounten

Um das optische Laufwerk zu mounten wird gleich vorgegangen. Da es sich hier nicht um ein FAT32-Dateisystem handelt sondern um ein ISO9660-Dateisystem sieht der Befehl für ein ATAPI-Laufwerk wie folgt aus.

% mount_cd9660 /dev/acd0 /home/benutzername/mount

Ausgeworfen wird logischerweise wie folgt:

% umount /home/benutzername/mount