W pracowite dni chciałbym biegać
$ ./configure && make && sudo make install && halt
w nocy i idź spać, mając nadzieję, że aplikacja zostanie automatycznie zainstalowana. Ale następnego dnia widzę ekran, na którym sudo prosi mnie o hasło. Jak więc mogę uruchomić sudo z hasłem w jednym wierszu poleceń, czy też istnieje inna metoda?
halt
uruchomić jako root.sudo
ma 15-minutowego limitu czasu? Czy nie możesz uruchomić, powiedziećsudo ls
lub coś podobnego, wprowadzić hasło, a następnie uruchomić powyższe polecenie, mającsudo
nadal aktywne uprawnienia? (Obecnie nie mogę tego przetestować, w przeciwnym razie opublikowałbym to jako odpowiedź.)sudo
jest konfigurowalny. Ludzie świadomi bezpieczeństwa (paranoiczni, tacy jak ja) ustawili ją na zero ... :-)Odpowiedzi:
Tak, użyj
-S
przełącznika, który odczytuje hasło ze STDIN:W twoim przypadku wyglądałoby to tak:
oczywiście zamień na
<password>
swoje hasło.źródło
Możesz zastąpić swój wiersz poleceń tym:
$sudo su
$./configure && make && make install && halt
Natychmiast pojawi się monit o podanie hasła, a następnie pozostałe polecenia będą działać jako administrator.
źródło
sudo sh -c "./configure && make && make install && halt"
Kilka innych rozwiązań mają tę wadę, że niepotrzebnie uruchomić
./configure
imake
jako root.Jest to nieco skomplikowane, ale powinno działać:
Zwróć uwagę na użycie podwójnych cudzysłowów, aby umożliwić
$USER
rozszerzenie przez powłokę (inną niż root).Mogę również dodać
sleep 60
przedhalt
poleceniem. Czasami robiłem takie rzeczy, spodziewając się, że polecenie będzie działać przez długi czas, ale coś idzie nie tak i natychmiast się kończy;sleep
pozwala mi zabić komendy zanim system zostanie zamknięty. Lub możesz użyćshutdown
argumentu czasowego.źródło
Możesz również skonfigurować sudo za pomocą,
visudo
aby użytkownik mógł używać make jako sudo bez hasła.źródło
Ustaw HISTIGNORE na „ sudo -S ”
Następnie przekaż swoje hasło bezpiecznie do sudo:
„HISTIGNORE” oznacza, że nie zapisujesz tego polecenia w historii. To jest historia w pamięci lub plik „~ / .bash_history”.
Na przykład poniżej bezpiecznie potokuje twoje hasło do polecenia sudo, bez przechowywania historii twojego hasła.
„-S” oznacza użycie stdin jako hasła,
„-K” oznacza ignorowanie buforowanych danych uwierzytelniających, aby zmusić sudo, by zawsze pytało. Służy to spójnemu zachowaniu.
Wadą powyższej metody jest to, że jeśli chcesz zobaczyć polecenia uruchomione w historii później, nie będą one dostępne. Inną metodą jest aktualizacja pamięci podręcznej uwierzytelniania sudo (domyślnie jest włączona z 5-minutowym limitem czasu), a następnie osobne uruchomienie sudo. Ale wadą tego jest to, że musisz być świadomy 5-minutowej pamięci podręcznej.
Na przykład:
Uwaga: Uruchomiłem sudo przed każdą komendą, aby upewnić się, że pamięć podręczna sudo jest aktualizowana, ponieważ domyślnie jest to 5 minut. Tak, whoami nie powinno zająć 5 minut, ale myślę, że równie dobrze mógłbym uruchomić go przed każdym poleceniem dla zachowania spójności. Możesz także wpisać „export HISTIGNORE = ' sudo -S„” w pliku ~ / .bashrc, a następnie załaduj go za pomocą „. ~ / .bashrc "lub wyloguj się, a następnie zaloguj. Jednak myślę, że wykorzystam to do celów skryptowych, więc będę trzymać go na szczycie wszystkich moich skryptów dla najlepszych praktyk bezpieczeństwa. Ustawienie" echo "" | sudo -S -v zamiast tego może być dobrym pomysłem, a następnie po prostu uruchom zmienną przed każdą komendą, która wymaga uprawnień roota, patrz komentarz Janara. Komentarz „John T” powinien również zawierać parametr „-k” , tak jakbyś uruchomił „sudo -S” bez „-k”, a pamięć podręczna uwierzytelniania sudo ma już poświadczenia (i nadal jest ważna, domyślna pamięć podręczna uwierzytelniania sudo wynosi 5 minut), wówczas bash uruchomi hasło jako polecenie, czyli zły.
źródło
Zauważyłem, że ta metoda nie działa na starszej wersji sudo, w szczególności „Sudo wersja 1.6.7p5”:
Gdzie jak ta metoda działa na starszych i nowych wersjach sudo:
źródło
Możesz to również zrobić:
źródło
Jeśli chcesz zachować większą ostrożność, możesz utworzyć skrypt, zmienić uprawnienia do pliku, aby tylko root mógł czytać i edytować, a następnie po prostu go uruchomić.
Przykład:
1) Utwórz plik:
2) Wklej to i zapisz:
3) Spraw, by był wykonywalny:
4) Zmień uprawnienia do pliku, aby tylko root mógł go czytać i edytować:
5) Uruchom:
Cieszyć się ;-)
źródło
Konfigurowanie takiego sudo jest niebezpieczne, jeśli ktoś zobaczy, że sudo nie wymaga hasła do twojego konta. Jeśli nie wiesz, co robisz, nie rób tego. Zdarzyło mi się to w moim lokalnym programie szkoleniowym A + z moim eksperymentalnym komputerem zbyt wiele razy ... -_-
To, co powiedział John T., brzmi dobrze, ale nadal istnieje ryzyko znalezienia hasła w historii powłoki. To, co powiedział CarlF, brzmi lepiej, ale jeśli jedno polecenie nie powiedzie się, komputer będzie nadal działał z uprawnieniami administratora.
źródło
Osobiście robię to samo, co John T. odpowiedział 9 listopada 09 o 2:47, poprawiłem też mój zgodnie z wytycznymi jego odpowiedzi, dzięki.
Różnica polega na tym, że zwykle używam zmiennych, takich jak:
W ten sposób mogę łatwo użyć mojej zmiennej zamiast sudo,
Przydaje się to w przypadku dłuższych skryptów. Używam ich głównie do komputerów osobistych innych osób, które muszę utrzymywać.
Polecam również zwrócić uwagę na:
źródło
Problem został rozwiązany. Na przykład do użytkownika root:
źródło