Czy istnieje polecenie w jednym wierszu do wykonania polecenia `su`?

15

Mogę zrobić suz su <username>i prosi o hasło. Czy istnieje parametr hasła, dla suktórego nie będę monitowany o hasło?

na przykład su <username> -p <password>

alvas
źródło
Wygląda na to, że pytanie pasuje idealnie do superużytkownika: superuser.com :-)
HongboZhu,
1
dostałem to superuserstąd, superuser.com/questions/67765/…
alvas

Odpowiedzi:

12

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
!
Brian
źródło
2
hmm, „standardem musi być tty”
John Lawrence Aspden
Otrzymuję ten sam błąd
MaxV
12
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

Wayne_Yux
źródło
1
su root script nadal muszę wprowadzić hasło.
Dai Kaixian
@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}

proch
źródło
To nie odpowiada na pytanie. Pytanie dotyczy sposobu obsługi hasła.
Stephen C