powinieneś po prostu sprawdzić, czy twój skrypt jest uruchamiany przez "roota". Źle jest powtarzać hasło, zostanie ono znalezione w historii ...
kbdjockey
4
O wiele lepiej jest sudoodpowiednio skonfigurować , aby nie pytał o hasło dla niektórych programów / użytkowników / grup, aby uniknąć takich brudnych hacków.
pośpiech
Odpowiedzi:
186
Przełącznik -S sprawia, że sudo odczytuje hasło ze STDIN. Oznacza to, że możesz to zrobić
echo mypassword | sudo -S command
przekazać hasło sudo
Jednak sugestie innych osób, które nie obejmują przekazywania hasła jako części polecenia, takie jak sprawdzenie, czy użytkownik jest rootem, są prawdopodobnie znacznie lepszymi pomysłami ze względów bezpieczeństwa
Jak o umieszczenie go w specjalnym folderze, dając zarówno ją i folder wykonać uprawnienia tylko: sudo chmod -R 0100 myScriptFolder? Czy to nie rozwiązałoby problemów z bezpieczeństwem (pod warunkiem, że nikt oprócz Ciebie nie używa Twojego komputera jako root)?
Brōtsyorfuzthrāx
A może hakerzy spoza mojej sieci lokalnej mogą w jakiś sposób zobaczyć tekst skryptu w trakcie jego wykonywania, w pewnych okolicznościach?
Brōtsyorfuzthrāx
To działało jak mistrz na moim pudełku z OSX! Dziękuję bardzo za udostępnienie rozwiązania!
Wulf
51
Możesz ustawić sbit dla swojego skryptu, aby nie potrzebował sudoi działał jako root (i nie musisz wpisywać swojego hasła roota w skrypcie):
+1. Jest to o wiele lepsze (i bezpieczniejsze) niż inne metody.
Burkhard
1
lepki kawałek to zła praktyka, prawda?
kbdjockey
@kbdjockey - +sto bit setuid. +tjest lepkim kawałkiem.
Robᵩ
@Rob - dziękuję za wyjaśnienie
kbdjockey
4
Należy zauważyć, że większość systemów operacyjnych ignoruje tę flagę w przypadku interpretowanych plików skryptów. Jednak działa to ładnie na plikach binarnych.
To nie działa, gdy mam argument dla mojego polecenia. na przykład. echo -e "YOURPASSWORD\n" | sudo -S "run -x". Mówi sudo: run -x: command not found. Masz jakiś pomysł, jak to obejść?
Bee
1
@Bhathiya po prostu nie używaj "cudzysłowów", na przykład: echo -e "TWOJE HASŁO \ n" | sudo -S ls -l / root
matteomattei
Świetnie, dzięki ...
Bee
3
Jedną z opcji jest użycie flagi -A do sudo. To uruchamia program, który pyta o hasło. Zamiast pytać, możesz mieć skrypt, który po prostu wypluje hasło, aby program mógł kontynuować.
sudo
odpowiednio skonfigurować , aby nie pytał o hasło dla niektórych programów / użytkowników / grup, aby uniknąć takich brudnych hacków.Odpowiedzi:
Przełącznik -S sprawia, że sudo odczytuje hasło ze STDIN. Oznacza to, że możesz to zrobić
echo mypassword | sudo -S command
przekazać hasło sudo
Jednak sugestie innych osób, które nie obejmują przekazywania hasła jako części polecenia, takie jak sprawdzenie, czy użytkownik jest rootem, są prawdopodobnie znacznie lepszymi pomysłami ze względów bezpieczeństwa
źródło
sudo chmod -R 0100 myScriptFolder
? Czy to nie rozwiązałoby problemów z bezpieczeństwem (pod warunkiem, że nikt oprócz Ciebie nie używa Twojego komputera jako root)?Możesz ustawić
s
bit dla swojego skryptu, aby nie potrzebowałsudo
i działał jako root (i nie musisz wpisywać swojego hasła roota w skrypcie):źródło
+s
to bit setuid.+t
jest lepkim kawałkiem.echo -e "YOURPASSWORD\n" | sudo -S yourcommand
źródło
echo -e "YOURPASSWORD\n" | sudo -S "run -x"
. Mówisudo: run -x: command not found
. Masz jakiś pomysł, jak to obejść?Jedną z opcji jest użycie flagi -A do sudo. To uruchamia program, który pyta o hasło. Zamiast pytać, możesz mieć skrypt, który po prostu wypluje hasło, aby program mógł kontynuować.
źródło
# Make sure only root can run our script if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi
źródło