Próbuję napisać skrypt bash (w Ubuntu), który utworzy kopię zapasową katalogu przy użyciu tar.
Jak mogę sprawdzić skrypt w skrypcie, aby można go było uruchamiać tylko jako root (lub z sudo)?
Na przykład, jeśli użytkownik uruchomi skrypt, powinien powiedzieć, że ten skrypt musi być uruchomiony z uprawnieniami sudo, a następnie wyjść. Jeśli skrypt zostanie wykonany jako root, będzie kontynuował sprawdzanie.
Wiem, że musi istnieć łatwe rozwiązanie, po prostu nie byłem w stanie go znaleźć, przeglądając google.
bash
scripting
root
permissions
Cory Plastek
źródło
źródło
Zakładam, że wiesz o tym, zmieniając własność na root
chown root:root file
i ustawienie uprawnień na 700
chmod 700 file
osiągniesz to samo - bez sugestii, aby uruchomić jako sudo.
Ale opublikuję tę odpowiedź dla kompletności.
źródło
sudo git add <file>
Jaki jest twój cel, aby poinformować użytkownika, że powinien uruchomić skrypt jako root lub jako środek bezpieczeństwa?
Jeśli chcesz tylko poinformować użytkownika, że jakakolwiek sugestia UID jest w porządku, ale są one tak samo użyteczne jak opony na koniu jak środek bezpieczeństwa - nic nie powstrzyma użytkownika przed skopiowaniem skryptu, wyjęciem instrukcji if, i tak czy inaczej.
Jeśli jest to kwestia bezpieczeństwa, skrypt powinien być ustawiony na 700, będący własnością root: root, aby nie był czytelny ani wykonywalny przez żadnego innego użytkownika.
źródło
Możesz także użyć komendy whoami.
źródło
Zmienna bash
$EUID
pokazuje efektywny UID, na którym działa skrypt, jeśli chcesz się upewnić, że skrypt działa jako root, sprawdź, czy$EUID
zawiera wartość 0, czy nie:Jest to lepsze niż rozwiązanie z
/usr/bin/id
(dla skryptów bash!), Ponieważ nie wymaga zewnętrznego polecenia.źródło
echo
linięsudo "$0" "$@"
i, zastępującexit 2
jąexit $?
.Jednym prostym sposobem, aby skrypt mógł być uruchamiany tylko przez root, jest uruchomienie skryptu za pomocą wiersza:
#!/bin/su root
źródło
„#! / bin / su root” pozwala użytkownikom w trybie superużytkownika na uruchomienie skryptu bez użycia hasła roota. Jeśli chcesz, aby superużytkownicy uruchomili skrypt z wynikami roota, zrobi to.
źródło