ubuntuusers.de

HDD-Informationen ohne Rootrechte

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

tillorgias

Anmeldungsdatum:
13. Mai 2010

Beiträge: 26

Hallo ihr,

ich habe eine Frage: Gibt es ein Befehl, mit dem man OHNE root-Rechte Parameter der Festplatte auslesen kann? Optional ginge auch C(++)-Code, wenn es dafür welchen gibt.

Systeme: Ubuntu 8.04 und höher (unterschiedliche Versionen)

Danke im voraus, Tillorgias

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Was sind „Parameter“ einer Festplatte?

Im Allgemeinen gilt jedenfalls, dass alles, was nicht über ein Dateisystem läuft, sondern direkten Zugriff auf die Blöcke der Festplatte verlangt (e.g Partitionstabelle, SMART-Daten, usw.), nicht ohne Root-Rechte funktioniert, da direkter Gerätezugriff fast immer Root vorbehalten ist. Man kann natürlich die Rechte der entsprechenden Gerätedateien anpassen, aber das sollte man eigentlich nicht tun.

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

Warum ist das Bedingung, ohne Rootrechte zugreifen zu müssen? sudo/Konfiguration (sudoers) sollte dir weiterhelfen.

MfG Dalai

tillorgias

(Themenstarter)

Anmeldungsdatum:
13. Mai 2010

Beiträge: 26

Hi,

danke, das ist eine super Idee. Ich weiß nur nicht, wie gerne das gesehen wird. Andererseits, wäre das wohl die beste Lösung.

Gruß, Tillorgias

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Bei der Freigabe mit sudo visudo kannst Du die Befehle so feinkörnig angeben, dass Du damit gar kein Risiko eingehst.

Wenn Du z.B. ausdrücklich nur den Befehl sudo hdparm -tT /dev/sda2 für alle freigibst:

ALL ALL=(root)NOPASSWD:/sbin/hdparm -tT /dev/sda2

dann riskierst Du nichts, weil Du nur genau diesen Befehl (und keinen Buchstaben anders !) freigibst, und damit kann man nichts anrichten.

Mit Bedacht eingesetzt ist das also sicher.

track

YEPHENAS

Anmeldungsdatum:
8. Juni 2009

Beiträge: 352

tillorgias schrieb:

Hallo ihr,

ich habe eine Frage: Gibt es ein Befehl, mit dem man OHNE root-Rechte Parameter der Festplatte auslesen kann?

$ udisks --dump
$ man udisks

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

.. ist eine schöne Sache, aber leider erst seit Lucid vorhanden: http://packages.ubuntu.com/lucid/udisks
Hilft also bei älteren Systemen nicht, weil es über policykit-1 funktioniert.

Trotzdem danke für den Tip ! (war mir nämlich auch neu)

track

tillorgias

(Themenstarter)

Anmeldungsdatum:
13. Mai 2010

Beiträge: 26

Danke erstmal für die ganzen Tipps, udisks kann ich an anderer Stelle noch gut gebrauchen.

Ich parse einfach die Ausgabe von lshal, suche mir devices mit "storage_serial" raus und lasse mir die Infos dazu ausgeben.

lshal -u $(lshal -t | grep storage_serial)

Das führt

lshal -t

aus, was die Hal-Infos als Baum ausgibt - jeweils nur die UDIs. Da ich diese mit

pgrep storage_serial

nur auf die Festplatten (und ähnliche Speichermedien) begrenze, kann ich dies dann als Parameter für

lshal -u

womit ich Informationen über eine UDI abfragen kann.

Das ganze sieht bei mir etwa so aus:

lshal -u $(lshal -t | grep storage_serial)
udi = '/org/freedesktop/Hal/devices/storage_serial_WDC_WD1600BEVT_22ZCT0_WD_WX40A69S8467'
  block.device = '/dev/sda'  (string)
  block.is_volume = false  (bool)
  block.major = 8  (0x8)  (int)
  block.minor = 0  (0x0)  (int)
  block.storage_device = '/org/freedesktop/Hal/devices/storage_serial_WDC_WD1600BEVT_22ZCT0_WD_WX40A69S8467'  (string)
  info.capabilities = {'storage', 'block'} (string list)
  info.category = 'storage'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_8086_27c5_scsi_host_scsi_device_lun0'  (string)
  info.product = 'WDC WD1600BEVT-2'  (string)
  info.udi = '/org/freedesktop/Hal/devices/storage_serial_WDC_WD1600BEVT_22ZCT0_WD_WX40A69S8467'  (string)
  info.vendor = 'ATA'  (string)
  linux.hotplug_type = 3  (0x3)  (int)
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0/block/sda'  (string)
  storage.automount_enabled_hint = true  (bool)
  storage.bus = 'pci'  (string)
  storage.drive_type = 'disk'  (string)
  storage.firmware_version = '11.01A11'  (string)
  storage.hotpluggable = false  (bool)
  storage.lun = 0  (0x0)  (int)
  storage.media_check_enabled = false  (bool)
  storage.model = 'WDC WD1600BEVT-2'  (string)
  storage.no_partitions_hint = false  (bool)
  storage.originating_device = '/org/freedesktop/Hal/devices/computer'  (string)
  storage.partitioning_scheme = 'mbr'  (string)
  storage.removable = false  (bool)
  storage.removable.media_available = true  (bool)
  storage.removable.media_size = 160041885696  (0x25433d6000)  (uint64)
  storage.requires_eject = false  (bool)
  storage.serial = 'WDC_WD1600BEVT-22ZCT0_WD-WX40A69S8467'  (string)
  storage.size = 160041885696  (0x25433d6000)  (uint64)
  storage.vendor = 'ATA'  (string)

Eine bequemere Art als einen einzigen Befehl, der alles macht, gibt es nicht... 😎

Die Frage ist nur: Seit wann ist dieser Befehl verfügbar?

Gruß, Tillorgias

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

tillorgias schrieb:

Eine bequemere Art als einen einzigen Befehl, der alles macht, gibt es nicht... 😎

Da bin ich mir nicht sicher. Vermutlich ließe sich diese Info irgendwo unter /proc direkt auslesen. ich weiß jetzt aber nicht wo
edit2: doch noch gefunden. Schau mal unter cat /proc/ide/sda/model oder cat /proc/ide/sd?/model nach.

edit: Und es gibt noch die Alternative, die Daten mit lshw auszulesen, ganz unabhängig von hal:

lshw -C disk

edit2: unter man lshw habe ich auch den Hinweis auf den Pfad unter /proc gefunden.

Die Frage ist nur: Seit wann ist dieser Befehl verfügbar?

Das ist das Problem nicht: http://packages.ubuntu.com/dapper/hal - die Frage ist eher: wie lange wird das noch unterstützt ?
Denn seit Lucid wird der ganze Betrieb intern auf udev umgestellt, und hal wird Stück für Stück ersetzt.

track

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

@track: Metainformationen zu Geräten finden sich in sortierter Form unterhalb von /sys/. Das Modell der ersten Festplatte beispielsweise lässt sich aus /sys/class/block/sda/device/model auslesen.

Alternativ lassen sich diese Informationen auch mit udev auslesen: udevadm info --query=property --name=sda.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Lunar schrieb:

... lässt sich aus /sys/class/block/sda/device/model auslesen.

Offenbar variiert das je nach Linux-Version. Bei Hardy gibt es diesen Pfad nicht, sondern es steht (ohne "class/") unter

cat /sys/block/sda/device/model

Alternativ lassen sich diese Informationen auch mit udev auslesen: udevadm info --query=property --name=sda.

Das wirft unter Hardy auch eine Fehlermeldung:

track@jmed-server:~$ udevadm info --query=property --name=sda
unknown query type

Nur mit udevadm info --query=env --name=sda bekommt man dort unter anderem auch den Namen.

Offenbar sind die direkten Abfragen unter /proc oder /sys doch nicht so ganz portabel. Dann wäre auf der Kommandozeile vielleicht doch lshw das robusteste.

track

tillorgias

(Themenstarter)

Anmeldungsdatum:
13. Mai 2010

Beiträge: 26

Hi,

ich denke wir können uns auf track's antwort als optimum einigen:

cat /proc/ide/sdX/model

Das scheint schon lange so zu sein und wird auch noch so bleiben, sodass es zuverlässig ist.

lshw -C disk

Das ist eine Alternative, für meinen Fall nicht so geeignet, klappt aber auch und ist für andere vielleicht eine bessere Lösung. Für denjenigen, der die Daten einfach nur manuell auslesen will, kann das glaube ich als Synonym angesehen werden, wobei bei mir cat /proc/ide/sdX/model einen leichten Performancevorteil hat.

Tillorgias

Der Thread kann geschlossen werden.

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Lunar schrieb:

Im Allgemeinen gilt jedenfalls, dass alles, was nicht über ein Dateisystem läuft, sondern direkten Zugriff auf die Blöcke der Festplatte verlangt (e.g Partitionstabelle, SMART-Daten, usw.), nicht ohne Root-Rechte funktioniert,

Zumindest auf meinem System können alle Mitglieder der Gruppe disk auf die Device-Dateien der Festplatten zugreifen. An sich sollte es also reichen, den gewünschten Benutzer zu dieser Gruppe hinzuzufügen.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

@Hello World: Das gilt auch auf meinem System. Allerdings hat diese Gruppe auch Schreibrechte auf den Gerätedateien. Jedes Mitglied dieser Gruppe kann also beliebige Daten direkt auf die Festplatte schreiben.

tillorgias

(Themenstarter)

Anmeldungsdatum:
13. Mai 2010

Beiträge: 26

Hallo,

nachdem ich weiter nach Infos über die Ablösung von HAL gesucht habe, bin ich in der Wiki über den Artikel von Lucid Lynx gestolpert. Zitat:

DeviceKit ersetzt HAL

HAL wurde - im Gegensatz zu Karmic, wo er nur teilweise angepasst wurde - nun vollständig durch DeviceKit ersetzt. Das gilt allerdings nur für den Startvorgang. Einige Anwendungen, wie das beliebte VirtualBox, benötigen weiterhin HAL, so dass es natürlich noch bereitgestellt wird.

Das heißt im Endeffekt, das HAL wohl aufgrund seiner Verbreitung in anderer Software wohl noch eine Weile erhalten bleibt, womit die erste Lösung mittels lshal wohl noch mit eine der schnellsten und auf allen Rechnern, von Version zu Version gleich verfügbaren Lösungen ist.

Die Frage ist nur: Ist es zu vertreten, HAL weiterhin (auch in neuer Software), zu nutzen?

Tillorgias

Antworten |