jak wykonać akcje roota z konta użytkownika innego niż root?

15

Chcę móc zrestartować usługi ze skryptu php. działający pod kontem użytkownika www.

Jaki jest preferowany sposób wykonywania tych czynności?

Rozumiem, że mogę umieścić plik z poleceniami que, odczytanymi przez CRON, ale rozwiązanie się nie udaje.

Myślę o małej usłudze, działającej pod rootem, pozwalającej na zdefiniowanie „metod”, dzięki czemu nie można wykonać dowolnych akcji roota.

Jakieś narzędzie do tego?

użytkownik65297
źródło
@MadHatter, Mona Lisa wysyła pozdrowienia; ;-)
user65297

Odpowiedzi:

27

Możesz wymyślić koło na nowo, ale szczerze mówiąc, używam do tego sudo bez hasła. Na przykład mój system monitorowania musi być w stanie uruchomić polecenie sprawdzenia sprzętowej macierzy RAID. Wymaga to uprawnień roota, ale nie chcę uruchamiać całego systemu monitorowania jako root, więc zamiast tego mam w sudoerslinii, która mówi

nagios  ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid

a następnie uruchom polecenie sudo /usr/lib/nagios/plugins/check_md_raidjako użytkownik monitorujący, gdy muszę sprawdzić RAID.

Możesz mieć linię sudoers, która mówi

www-user    ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice

następnie uruchom php sudo /etc/rc.d/init.d/myservice restart.

Szalony Kapelusznik
źródło
2
To jest droga do przejścia na IMO. Użyłem tego procesu do podobnego zadania. Jest produkowany od ponad 3 lat. Nic nigdy nie zawiodło, a ryzyko bezpieczeństwa prawie nie istnieje, o ile chronisz kod PHP, który uruchamia go poprawnie za pomocą logiki aplikacji.
Andrew Ensley,
1
Dzięki, sudoers są dla mnie nowi i uderzają w cel. @Andrew, dzięki za dodatkowe informacje.
user65297,
1
user65927, wybacz mi, jeśli nie jest to dla ciebie wiadomość, ale lokalna etykieta jest taka, że ​​gdy masz zadowalającą odpowiedź na pytanie, akceptujesz je, klikając kontur zaznaczenia obok niego.
MadHatter
1
Konieczne może być także skomentowanie wiersza „Domyślne wymagania” w pliku sudoers. Ten krok dał mi kilka razy. (Np zmian "Domyślne requiretty" na "#Defaults requiretty")
steve.lippert
6

Spójrz na sudo : pozwala określić działania, które mogą być wykonane jako inny użytkownik (root w twoim przypadku).

Możesz na przykład dodać do swojego /etc/sudoers(nie edytuj bezpośrednio pliku visudo)

www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction

Zobacz man sudoszczegóły i składnię pliku

Matteo
źródło
2
zachowaj ostrożność podczas edycji /etc/sudoerspliku. Jeśli jest to w jakikolwiek sposób niepoprawne pod względem składniowym, zmiana go z powrotem jest koszmarem, musisz sudowrócić do niego, ale nie możesz tego zrobić, po prostu wymazałeś sudo. W końcu musisz użyć ratunkowej płyty CD / DVD i ręcznie zamontować partycję.
puk
1
@puk W rzeczywistości do edycji wstrząsów potrzebny jest dostęp do konta root, aw przypadku uszkodzenia pliku możesz zalogować się jako root, a następnie przywrócić go (z kopii zapasowej) lub naprawić ręcznie. visudo również sprawdza poprawność pliku przed jego zapisaniem.
Matteo,
co jest shudders? To prawda, że ​​visudo sprawdza zdrowie psychiczne, ale nie pomagają po wyrządzeniu szkody: P
puk