Leseberechtigung für Gerätedatei der Festplatte erteilen

Leseberechtigung für Gerätedatei der Festplatte erteilen

hdparmWenn 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 sdakeinen Umständen. Wäre es also ratsam, es als normaler Benutzer chmod o+r /dev/sda*auszuführen ?ddhdparm

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:

  1. Fügen Sie der Gruppe alle Benutzer hinzu, die die Festplatte lesen müssen, diskund chmod g-w /dev/sda*verhindern Sie den Schreibzugriff für diese Gruppe.
  2. Ä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 mit chmod.

Bitte beachten Sie, dass die Gruppen- und Berechtigungsänderungen an Geräteknoten /devnur temporär sind, bis das betroffene Gerät getrennt oder der Computer neu gestartet wird.

Ein Problem könnte sein, dass hdparmfü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 hdparmob 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/hdparmhdparm diese Fähigkeit geben. Bitte beachten Sie, dass diesirgendjemandhdparmder 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-sectoraller 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 -tmuss es allerdings als Root ausgeführt werden.

verwandte Informationen