Mam lokalny skrypt powłoki, który wykonuje szereg testów na zdalnym hoście, zanim dostarczy ładunek; jednym z tych testów jest sprawdzenie, czy użytkownik ma uprawnienia sudo, sprawdzane po prostu za pomocą, sudo -v
jednak wymaga to podania hasła. Ponadto zdalny host wydaje się mieć natychmiastowe przekroczenie limitu czasu sudo, więc podanie hasła jest wymagane przy każdym nowym połączeniu i jest to coś, czego nie mam uprawnień do zmiany (jako zasady).
Mogę oczywiście przetestować, czy użytkownik należy do niektórych grup, ale wtedy nie byłoby to niezależne od konfiguracji zdalnego hosta, więc miałem nadzieję, że istnieje metoda, która może sprawdzić, że nie trzeba zakładać grup użytkowników, a także jako że nie wymaga wkładu użytkownika?
Dzięki!
AKTUALIZACJA: Aby powtórzyć moje komentarze, chcę tylko przetestować, czy użytkownik może sudo, bez konieczności interakcji użytkownika w tym teście.
sudo -l
monituje o podanie hasła.sudo -k
najpierw.Odpowiedzi:
Obawiam się, że jedyną rzeczą, którą możesz przetestować, jest to, czy użytkownik ma uprawnienia sudo bez hasła.
Wykonać
Jeśli $? jest 0, użytkownik ma dostęp sudo bez hasła, jeśli $? wynosi 1, użytkownik potrzebuje hasła.
Jeśli potrzebujesz weryfikacji konkretnego programu, zmień go
true
w swoim programie, tak aby program nic nie robiłchmod --help
źródło
X
jest wsudo
stanie bez podania hasła i bez przypadkowego uruchomieniaJeśli masz jednego użytkownika z dostępem sudo, na przykład „root”, możesz go użyć do sprawdzenia innych danych logowania. Jako użytkownik z dostępem uruchom:
sudo -n -l -U foo 2> & 1 | egrep -c -i "niedozwolone uruchamianie sudo | nieznany użytkownik"
Jeśli zwróci zero, „foo” ma dostęp. W przeciwnym razie nie ma dostępu do sudo.
źródło
sudo -n -l cmd
zostaniesz poinformowany, czy bieżący użytkownik ma dostęp sudo do cmd. Jeśli chcesz przetestować wynik.To powinno dać ci wystarczająco dużo, aby zdecydować, czy masz sekrety, których chcesz / potrzebujesz.
źródło
Wiem, że to bardzo stare pytanie, ale znalazłem szczęście z
-n
flagą (nieinteraktywną) i-v
/-l
. Ale musisz sprawdzić dane wyjściowe:Pewne przekierowanie danych wyjściowych i grepping doprowadzi cię tam prawdopodobnie:
źródło