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