Ich habe ein System mit gehärtetemGentoound ich habe installiertXorg,Fluxbox, UndConkyzusammen, um einen minimalen Fenstermanager-Desktop zu erstellen. Innerhalb dieses Systems habe ich 2 Hauptbenutzer root
und meinen normalen Benutzer, bei dem ich mich anmelde.
Das Problem besteht darin, dass Conky versucht, von innen auf Wärme- und Batterieinformationen zuzugreifen /sys/class/thermal/thermal_zone1/temp
und /sys/class/power_supply/BAT1/uevent
Fehler mit verweigerter Berechtigung erhält, was dazu führt, dass die Daten, die ich anzeigen möchte, leer oder als Nullwerte angezeigt werden. Dies sind die Berechtigungswerte für beide Dateien
File: '/sys/class/thermal/thermal_zone0/temp'
Size: 4096 Blocks: 0 IO Block: 4096 regular file
Device: 12h/18d Inode: 3719 Links: 1
Access: (0444/-r--r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-03-14 20:14:54.143855495 +0000
Modify: 2015-03-14 20:14:54.143855495 +0000
Change: 2015-03-14 20:14:54.143855495 +0000
Birth: -
File: '/sys/class/power_supply/BAT1/uevent'
Size: 4096 Blocks: 0 IO Block: 4096 regular file
Device: 12h/18d Inode: 3907 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-03-14 19:23:15.227055847 +0000
Modify: 2015-03-14 19:23:15.227055847 +0000
Change: 2015-03-14 19:23:15.227055847 +0000
Birth: -
Gibt es eine Möglichkeit, Conky den Zugriff auf bestimmte Dateien mit Berechtigungen zu erlauben, ohne dem gesamten Prozess root
Zugriff über zu gewähren sudo
? Ich könnte eine Sudoers-Regel einrichten, um die Ausführung mit zu ermöglichen NOPASSWD
, aber Conky volle Root-Berechtigungen zu erteilen, ist nicht das, was ich möchte.
Am liebsten würde ich dem Prozess nur Lesezugriff auf diese Dateien geben. Könnte ich diese Dateien einfach allgemein lesbar machen, ohne negative Nebenwirkungen?
Bearbeiten: Ich habe die Ursache des Problems gefunden. Das Problem sind nicht die Dateien selbst, da sie bereits allgemein lesbar sind, sondern ihr enthaltenes Verzeichnis, das nur vom Benutzer aufgerufen werden kann. Wird es negative Nebenwirkungen geben, wenn ich zulasse, dass sowohl die /sys/class/thermal
Dateien /sys/class/power_supply
als auch die /sys/class
Verzeichnisse allgemein lesbar werden?
Edit2: Es stellte sich heraus, dass eine der Härtungsfunktionen normale Benutzer daran hindert, auf diese Dateien zuzugreifen, ohne Root-Rechte zu haben. Der Grund, warum ich zu dieser Schlussfolgerung kam, ist, dass, wenn ich ls -alh
die Verzeichnisse als mein normaler Benutzer ausführe, alle rwx-Flags als Fragezeichen angezeigt werden, selbst nachdem ich sie auf 0704 gesetzt habe (drwx---r--). Meine einzige Option ist jetzt leider, Conky als Root über eine NOPASSWD-Sudo-Regel auszuführen, damit Fluxbox es problemlos starten kann.
Antwort1
Wenn ich in Ihrer Situation wäre, würde ich die Verwendung von facl's in Betracht ziehen:
sudo setfacl -Rm u:1000:r /sys/class/
Wobei 1000 die UID des Benutzers ist, unter dem Conky ausgeführt wird. Das obige Beispiel würde alle Dateien unter /sys/class so ändern, dass sie von jedem Prozess gelesen werden können, der unter UID 1000 ausgeführt wird. Die Einschränkung kann jedoch durch die Auswahl bestimmter Dateien weiter eingeschränkt werden.
Wenn Sie nur möchten, dass die beiden oben genannten Dateien lesbar sind:
sudo setfacl -m u:1000:rx /sys
sudo setfacl -m u:1000:rx /sys/class/
sudo setfacl -m u:1000:r /sys/class/thermal
sudo setfacl -m u:1000:r /sys/class/power_supply
Ich habe auch eine Maschine, auf der ein gehärteter Gentoo-Kernel läuft, und ich bin nicht sicher, wie dieser mit Zugriffskontrolllisten umgeht. Ich werde diese Antwort nach dem Testen aktualisieren.
Ich habe auch Conky am Laufen, kann mich aber nicht erinnern, wie ich diese Berechtigungshürden umgangen habe.