Mam skrypt bash, który instaluje niektóre oprogramowanie. Chcę jak najszybciej zawieść, jeśli nie jest uruchamiany przez root. Jak mogę to zrobić?bash: niepowodzenie, jeśli skrypt nie jest uruchamiany przez root
Odpowiedz
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
Źródło: http://www.cyberciti.biz/tips/shell-root-user-check-script.html
lub, aby go skrócić, sprawdź UID env: , jeśli [[$ UID -ne 0]]; następnie – zlack
@ Ulack $ UID poda identyfikator UID oryginalnego użytkownika, jeśli skrypt jest uruchamiany przez 'sudo', podczas gdy David będzie traktował skrypt jako uruchamiany jako root. W zależności od tego, co robisz, David jest prawdopodobnie lepszy. – pr1001
Jak mówi pr1001, UID nie działa, jeśli użytkownik uruchamia skrypt za pomocą sudo, ale EUID będzie działał dobrze. – Tom
Po kopania wokół na to, konsensus wydaje się, że nie ma potrzeby korzystania id -u
w bash, jako zmienna EUID
(efektywny identyfikator użytkownika) zostaną ustawione. W przeciwieństwie do UID
, EUID
będzie 0
, gdy użytkownik jest root
lub przy użyciu sudo
. Najwyraźniej jest to około 100 razy szybciej niż bieganie id -u
:
#!/bin/bash
if ((EUID != 0)); then
echo "You must be root to do this." 1>&2
exit 1
fi
Źródło: https://askubuntu.com/questions/30148/how-can-i-determine-whether-a-shellscript-runs-as-root-or-not
to jednak nie działa w powłoce Bourne'a. Czy masz jakieś ściśle zgodne z POSIX rozwiązania? –
- 1. odczyt bash jest pomijany, gdy uruchamiany jest z rury zwijania
- 2. Bash: nie absolutny skrypt #! interpretator?
- 3. Skrypt wsadowy uruchamiany jako administrator
- 4. Sprawdzanie Jeśli proces jest uruchamiany co minutę
- 5. Skrypt Bash - odmontuj urządzenie, ale nie zawiedziesz, jeśli nie jest zamontowane?
- 6. Skrypt Bash z nieblokującym odczytem
- 7. Wykrywanie, kiedy skrypt Pythona jest uruchamiany interaktywnie w ipython
- 8. Niepowodzenie ReferenceError: $ nie jest zdefiniowany
- 9. Czy istnieje sposób sprawdzenia, czy skrypt jest uruchamiany przez program PowerShell ISE?
- 10. Aktywność w androidTest nie jest uruchamiany przez ActivityTestRule
- 11. Jak niebezpieczny jest ten skrypt bash?
- 12. Skrypt bash z menu graficznym
- 13. Skrypt Cmder bash wykonujący
- 14. Jak uzyskać literę dysku, z której uruchamiany jest skrypt wsadowy?
- 15. Bash: Nie można wejść, nawet jeśli warunek jest prawdziwy
- 16. wykryć, czy skrypt Pythona jest uruchamiany z konsoli lub przez crontab
- 17. Skrypt Bash nie czeka na odczyt
- 18. Skrypt Bash: nie można poprawnie obsłużyć SIGTSTP
- 19. skrypt bash nie czyta alias w bashrc
- 20. Konwencja Bash, jeśli; następnie
- 21. Jak sprawdzić, czy proces jest uruchamiany przez Menedżera sterowania usługami
- 22. Jak uruchomić skrypt powłoki jako root (sudo)?
- 23. jQuery mouse's .click() jest uruchamiany przez nawigację klawiaturową
- 24. Skrypt powłoki - zamykanie skryptu, jeśli zmienna jest pusta lub pusta
- 25. Android BluetoothDevice.ACTION_FOUND Bluetooth nie jest uruchamiany?
- 26. Skrypt Bash/Expect dla SSH
- 27. Dlaczego wyjątek nie jest tutaj uruchamiany?
- 28. Harmonogram zadań nie jest uruchamiany czasami
- 29. Jak zabić proces uruchamiany przez wątek potomny?
- 30. Wykrywanie przez JavaScript, jeśli wejście jest skupione
Chociaż generalnie bym * * uznają to głupie zachowanie: * Niech go uruchomić dopóki uprawnienia nie *; system może być skonfigurowany w taki sposób, aby operacja mogła zostać wykonana pomyślnie jako bieżący użytkownik i przez wymuszenie rootowania ta opcja została usunięta [Musiałem naprawić skrypty, które wcześniej przyjęły podobne założenia]. Z drugiej strony, mam o wiele więcej sprawy, aby * zapobiec * dostępowi lub wyświetlać duże, grube ostrzeżenie, jeśli uruchomione jako root. –
Powinieneś spróbować użyć sudo. Pod Linuksem, kiedy instalujesz cokolwiek, musisz być rootem, aby uniemożliwić zwykłym użytkownikom instalowanie wszystkiego, co może uszkodzić system. – masterLoki
Chce, aby jego skrypt uwzględniał fakt, że niektórzy mogą zapomnieć, lub nie są świadomi sudo (lub innych sposobów eskalacji przywilejów). Jego dobrą praktyką jest sprawdzenie poczytalności w czasie pracy przed próbą zrobienia czegokolwiek innego. –