Mogę zrobić su
z su <username>
i prosi o hasło. Czy istnieje parametr hasła, dla su
którego nie będę monitowany o hasło?
na przykład su <username> -p <password>
superuser
stąd, superuser.com/questions/67765/…
Mogę zrobić su
z su <username>
i prosi o hasło. Czy istnieje parametr hasła, dla su
którego nie będę monitowany o hasło?
na przykład su <username> -p <password>
superuser
stąd, superuser.com/questions/67765/…
Odpowiedzi:
Jeśli chcesz napisać skrypt, który działa jako inny użytkownik, coś takiego działa, chociaż wypuszcza słowo „hasło” bez nowego wiersza, aby wyjść poza standard
su - username <<!
enterpasswordhere
enter commands to run as the new user
!
jeśli masz użytkownika o nazwie fred z hasłem 1234 i chcesz uzyskać ls z katalogu domowego freda jako fred, bez wyświetlania ciągu hasła, wyglądałoby to tak:
su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
su: must be run from a terminal
.
Wierzę, że nie ma i nie byłby to dobry pomysł. Oto dlaczego:
Jeśli wpiszesz hasło w takim poleceniu su <username> -p <password>
, będzie ono zapisane jako zwykły tekst w historii bash. To z pewnością ogromny problem bezpieczeństwa.
Jeśli chcesz uruchamiać polecenia za pomocą su
(lub sudo
) w sposób zautomatyzowany, napisz skrypt powłoki zawierający polecenia bez su
lub sudo
i uruchomsu <username> script.sh
su root script
nadal muszę wprowadzić hasło.
echo <passwd> | sudo -S <command-line>
Chociaż nie jest to bezpieczne, ale działa.