# ntfs-3g / HAL / Usermount

## ScytheMan

Moin,

ich ärgere mich mal wieder mit ntfs-3g rum. 

Und zwar möchte ich, dass ntfs-3g als User mountet bzw. ein Mounten über HAL möglich ist.

Folgendes findet sich hier vor:

```

emerge -pv ntfs3g

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R   ] sys-fs/ntfs3g-2009.11.14  USE="acl hal suid -debug -external-fuse" 0 kB

```

-external-fuse, da sonst kein usermount möglich ist.

```
cat 10-ntfs3g.fdi                   

<?xml version="1.0" encoding="UTF-8"?>                                      

<deviceinfo version="0.2">                                                  

  <device>                                                                  

        <match key="volume.fstype" string="ntfs">                           

        <append key="volume.fstype.alternative" type="copy_property">volume.fstype</append>

        <merge key="volume.mount.ntfs.valid_options" type="copy_property">volume.mount.valid_options</merge>

        <merge key="volume.unmount.ntfs.valid_options" type="copy_property">volume.unmount.valid_options</merge>

        <merge key="volume.fstype" type="string">ntfs-3g</merge>                                                

        <merge key="volume.mount.valid_options" type="strlist">ro</merge>                                       

        <append key="volume.mount.valid_options" type="strlist">atime</append>                                  

        <append key="volume.mount.valid_options" type="strlist">noatime</append>                                

        <append key="volume.mount.valid_options" type="strlist">relatime</append>                               

        <append key="volume.mount.valid_options" type="strlist">fake_rw</append>                                

        <append key="volume.mount.valid_options" type="strlist">no_def_opts</append>                            

        <append key="volume.mount.valid_options" type="strlist">default_permissions</append>                    

        <append key="volume.mount.valid_options" type="strlist">umask=</append>                                 

        <append key="volume.mount.valid_options" type="strlist">fmask=</append>                                 

        <append key="volume.mount.valid_options" type="strlist">dmask=</append>                                 

        <append key="volume.mount.valid_options" type="strlist">uid=</append>                                   

        <append key="volume.mount.valid_options" type="strlist">gid=</append>                                   

        <append key="volume.mount.valid_options" type="strlist">show_sys_files</append>                         

        <append key="volume.mount.valid_options" type="strlist">silent</append>

        <append key="volume.mount.valid_options" type="strlist">force</append>

        <append key="volume.mount.valid_options" type="strlist">remove_hiberfile</append>

        <append key="volume.mount.valid_options" type="strlist">locale=</append>

        <append key="volume.mount.valid_options" type="strlist">streams_interface=</append>

        <append key="volume.mount.valid_options" type="strlist">debug</append>

        <append key="volume.mount.valid_options" type="strlist">no_detatch</append>

        <append key="volume.mount.valid_options" type="strlist">sync</append>

        <append key="volume.mount.valid_options" type="strlist">dirsync</append>

        <append key="volume.mount.valid_options" type="strlist">nodiratime</append>

        <append key="volume.mount.valid_options" type="strlist">noexec</append>

        <append key="volume.mount.valid_options" type="strlist">quiet</append>

        <append key="volume.mount.valid_options" type="strlist">remount</append>

        <append key="volume.mount.valid_options" type="strlist">exec</append>

        <append key="volume.mount.valid_options" type="strlist">recover</append>

        <append key="volume.mount.valid_options" type="strlist">norecover</append>

        <merge key="volume.unmount.valid_options" type="strlist">lazy</merge>

        <merge key="volume.policy.mount_filesystem" type="string">ntfs-3g</merge>

        </match>

  </device>

</deviceinfo>
```

FUSE ist im Kernel aktiviert

beim mounten als User kommt folgendes:

```

mount /dev/sdb1

Error opening '/dev/sdb1': Keine Berechtigung

Failed to mount '/dev/sdb1': Keine Berechtigung

Please check '/dev/sdb1' and the ntfs-3g binary permissions,

and the mounting user ID. More explanation is provided at

http://ntfs-3g.org/support.html#unprivileged

```

der user ist in folgenden gruppen:

```
groups

wheel floppy uucp audio cdrom tape video usb users portage scytheman plugdev

```

```
ls -la /dev/sdb1

brw-rw---- 1 root disk 8, 17 25. Nov 18:57 /dev/sdb1
```

```

ls -la /media/windows

drwxr-xrwx 2 root root 4096 29. Apr 2009  .

```

fstab:

```
/dev/sdb1               /media/windows  ntfs-3g         noauto,users,defaults,rw,force,gid=users,uid=root,umask=007,nls=utf8            0 0

```

mounten als root geht jedoch.

Optimum: HAL erkennt Festplatte, zeigt sie im Device Panell von KDE4 an und mounted Sie ohne Probleme. 

Auch Ok: Festplatte lässt sich als User ohne Probleme per Kommandozeile mounten

Irgendjemand eine Idee?

Vielen Dank euch im Voraus!

Gruß ScytheMan

edit: Mounten funktioniert, wenn ich in der Gruppe Disk bin.

Möchte ich allerdings nicht sein, weil man per disk ja Zugriff auf alle Daten hat.

Kann ich die Gruppenzugehörigkeit gefahrlos ändern?

Jedoch mag HAL die Platten noch nicht erkennen bzw. im KDE Device Manager anzeigen.

----------

## toralf

Hhm, hilft vielleicht bei den Mount-Optionen ein "suid" ?

----------

## ScytheMan

Ist schon per defaults gesetzt,aber werds mal umändern

"Unter Linux verbreitet ist die Option defaults, die den Optionen rw,suid,dev,exec,auto,nouser,async entspricht."

http://de.wikipedia.org/wiki/Fstab

 *Quote:*   

> /dev/sdb1               /media/windows  ntfs-3g         noauto,users,suid,rw,force,gid=users,uid=root,umask=007,nls=utf8                0 0
> 
> 

 

habs mal so umgesetzt.

Die Platte wird auch von Hal erkannt und ist per solid mountbar, aber wird trotzdem nicht im Desktop angezeigt wie ich es möchte :/

----------

## Yamakuzure

 *ScytheMan wrote:*   

> 
> 
> ```
> groups wheel floppy uucp audio cdrom tape video usb users portage scytheman plugdev
> ```
> ...

 Mir fallen spontan zwei Möglichkeiten ein:Der User muss in die Gruppe "disk". Zumindest bei externen Festplatten war das bei meinem Rechner erforderlich.Wenn man versucht vollständig zu mounten kanns schief gehen. Aus einem mir völlig schleierhaften Grund gehts aber, wenn man sich auf die fstab verlässt.

Beispiel: USB-Stick mit 3 Partitionen, die ersten beiden sind ntfs.

```
$ grep usb /etc/fstab

/dev/sdb1  /mnt/usbdrive ntfs-3g  noauto,user             0 0

/dev/sdb2  /mnt/usbextra ntfs-3g  noauto,user             0 0

$

$ mount /dev/sdb1 -t ntfs-3g /mnt/usbdrive

mount: Nur „root“ kann dies tun

$

$ mount /dev/sdb1

$

$ ls /mnt/usbdrive

$RECYCLE.BIN  System Volume Information  package.keywords

$

$ mount | grep usb

usbfs on /proc/bus/usb type usbfs (rw,noexec,nosuid,devmode=0664,devgid=85)

/dev/sdb1 on /mnt/usbdrive type fuseblk (rw,noexec,nosuid,nodev,allow_other,blksize=4096,user=sed)
```

Ich habe keine Ahnung, warum das so ist, aber es funktioniert.

----------

## firefly

Das ausführen von mount mit vollständiger angabe des Devices und des Zielpfades ist nur root erlaubt.

Wenn ein normaler user ein gerät mounten darf, muss es in der fstab drinn stehen, mit der user/users option.

Dadurch wird verhindert, dass ein normaler user einfach Verzeichnisse (z.b. / oder /bin)einfach mit einem anderen gerät "überschreibt". Und dadurch das System kompromittieren könnte.

----------

## CaptainHero

 *Quote:*   

> Auch Ok: Festplatte lässt sich als User ohne Probleme per Kommandozeile mounten 

 

Also ich benutze für meine NTFS Platte ein alias + sudo ohne fstab oder hal gefrimmel, vielleicht passt das ja ungefähr in Deine "Auch Ok" Vorstellung.

----------

## mastacloak

Ich nutze dafür sys-apps/pmount und habe weder die Partition in der fstab stehen noch bin ich in der Gruppe "disk".

```
The mount will succeed if all of the following conditions are met:

       · device is a block device in /dev/

       · device  is  not  in /etc/fstab (if it is, pmount executes  mount device as

         the calling user  to  handle  this  transparently).  See  below  for  more

         details.

       · device is not already mounted according to /etc/mtab and /proc/mounts

       · if  the  mount point already exists, there is no device already mounted at

         it and the directory is empty

       · device   is   removable   (USB,    FireWire,    or    MMC    device,    or

         /sys/block/drive/removable is 1) or whitelisted in /etc/pmount.allow.

       · device is not locked

```

----------

## ScytheMan

Danke erstmal für eure Hilfe  :Smile: 

@mastacloak

mit welchem Treiber? ntfs-3g oder kernel-ntfs?

also die Ok Lösung funktioniert, mit einem kleinem Sicherheitsrisiko durch Group "disk", aber das ist nicht so wild. Sudo macht die Sache imho nicht besser.

Was mir jetzt noch an Komfort fehlt ist eben die HAL Lösung, erkannt werden sie nur KDE mag nicht mitspielen.

Komischerweise funktionierte die Erkennung unter KDE 3.5 noch wunderbar. Schätze mal das liegt wohl an einer KDE einstellung. Werde hier wohl mal weiter suchen

----------

## Josef.95

Guten Abend

Nein, den User mit in der Gruppe "disk" aufnehmen halte ich für keine gute Idee!

Bei mir funktioniert es problemlos mit hal , ohne fstab Eintrag, die Partition wird dann unter /media/LABEL mounted

hier zb "EIG-Dateien" 

```
$ mount | grep media

/dev/sdb3 on /media/EIG-Dateien type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096)
```

Wenn du möchtest das alle, also auch die festen Devices zb im Dolphin angezeigt werden, dann versuche es mit dieser hal-Policy

cat /etc/hal/fdi/policy/99-storage-policy-fixed-drives.fdi 

```
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">

<device>

  <match key="@block.storage_device:storage.hotpluggable" bool="false">

    <match key="@block.storage_device:storage.removable" bool="false">

      <merge key="volume.ignore" type="bool">false</merge>

    </match>

  </match>

</device>

</deviceinfo>
```

(Nicht gewünschte Laufwerke lassen sich auch wieder verstecken  :Wink:  )

Sie lässt sich dann zb aus Dolphin (als User!) mounten.

/edit: Meine "10-ntfs3g.fdi" sollte die gleiche sein wie du schon im ersten Beitrag gepostet hast.

.......................................................................................................................................................................

Treiber Info 

```
$ eix -I ntfs3g

[I] sys-fs/ntfs3g

     Available versions:  2009.3.8 (~)2009.4.4 (~)2009.4.4-r1 (~)2009.11.14 {acl debug +external-fuse hal suid}

     Installed versions:  2009.11.14(18:06:50 19.11.2009)(acl external-fuse hal suid -debug)

     Homepage:            http://www.ntfs-3g.org

     Description:         Open source read-write NTFS driver that runs under FUSE
```

Ob die USE="suid" wirklich nötig ist kann ich zZt nicht sicher sagen...

```
$ lsmod | grep fuse

fuse                   58232  2
```

......................................................................................................................................

Das sollte dann dein  *Quote:*   

> Optimum: HAL erkennt Festplatte, zeigt sie im Device Panell von KDE4 an und mounted Sie ohne Probleme.

 entsprechen...  :Wink: 

MfG

----------

## mastacloak

 *ScytheMan wrote:*   

> @mastacloak
> 
> mit welchem Treiber? ntfs-3g oder kernel-ntfs?
> 
> 

 

ntfs-3g.

Bei mir: Festplatte anstöpseln. KDE4 erkennt die Partitionen auf der Platte wunderbar. Nur die dmcrypt/luks-Partition muss ich immer auf der Kommandozeile mounten, wobei das auch schon mal direkt in KDE4 funktioniert hat.

```

$ pmount /dev/wdntfs

$ mount

/dev/wdntfs on /media/wdntfs type fuseblk (rw,noexec,nosuid,nodev,allow_other,default_permissions,blksize=4096)

$ pumount /dev/wdntfs

```

wdntfs ist einfach bloß ein alias auf sda1

```
$ eix ntfs3g

[I] sys-fs/ntfs3g

     Available versions:  2009.3.8 ~2009.4.4 ~2009.4.4-r1 ~2009.11.14 {acl debug external-fuse hal suid}

     Installed versions:  2009.3.8(22:27:43 04.08.2009)(hal -debug -suid)

$ eix -e pmount

[I] sys-apps/pmount

     Available versions:  0.9.16 ~0.9.17 ~0.9.18!t 0.9.19 ~0.9.20 {crypt hal}

     Installed versions:  0.9.19(12:47:14 25.09.2009)(crypt hal)

```

Fuse ist fest in den Kernel kompiliert, da ich damit eh immer meine Windows-Partitionen einbinde. An den HAL-Policies habe ich nicht geschraubt.

----------

## ScytheMan

```
eix -I fuse

[I] sys-fs/fuse

     Available versions:  2.7.0 ~2.7.3 2.7.4 ~2.7.4-r1 (~)2.8.1 {kernel_FreeBSD kernel_linux modules}

     Installed versions:  2.8.1(09:58:17 28.11.2009)(kernel_linux -kernel_FreeBSD)

     Homepage:            http://fuse.sourceforge.net

     Description:         An interface for filesystems implemented in userspace.

```

habe jetzt mal fuse (2.7.4 -> 2.8.1; wie sieht das bei euch so aus? habe ntfs-3g in verdacht, dass die aktuellste version vllt. nur mit 2.8.x läuft) geupdated, mich wieder aus disk rausgeschmissen, josef.95s fdi eingebunden, pmount installiert, die festplatten in fstab rausgenommen.

jetzt werd ich mal neustarten und dann schauen wir mal ob es klappt.

----------

## ScytheMan

so wieder ein schritt weiter.

externe festplatten werden von HAL erkannt und in KDE angezeigt, lassen sich auch wunderbar per Mausklick mounten. 

Was jetzt noch fehlt ist der Zugriff auf Interne.

----------

## mastacloak

Funktioniert es mit den internen Partitionen denn mit pmount? Die entsprechenden Partitionen musst Du vorher in /etc/pmount.allow eintragen, da die interne Platte nicht "hotpluggable" ist.

Ansonsten hatte ich Josef.95s fdi so verstanden, dass auch interne Partitionen angezeigt werden sollten. Werde das bei Gelegenheit mal hier probieren.

Gruß

----------

## Josef.95

 *Quote:*   

> Ansonsten hatte ich Josef.95s fdi so verstanden, dass auch interne Partitionen angezeigt werden sollten.

 Ja genau, sie ist nur dazu da um auch die internen festen Laufwerke anzuzeigen, bzw diese nicht zu verstecken.

Dies ist auch WM unabhängig.

----------

## mastacloak

Funktioniert bei mir mit der fdi. Bekomme meine internen Partitionen in dolphin angezeigt und die werden per Klick eingehängt.

BTW:

```
# eix -e fuse

[I] sys-fs/fuse

     Available versions:  2.7.0 ~2.7.3 2.7.4 ~2.7.4-r1 ~2.8.1 {kernel_FreeBSD kernel_linux modules}

     Installed versions:  2.7.4(22:53:58 20.04.2009)(kernel_linux -kernel_FreeBSD)

```

----------

## ScytheMan

mh funktioniert bei mir nicht, hab in pmount.allow /dev/sdb1 eingetragen und die .fdi hab ich auch drin. 

wie siehts denn mit eurer hal version aus? evtl. wurd damit was gefixed.

----------

## Josef.95

Die hal-Policy sollte einwandfrei funktionieren, überprüfe sie doch bitte noch mal evtl. ist da beim kopieren etwas schiefgegangen.

Ich nutze hier komplett testing, aber daran sollte es eigentlich nicht liegen, die Policy nutze ich schon seit ca einem Jahr, sie funktionierte auch unter hal-0.5.12*

zZt nutze ich hier hal-0.5.13-r2 mit hal-info-20090716

Ich vermute aber das du da irgendwo einen Tipp oder Copy fehler drin hast...

/edit:

du hast doch aber den "hald" neugestartet, oder ein reboot durchgeführt?

/edit:2

Die Policy sollte eigentlich auch bei dir unter

/usr/share/hal/fdi/policy/10osvendor/99-storage-policy-fixed-drives.fdi

```
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">

<device>

  <match key="@block.storage_device:storage.hotpluggable" bool="false">

    <match key="@block.storage_device:storage.removable" bool="false">

      <merge key="volume.ignore" type="bool">true</merge>

    </match>

  </match>

</device>

</deviceinfo>
```

zu finden sein, nur eben noch mit dem Wert >true< in der letzten Zeile, damit werden die fixed-drives standardmäßig versteckt, oder ignoriert.

Diese Policy hatte ich mir einst nach "/etc/hal/fdi/policy/" Kopiert, dort dann aber den genanten Wert auf >false< geändert.

Das sollte auch bei dir funktionieren.

----------

## ScytheMan

mh ich hatte sie unter 10-* abgespeichert statt 99-* sollte aber imho keinen unterschied machen, da das nur der priorität dient, oder? (wenn nicht werd ichs nach einem Haldrestart/Reboot merken)

in /usr/share/... befindet sich aber die .fdi die Josef meinte.

Ich verwende hier noch

[I] sys-apps/hal

     Available versions:  0.5.11-r9 ~0.5.12_rc1-r6 0.5.12_rc1-r7 0.5.12_rc1-r8 ~0.5.13-r2 {X acpi apm consolekit crypt debug dell disk-partition doc kernel_FreeBSD kernel_linux laptop policykit selinux}

     Installed versions:  0.5.12_rc1-r8(11:33:10 03.10.2009)(X acpi apm consolekit crypt kernel_linux policykit -debug -dell -disk-partition -doc -kernel_FreeBSD -laptop -selinux)

     Homepage:            http://www.freedesktop.org/wiki/Software/hal

     Description:         Hardware Abstraction Layer

[I] app-misc/hal-info

     Available versions:  20090414 ~20090716

     Installed versions:  20090414(11:00:40 06.07.2009)

     Homepage:            http://hal.freedesktop.org/

     Description:         The fdi scripts that HAL uses

----------

## mastacloak

Nutze hauptsächlich stable:

```
$ eix -e hal

[I] sys-apps/hal

     Available versions:  0.5.11-r9 ~0.5.12_rc1-r6 ~0.5.12_rc1-r7 0.5.12_rc1-r8 0.5.13-r2 {X acpi apm consolekit crypt debug dell disk-partition doc kernel_FreeBSD kernel_linux laptop policykit selinux}

     Installed versions:  0.5.13-r2(20:43:21 10.11.2009)(X acpi consolekit crypt disk-partition kernel_linux laptop -apm -debug -dell -doc -kernel_FreeBSD -policykit -selinux)

$ eix -e hal-info

[I] app-misc/hal-info

     Available versions:  20090414 20090716

     Installed versions:  20090716(20:43:47 10.11.2009)

```

Achso, weil ich gerade sehe, dass bei Dir andere Versionen keyworded sind: Meine System ist x86.

----------

## ScytheMan

ja ich nutze amd64

würde auch hal updaten, aber das ist mit einem udev etc. update verbunden. 

hier scheint aber etwas im argen zu sein:

https://forums.gentoo.org/viewtopic-t-804526.html

daher, werd ich das problem erstmal vertagen und mich später wieder melden, wenn ich die neueste version von hal einsetzen kann.

danke schonmal für eure hilfe  :Smile: 

----------

