Udzieliłem grupie uprawnień do uruchamiania niektórych poleceń bez hasła za pośrednictwem sudo. Gdy jeden z użytkowników popełni literówkę lub wykona nieprawidłowe polecenie, system wyświetli monit o podanie hasła, a następnie pojawi się błąd. Jest to mylące dla użytkownika, dlatego chciałbym po prostu wyświetlić błąd zamiast monitować go o hasło. czy to możliwe?
Oto przykład mojego pliku sudoers:
%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *
Przykład, gdy uruchomią zły skrypt:
# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.
Pożądane wyjście:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.
Zwróć uwagę na brak monitu o hasło.
Moje google-fu nie powiodło się mnie i zwraca tylko wyniki nie pyta o hasło, gdy użytkownik jest dozwolone, aby uruchomić polecenie.
sudo
pozwolą ci wykonać bez podania hasła. Dzięki funkcji, którą chcesz, mogę uzyskać te informacje dla określonych poleceń.sudo
jest równie dużym problemem, jeśli użytkownicy mają dostęp do zapisu tych plików.Odpowiedzi:
Z szybkiego czytania
sudo(8)
A dla wątpiących:
Testowany w ten sposób:
Więc
alias
dlasudo
tych ludzi prawdopodobnie rade, aby zapobiec szybka hasło. Dlaczego to wymaga niestandardowej kompilacjisudo
, nie wiem, po prostu przeczytałem instrukcję.źródło
alias sudo="$(which sudo) -n"
w / etc / bashrc, a następnie użyłemsudo
(dostosowanego zachowania) lubcommand sudo
(domyślnego zachowania) według potrzeb.Jedną z rzeczy, która działała dla mnie (Sudo wersja 1.8.17p1), ale spełnia tylko część twojego problemu, jest ustawienie liczby prób wprowadzenia hasła na 0.
Powoduje to, że sudo kończy działanie z kodem 1, gdy próbuje się wykonać dowolne polecenie wymagające hasła. Nie wyświetla jednak żadnego komunikatu o błędzie.
źródło
Nie możesz.
Nie ma sposobu, aby powiedzieć, kim jesteś, dopóki się nie uwierzytelnisz, a domyślnie nie możesz uwierzytelnić się bez hasła.
Możesz zmienić uwierzytelnianie, aby korzystać z kluczy USB, skanerów odcisków palców, uwierzytelniania głosu, rozpoznawania twarzy lub wielu innych rzeczy, ale sprawa jest taka sama.
Nie możesz się uwierzytelnić, bez uwierzytelniania ORAZ przed uwierzytelnieniem sudo nie musi informować Cię, co możesz uruchomić, a czego nie.
źródło
@StrongBad skomentował coś, co zasługuje na odpowiedź:
Myślę, że najlepszym rozwiązaniem byłoby napisanie skryptu opakowującego, który zawsze wywołuje
sudo
prawidłowe parametry. (W tym-n
)Skrypt otoki może analizować argumenty itp., Dzięki czemu wywoływany skrypt sudo staje się tak mały, jak to możliwe, a zatem mniej prawdopodobne, że zawiera błędy.
źródło
To jest niemożliwe. Jedynym sposobem jest zmiana kodu źródłowego i skompilowanie własnego widelca
sudo
źródło