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