Mam zahartowany system Gentoo i zainstalowałem Xorg , Fluxbox , i Conky razem, aby utworzyć minimalny pulpit menedżera okien. W tym systemie mam 2 głównych użytkowników, root
i mój normalny użytkownik, na którym się loguję.
Problem polega na tym, że Conky próbuje uzyskać dostęp do informacji termicznych i baterii od wewnątrz /sys/class/thermal/thermal_zone1/temp
i /sys/class/power_supply/BAT1/uevent
i dostaje błędy odmowy dostępu, co skutkuje wyświetlaniem danych, które będą wyświetlane jako puste lub jako wartości zerowe. Są to wartości uprawnień w obu plikach
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: -
Czy istnieje sposób, aby umożliwić Conky dostęp do określonych uprzywilejowanych plików bez podawania całego procesu root
dostęp przez sudo
? Mógłbym ustawić regułę sudoersa, aby umożliwić jej uruchamianie NOPASSWD
, ale przyznanie Conky pełnego uprawnienia roota nie jest tym, co chciałbym zrobić.
Najlepiej byłoby tylko dać procesowi dostęp do odczytu tych plików. Czy mogę po prostu uczynić te pliki czytelnymi na całym świecie bez negatywnych skutków ubocznych?
Edytuj: Znalazłem źródło problemu. Nie są to pliki, które same w sobie stanowią problem, ponieważ są już czytelne na całym świecie, a ich katalog zawiera tylko drwx użytkownika. Czy będzie jakiś negatywny efekt uboczny, jeśli pozwolę /sys/class/thermal
i /sys/class/power_supply
tak dobrze jak /sys/class
katalogi stają się czytelne na całym świecie?
Edit2: Okazuje się, że jedna z funkcji hartowania uniemożliwia normalnym użytkownikom dostęp do tych plików bez rootowania. Powodem, dla którego doszedłem do tego wniosku, jest bieganie ls -alh
w katalogach jako mój zwykły użytkownik, wszystkie flagi rwx pojawiają się jako znaki zapytania nawet po ustawieniu ich na 0704 (drwx --- r--). Moją jedyną opcją jest niestety uruchomienie Conky jako root, za pomocą reguły sudo NOPASSWD, aby Fluxbox mógł go uruchomić bez żadnych kłopotów.
sudoers
pozwala na bardzo drobną konfigurację. Powinieneś ograniczyć się do dowolnego skryptu / pliku binarnego wymagającego dostępu (lub jego opakowania). Możliwości mogą być inną trasą, ale nie znalazłem żadnej, która zaspokoiłaby twoją natychmiastową potrzebę (także tłumacz musi mieć taką możliwość, a nie skrypt). Na koniec rozważałem uruchomienie zadania CRON lub tak, aby ustawić ACL na tych pdeudo-plikach, zakładając, że jest to dozwolone przez jądro. W ten sposób możesz mieć ściśle powiązaną kontrolę dostępu bez przekazywania rootasudoers
.Odpowiedzi:
Gdybym był w twojej sytuacji, rozważyłbym użycie facl's:
Gdzie 1000 to UID użytkownika, pod którym uruchamiane jest conky. Powyższy przykład spowoduje, że wszystkie pliki w / sys / class będą mogły być odczytane przez dowolny proces uruchomiony w UID 1000, ale mogą być bardziej ograniczone, jeśli wybrane zostaną określone pliki.
Jeśli chciałeś, aby oba wymienione powyżej pliki były czytelne:
Mam także maszynę z uruchomionym jądrem Gentoo i nie jestem pewien, jak obsługuje listy kontroli dostępu, zaktualizuję tę odpowiedź po testowaniu.
Mam też niezgrabne bieganie, ale nie pamiętam, jak pokonałem te przeszkody.
źródło