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
!
Uzyskiwanie błąd: su: must be run from a terminal.
Abhishek Kashyap
5
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 sulub sudoi uruchomsu <username> script.sh
@DaiKaixian tak, ale nigdzie nie jest zapisany i nikt nie może go przeczytać
Wayne_Yux
2
możesz spróbować czegoś takiego: echo <passwd> | sudo -S <command-line>Chociaż nie jest to bezpieczne, ale działa.
Dai Kaixian
1
cała moja odpowiedź polega na tym, że zapisanie hasła w poleceniu nie jest bezpieczne. Radzę więc tego nie robić
Wayne_Yux
-3
Jeśli chcesz wykonać określone polecenia jako nowy użytkownik, użyj następującego polecenia: sudo -u {username} {command to be executed as the new user}
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
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:
źródło
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
(lubsudo
) w sposób zautomatyzowany, napisz skrypt powłoki zawierający polecenia bezsu
lubsudo
i uruchomsu <username> script.sh
źródło
su root script
nadal muszę wprowadzić hasło.echo <passwd> | sudo -S <command-line>
Chociaż nie jest to bezpieczne, ale działa.Jeśli chcesz wykonać określone polecenia jako nowy użytkownik, użyj następującego polecenia:
sudo -u {username} {command to be executed as the new user}
źródło