Est-il possible de su sans être invité à entrer un mot de passe?

Je suppose que su n'a aucun moyen de passer le mot de passe à partir du shell au lieu d'être invité pour un, pour des raisons de security (rien trouvé dans le MAN). Est-ce vrai?

C'est vrai, il n'y a aucun moyen d'avoir su (1) redirect son input d'un endroit autre que le tty. Mais il existe des bibliothèques et des programmes pour simuler un terminal pour les scripts automatisés, par exemple, Expect. Quelque chose de similaire à:

 stty echo log_user 0 set timeout 2 if [catch "spawn su root" reason] { send_user "Failed to spawn su: $reason\n" exit 1 } expect "Password:" send "$PASSWORD\r" expect "\r\n" #set timeout 5 log_user 1 expect { "# " {send_user "\nsu successful.\n"} timeout {send_user "\nsu timed out.\n"; exit 1} "incorrect" {send_user "\nsu failed.\n"; exit 1} } 

C'est une idée incroyablement mauvaise, mais si vous voulez vraiment le faire, vous pouvez utiliser l'option NOPASSWD de sudo:

 In /etc/sudoers: # User privilege specification johndoe ALL=(ALL) NOPASSWD:ALL 

Ensuite, l'user johndoe peut faire sudo su et se refind avec une invite root sans jamais être demandé un mot de passe.

Je répète, cependant, que c'est une très mauvaise idée dans la plupart des circonstances. Sudo, de preference / sans / le drapeau nopasswd est significativement plus sûr.