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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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