Re: Deviceproblem Umass 2.Versuch

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 24 Feb 2006 13:43:42 +0100 (CET)

Dieter Deinert <dd(at)radio-do.ath.cx> wrote:
> die erste Anfrage war wohl etwas ungenau. Ich bin fest davon
> ausgegangen ICH habe Mist in das Script gebracht.

Das würde ich jetzt auch nicht unbedingt ausschließen.

> devfs.conf setzt
> own /dev/da* root:mount
> perm /dev/da* 0666

Erstens: devfs.conf wird nur beim Booten gelesen. Bei
späteren, dynamischen Änderungen (z.B. bei USB-Geräten)
ist es irrelevant. Dafür solltest Du devfs.rules oder
usbd.conf verwenden.

Zweitens: 0666 ist äußerst gefährlich. Damit könnte
jeder beliebige Benutzer beliebigen Schaden auf den
Devices anrichten. Die Einschränkung auf die Gruppe
ist wirkungslos. Du solltest das mindestens auf 0660
reduzieren.

> Es koennen alle USER in der Group mount "/dev/da*" Geraete als User mounten

Nö. Bei 0666 können es alle User. Unabhängig von der
Gruppe. Du willst besser 0660.

> in /../local/etc/devd(xxxxxx.conf ist ein Eintrag

Äh, wo, bitte? Meinst Du vielleicht /etc/devd.conf?

> Ich stecke einen USB-Stick ein:
>
> camcontrol devlist -v sagt
>
> scbus0 on umass-sim0 bus 0:
> <SanDisk Cruzer Mini 0.2> at scbus0 target 0 lun 0 (da0,pass0)
> scbus3 on sbp0 bus 0:
>
> (Macht keine Aussage ueber den Slice, nur ueber den /da(x)
>
> ll /dev/da* sagt
> crw-rw-rw- 1 root mount 0, 147 Feb 22 17:52 /dev/da0
> crw-rw-rw- 1 root mount 0, 148 Feb 22 17:52 /dev/da0s1
>
> Das sagt schon mehr. Aber ich bin auf guten Rat hin, ja Misstrauisch.
>
> fsck_msdosfs /dev/da0s1

Das ist höchst gefährlich. Wer sagt Dir denn, daß da ein
FAT-Filesystem drauf ist? Da kann ja auch sonstwas drauf
sein, und fsck_msdosfs macht das dann möglicherweise kaputt.
(Es macht zwar ein paar simple Überprüfungen, aber darauf
würde ich mich nicht verlassen.)

Daher habe ich doch schon mehrfach erwähnt, daß Du fdisk(8)
verwenden sollst, um zu gucken, ob das tatsächlich eine
FAT-Slice ist.

> fdisk -s /dev/da0
> /dev/da0: 977 cyl 64 hd 32 sec
> Part Start Size Type Flags
> 1: 245 1999627 0x06 0x00

Aha, na also.
 
> Das sagt was, kann man interpretieren

Genau, das sagt nämlich, daß der Datenträger genau eine
Slice hat (da0s1), und daß dies eine FAT-Slice ist.

> alles sauber. Hab noch einen 2. Slice

Nö, hast Du nicht.

> fdisk -s /dev/da0s1

Das Kommando ergibt keinen Sinn. Kann man auch gut an
der total unsinnigen Ausgabe erkennen:

> /dev/da0s1: 976 cyl 64 hd 32 sec
> Part Start Size Type Flags
> 1: 1684955424 1701998624 0x6c 0x0a
> 2: 1998616933 544105832 0x6e 0x73
> 3: 538988361 538976288 0x79 0x72
> 4: 1394614304 21337 0x53 0x53
>
> Auch eine Aussage, auch sauber. 2 Partitionen auf dem Stick.

Um Himmels Willen, wie kommst Du auf die Idee?!?

> Ich kann jetzt
> nur vermuten was wo ist. Werde wohl pruefen muessen.

Nix da, die Ausgabe von »fdisk /dev/da0« war vollkommen
eindeutig.

> Man nehme fsck
>
> fsck_msdosfs /dev/da0

Komplett überflüssig.

> ** /dev/da0 (NO WRITE)
> Invalid sector size: 20487
>
> Das wird wohl nicht der richtige Slice sein :-))

Was Du nicht sagst.

> die Kontrolle
> ll /dev/da*
> crw-rw-rw- 1 root mount 0, 142 Feb 22 18:23 /dev/da0
> crw-r----- 1 root operator 0, 143 Feb 22 18:23 /dev/da0s1
>
> Oh boese Falle . Rechte & Group fuer /da0s1 sind geaendert

Ja, vermutlich wurde der Device-Node bei Deinem obigen
fehlerhaften fdisk neu gescannt. Beim Starten des
fsck_msdos war der Mode jedenfalls bereits 0640, wie
man an der Ausgabe erkennen kann (»NO WRITE«).

> noch zum Abschluss
>
> fsck_msdosfs /dev/da0s1

Überflüssig.

> So. Jetzt mein Problem.
>
> Ich weiss jetzt das ich da0 nicht anfassen darf. Bei jedem
> Zugriff darauf fliegen Rechte&Group aus dem Fenster.

Dann machst Du was falsch. Vermutlich liegt es an der
konfusen Verwendung von devfs.conf, devd.conf und dem
fehlerhaften fdisk auf das falsche Device.

> (Spitze Bemerkung:Bis heute habe ich BSD anders erfahren

Ebenso spitze Bemerkung: Vielleicht hast Du bis dahin auch
alles richtig gemacht. ;-) FreeBSD verhindert in vielen
Fällen nicht, daß man sich in den Fuß schießen kann. Wenn
Du ein Raw-Device world-writable machst, gibt es zahlreiche
Möglichkeiten, sich in den Fuß zu schießen.

> Ich MUSS aber prüfen, die Device anfassen weil.ich:
>
> - den Filesystemtyp nicht kenne.
> - nicht weiss welcher Slice richtig ist.
> - hier manchmal User am Rechner sind die nicht sudo duerfen
> koennen und DOCH als User mouten/umounten sollen.
> - uvam.
>
> Ergo: Deswegen muss es ein Script geben, das auch Fehler abfaengt!

Klar, kann man schreiben.

Ich kann Dein Problem auf meinem RELENG_6-Rechner bei
korrekter Abfolge der Kommandos nicht reproduzieren:

$ sysctl vfs.usermount
vfs.usermount: 1

$ id -p
uid olli
groups olli wheel operator umass

$ ls -l /dev/da*
crw-r----- 1 root operator 0, 116 Feb 24 09:19 /dev/da0
crw-rw---- 1 root umass 0, 117 Feb 24 09:19 /dev/da0s1

$ fdisk da0 | grep -B1 sysid
The data for partition 1 is:
sysid 4 (0x04),(Primary DOS with 16 bit FAT (< 32MB))

$ mount -t msdos /dev/da0s1 /home/olli/umass

$ df -k /home/olli/umass
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/da0s1 63718 21332 42386 33% /home/olli/umass

$ umount /home/olli/umass

$ ls -l /dev/da*
crw-r----- 1 root operator 0, 116 Feb 24 09:19 /dev/da0
crw-rw---- 1 root umass 0, 117 Feb 24 09:19 /dev/da0s1

$

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
We're sysadmins.  To us, data is a protocol-overhead.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 24 Feb 2006 - 13:44:59 CET

search this site