BSD-Wiki

Mitschrift einer FreeBSD-Installation

Benutzer-Werkzeuge

Webseiten-Werkzeuge


laufwerke_mounten_als_benutzer

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

laufwerke_mounten_als_benutzer [2017/10/02 13:40]
laufwerke_mounten_als_benutzer [2017/10/02 13:40] (aktuell)
Zeile 1: Zeile 1:
 +====== 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
 +<​code>​
 +operator:​*:​5:​root
 +</​code>​
 +durch den eigenen Benutzer ergänzt.
 +
 +<​code>​
 +operator:​*:​5:​root,​benutzername
 +</​code>​
 +
 +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:​
 +<​code>​
 +perm    acd0    0660
 +</​code>​
 +
 +Für SCSI-Laufwerke (oder bei Verwendung von atapicam zusätzlich zur obigen Zeile).
 +<​code>​
 +perm    cd0    0660
 +</​code>​
 +
 +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:
 +<​code>​
 +[localrules=5]
 +add path '​da*'​ mode 0660 group operator
 +</​code>​
 +
 +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:
 +<​code>​
 +add path '​da[2-9]*'​ mode 0660 group operator
 +</​code>​
 +
 +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.
 +<​code>​
 +devfs_system_ruleset="​localrules"​
 +</​code>​
 +
 +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:
 +<​code>​
 +vfs.usermount=1
 +</​code>​
 +
 +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.
 +<​code>​
 +cd ~
 +% mkdir mount
 +</​code>​
 +
 +====== USB-Stick mounten ======
 +Nun kann mit folgendem Aufruf ein USB-Stick welcher als **da0** erkannt wurde und mit FAT32 formatiert ist gemountet werden.
 +<​code>​
 +% mount_msdosfs /dev/da0 /​home/​benutzername/​mount
 +</​code>​
 +
 +Wichtig ist, dass die Laufwerke unbedingt ausgeworfen werden müssen bevor sie abgezogen werden!!
 +
 +<​code>​
 +% umount /​home/​benutzername/​mount
 +</​code>​
 +
 +====== 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.
 +<​code>​
 +% mount_cd9660 /dev/acd0 /​home/​benutzername/​mount
 +</​code>​
 +
 +Ausgeworfen wird logischerweise wie folgt:
 +<​code>​
 +% umount /​home/​benutzername/​mount
 +</​code>​
  
laufwerke_mounten_als_benutzer.txt · Zuletzt geändert: 2017/10/02 13:40 (Externe Bearbeitung)

Impressum