Muszę edytować /etc/sudoers
ze skryptu, aby dodawać / usuwać rzeczy z białych list.
Zakładając, że mam polecenie, które działałoby na normalnym pliku, jak mogę je zastosować /etc/sudoers
?
Czy mogę go skopiować i zmodyfikować, a następnie visudo
wymienić oryginał na zmodyfikowaną kopię? Udostępniając własny skrypt w $EDITOR
?
Czy mogę po prostu użyć tych samych zamków i cp
?
Pytanie dotyczy bardziej potencjalnych problemów niż znalezienia czegoś, co działa.
echo "$USER ALL=NOPASSWD:/usr/bin/rsync" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/rsync')
.echo "$CONFIGLINE" | (EDITOR="tee -a" visudo)
-a
flaga doEDITOR="tee"
: doda linię do pliku, a nie tylko nadpisze pierwszą linię. Na początku nie złapałem tego innego i nie mogłem wymyślić sposobu na dodanie. Mam nadzieję, że znajdę trochę czasu, wskazując to bezpośrednio ;-)Użyj do tego visudo z niestandardowym edytorem. To rozwiązuje wszystkie warunki wyścigu i problemy z „hakowaniem” za pomocą rozwiązania Briana.
Ten skrypt doda wiersz „# Dummy change to sudoers” na końcu sudoers. Bez hacków i warunków wyścigu.
Wersja z adnotacjami, która wyjaśnia, jak to faktycznie działa:
źródło
--enable-env-editor
, w przeciwnym razie użyje tylko zmiennej edytora, jeśli jest to jedna z małego zestawu znanych wartości.sudo -E
z pierwszego polecenia.Powinieneś dokonać edycji w pliku tymczasowym, a następnie użyć visudo -c -f sudoers.temp, aby potwierdzić, że zmiany są prawidłowe, a następnie skopiować je na górę / etc / sudoers
źródło
W Debianie i jego pochodnych możesz wstawić własny skrypt do
/etc/sudoers.d/
katalogu z prawami0440
- więcej informacji znajdziesz w /etc/sudoers.d/README .To może pomóc.
źródło
visudo ma być ludzkim interfejsem do edycji
/etc/sudoers
. Możesz osiągnąć to samo, zastępując plik bezpośrednio, ale musisz zadbać o jednoczesną edycję i sprawdzanie poprawności składni. Uważaj nar--r-----
uprawnienia.źródło
Jeśli zezwalasz na
sudo
dodawanie wpisów/etc/sudoers.d
, możesz użyć tej odpowiedzi @ dragon788:https://superuser.com/a/1027257/26022
Zasadniczo używasz
visudo
do weryfikacji pliku przed skopiowaniem go/etc/sudoers.d
, więc możesz mieć pewność, że nie złamieszsudo
dla nikogo.To, że sukces i powroty (0), czy to ważne, więc można go używać z kontroli
if
,&&
i innych operacji skrypt logiczne. Po sprawdzeniu poprawności po prostu skopiuj go do programu/etc/sudoers.d
i powinno działać. Upewnij się, że należy do roota i nie ma prawa do zapisu przez innych.źródło
Skonfiguruj edytor niestandardowy. Zasadniczo będzie to skrypt, który zaakceptuje nazwę pliku (w tym przypadku /etc/sudoers.tmp) i zmodyfikuje ją i zapisze na miejscu. Możesz więc po prostu napisać do tego pliku. Kiedy skończysz, zamknij skrypt, a visudo zajmie się modyfikacją rzeczywistego pliku sudoers.
źródło
#!/bin/sh; echo "# my changes to sudoers" >> $1; exit 0
Wydaje mi się, że to działa.Wiele odpowiedzi, pracowałem z sudo od lat, ale do tej pory nie musiałem automatyzować konfiguracji konfiguracji. Użyłem mieszanki niektórych z powyższych odpowiedzi, pisząc moją linię konfiguracyjną w /etc/sudoers.d zawierającą lokalizację, więc nie muszę modyfikować głównego pliku sudoers, a następnie sprawdziłem ten plik pod kątem składni, prosty przykład poniżej:
Napisz swoją linię do dołączonego pliku sudoers:
Sprawdź, czy plik dołączany do sudoers przeszedł testy składni visudo:
źródło
Aby dodać kolejną opcję do powyższych odpowiedzi, jeśli stan wyścigu nie jest poważnym problemem, można użyć następującego polecenia, aby uniknąć ręcznego kopiowania zmodyfikowanego pliku do
/etc/sudoers
Zapewni to poprawność nowego pliku i poprawną instalację wraz z aktualizacją uprawnień.
Zwróć uwagę, że jeśli w
/tmp/sudoers.new
pliku jest błąd,visudo
zostanie wyświetlony monit o wprowadzenie danych przez użytkownika, dlatego zaleca sięvisudo -c -f /tmp/sudoers.new
najpierw to sprawdzić .źródło
Myślę, że najprostszym rozwiązaniem jest:
Utwórz skrypt addedudoers.sh
i nazwij to z użytkownikami, których chcesz dodać jako:
Aby uzyskać pełne wyjaśnienie, zobacz odpowiedź: Dodawanie użytkowników do sudoers za pomocą skryptu powłoki
Pozdrowienia!
źródło
Spróbuj to powtórzyć. Musisz jednak uruchomić go w podpowłoce. Przykład:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
źródło
To zadziałało dla mnie na podstawie tego, co inni tutaj opublikowali. Kiedy użyłem skryptu innych ludzi, otworzyło się dla mnie visudo, ale nie dokonało edycji. To spowodowało edycję, której potrzebowałem, aby umożliwić wszystkim użytkownikom, w tym zwykłym użytkownikom, zainstalowanie java 7u17 dla Safari / Firefox.
To dodało% everybody bla bla bla na końcu pliku sudoers. Musiałem uruchomić skrypt w ten sposób.
Powodzenia: D.
źródło