hdparm
Wenn für Benchmarking-Zwecke oder direkt auf dem Gerät verwendet werden muss dd
, frage ich mich, wie dies auf die richtige und sichere Weise erfolgen kann.
Nehmen wir an, es handelt sich um die folgende Festplatte /dev/sda
:
root@igloo:~# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 May 29 08:23 /dev/sda
brw-rw---- 1 root disk 8, 1 May 29 08:23 /dev/sda1
Ich will wirklich nichtschreibenunter sda
keinen Umständen. Wäre es also ratsam, es als normaler Benutzer chmod o+r /dev/sda*
auszuführen ?dd
hdparm
Antwort1
chmod o+r /dev/sda*
ist ziemlich gefährlich, da es jedem Programm ermöglicht, Ihre gesamte Festplatte zu lesen (einschließlich z. B. Kennwort-Hashes in /etc/shadow
, wenn sich Ihre Root-Partition auf befindet sda
)!
Es gibt (mindestens) zwei Möglichkeiten, dies sicherer zu machen:
- Fügen Sie der Gruppe alle Benutzer hinzu, die die Festplatte lesen müssen,
disk
undchmod g-w /dev/sda*
verhindern Sie den Schreibzugriff für diese Gruppe. - Ändern Sie die Gruppe von
/dev/sda*
in eine Gruppe, die nur die Benutzer enthält, die die Festplatte lesen müssen, z. B.chgrp my-benchmarkers /dev/sda*
und verhindern Sie den Schreibzugriff für diese Gruppe mitchmod
.
Bitte beachten Sie, dass die Gruppen- und Berechtigungsänderungen an Geräteknoten /dev
nur temporär sind, bis das betroffene Gerät getrennt oder der Computer neu gestartet wird.
Ein Problem könnte sein, dass hdparm
für die meisten Funktionen Schreibzugriff erforderlich ist. Sie müssen prüfen, ob alles, was Sie möchten, mit schreibgeschütztem Zugriff funktioniert.
BEARBEITEN:Es sieht so aus, als hdparm
ob kein Schreibzugriff erforderlich ist. Es benötigt vielmehr dieCAP_SYS_RAWIO
Fähigkeitum die meisten ioctls auszuführen. Sie können setcap cap_sys_rawio+ep /sbin/hdparm
hdparm diese Fähigkeit geben. Bitte beachten Sie, dass diesirgendjemandhdparm
der eine Gerätedatei ausführen kann und zumindest Lesezugriff darauf hat, um praktisch alles zu tun hdparm
, was auf diesem Gerät möglich ist, einschließlich --write-sector
aller anderen hdparm-Befehle, die in der Manpage als „SEHR GEFÄHRLICH“, „EXTREM GEFÄHRLICH“ oder „AUSSERGEWÖHNLICH GEFÄHRLICH“ beschrieben werden. Wrapper-Skripte könnten eine bessere Lösung sein.
Wenn nicht, müssen Sie entweder Schreibzugriff erteilen oder Wrapper-Skripte schreiben, die von Ihren Benutzern mithilfe von Sudo-Regeln als Root ausgeführt werden können.
Antwort2
Eine Möglichkeit, obwohl einige /dev-Bereitstellungen dies möglicherweise nicht unterstützen, wäre die Verwendung einer ACL. Beispiel:
$ dd if=/dev/sda bs=1M count=200 of=/dev/null
dd: failed to open '/dev/sda': Permission denied
$ sudo setfacl -m u:youruser:r /dev/sd*
$ dd if=/dev/sda bs=1M count=200 of=/dev/null
200+0 records in
200+0 records out
209715200 bytes (210 MB, 200 MiB) copied, 0.0335544 s, 6.3 GB/s
Soweit ich weiß, hdparm -t
muss es allerdings als Root ausgeführt werden.