Erlauben Sie nicht privilegierten Benutzern den Zugriff auf bestimmte privilegierte Dateien

810
user428531

Ich habe ein gehärtetes Gentoo- System und habe Xorg, Fluxbox und Conky zusammen installiert, um einen minimalen Window-Manager-Desktop zu erstellen. In diesem System habe ich 2 Hauptbenutzer rootund meinen normalen Benutzer, bei dem ich mich anmelde.

Das Problem ist, dass Conky versucht, Informationen thermische und Batterie für den Zugriff auf von innen /sys/class/thermal/thermal_zone1/tempund /sys/class/power_supply/BAT1/ueventund es wird immer die Erlaubnis Fehler verweigert in Daten entstehen Ich mag würde zeigen sich leer oder als Nullwerte angezeigt werden soll . 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 privilegierte Dateien zu gestatten, ohne den gesamten Prozess rootüber zuzugreifen sudo? Ich könnte eine Sudoers-Regel einrichten, um zuzulassen, dass sie mit läuft NOPASSWD, aber Conky-Root-Berechtigungen zu erteilen, ist nicht das, was ich gerne tun würde.

Vorzugsweise möchte ich dem Prozess nur lesenden Zugriff auf diese Dateien gewähren. Könnte ich diese Dateien ohne negative Nebenwirkungen einfach weltweit lesbar machen?

Edit: Ich habe die Wurzel des Problems gefunden. Es sind nicht die Dateien selbst, die das Problem darstellen, da sie bereits weltweit lesbar sind, ist es das Verzeichnis, das nur vom Benutzer drwx ist. Wird es einen negativen Nebeneffekt geben, wenn ich erlaube, dass die Verzeichnisse /sys/class/thermalund /sys/class/power_supplydie /sys/classVerzeichnisse weltlesbar werden?

Edit2: Eine der Härtungsfunktionen verhindert, dass normale Benutzer auf diese Dateien zugreifen können, ohne root zu sein. Der Grund, warum ich zu dieser Schlussfolgerung gekommen bin, ist, dass wenn ich ls -alhals normaler Benutzer die Verzeichnisse ausführte, alle rwx-Flags als Fragezeichen angezeigt werden, auch nachdem ich sie auf 0704 (drwx --- r--) gesetzt habe. Meine einzige Option ist jetzt leider, Conky als root über eine NOPASSWD-Sudo-Regel auszuführen, sodass Fluxbox es ohne Probleme starten kann.

2
Denken Sie daran, dass Sudoers eine sehr feinkörnige Konfiguration ermöglichen. Sie sollten sich auf das Skript / die Binärdatei beschränken, die den Zugriff (oder einen Wrapper davon) benötigt. Fähigkeiten können eine andere Route sein, aber ich habe keine gefunden, die Ihre unmittelbaren Bedürfnisse erfüllt (auch der Dolmetscher muss die Fähigkeit haben, nicht das Skript). Zu guter Letzt haben Sie in Betracht gezogen, einen CRON-Job auszuführen oder so, dass eine ACL für diese Pdeudo-Dateien festgelegt wird, vorausgesetzt, der Kernel erlaubt dies. Auf diese Weise können Sie eine engmaschige Zugangskontrolle haben, ohne Wurzeln durch "Sudoers" auszusprechen. 0xC0000022L vor 9 Jahren 0
@ 0xC0000022L Gibt es eine Dokumentation oder ist es möglich, dass sudo einen mit sudo ausgeführten Prozess so einschränkt, dass er nur auf bestimmte Dateien zugreifen kann, die das Ausführen von Anwendungen verhindern, oder die Berechtigung für alles, was er nicht lesen darf? Wenn ja, würde dies mein Problem sofort beheben. user428531 vor 9 Jahren 0

1 Antwort auf die Frage

0
Jacob Margason

Wenn ich in Ihrer Situation wäre, würde ich erwägen, facl's zu verwenden:

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 für jeden unter der UID 1000 ausgeführten Prozess lesbar sind. Die Auswahl kann jedoch eingeschränkt werden, wenn bestimmte Dateien ausgewählt 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 einen Computer, auf dem ein gehärteter Gentoo-Kernel ausgeführt wird, und ich bin mir nicht sicher, wie er Zugriffssteuerungslisten handhabt. Ich werde diese Antwort nach dem Testen aktualisieren.

Ich habe auch Conky ausgeführt, kann mich aber nicht erinnern, wie ich diese Berechtigungshürden überwunden habe.