Piszę mały program narzędziowy. Chciałbym, żeby spróbował sudouruchomić coś, jeśli to konieczne.
To znaczy: jeśli uprawnienia do pliku nie pozwalają bieżącemu użytkownikowi na działanie na określonym pliku (a sudoreguły na to pozwalają), chciałbym, aby moje narzędzie sudouruchomiło coś jako właściciela pliku.
Mam nadzieję sprawdzić tę umiejętność wcześniej, ponieważ wolę, aby dzienniki systemowe nie zapełniały się hałasem spowodowanym nieudanymi sudopróbami. Jak sudosama informuje o awarii: „Ten incydent zostanie zgłoszony”.
Więc mam nadzieję, programowo sprawdzić: można user <x>uruchomić command <y>poprzez sudo?.
Oto problem: chociaż /etc/sudoerszawiera to mapowanie, jest własnością root i nie jest czytelny dla zwykłych użytkowników.
Zastanawiałem się nad odrodzeniem podprocesu do uruchomienia sudo -l(który wypisuje polecenia, które bieżący użytkownik może uruchomić sudo). Następnie przeanalizowałbym wynik tego. Wydaje się to jednak trochę kruche. Dane wyjściowe zawierają potrzebne informacje, ale wygląda na to, że zostały zaprojektowane dla ludzi do czytania (nie do konsumpcji programowej). Nie wiem, czy istnieje jakakolwiek gwarancja, że dane wyjściowe będą miały ten sam format w przyszłości lub na różnych platformach.
Czy programowe analizowanie sudo -lwyników jest uważane za bezpieczne? Jeśli nie, czy są jakieś lepsze opcje, aby ustalić z wyprzedzeniem, czy polecenie sudo się powiedzie?
(tło na X / Y: To narzędzie jest przeznaczone do użytku przez konto roli z ograniczonym dostępem. Oczekuję, że niektórzy inni użytkownicy skutecznie zdecydują się zezwolić, aby konto z ograniczonym dostępem działało na ich plikach za pomocą reguł sudo. Jednak wygrałem nie wiadomo wcześniej, którzy z tych użytkowników mają obowiązującą zasadę sudo)