Je peux faire un su
avec su <username>
et il me demande mon mot de passe. Existe-t-il un paramètre de mot de passe pour su
tel que je ne serai pas invité à entrer un mot de passe?
par exemple. su <username> -p <password>
Si vous voulez écrire un script qui s'exécute en tant qu'utilisateur différent, quelque chose comme ceci fonctionne, bien qu'il génère le mot de passe "mot" sans une nouvelle ligne à la sortie standard
su - username <<!
enterpasswordhere
enter commands to run as the new user
!
si vous avez un utilisateur nommé fred avec un mot de passe de 1234 et que vous voulez obtenir un ls du répertoire personnel de fred comme fred, sans la chaîne de mot de passe affichée, cela ressemblerait à
su - fred <<! >/dev/null 2>&1
1234
whoami > /dev/tty
ls > /dev/tty
!
Je crois, il n'y en a pas et ce ne serait pas une bonne idée. Voici pourquoi:
Si vous écrivez un mot de passe dans une commande telle que su <username> -p <password>
, il sera stocké en texte brut dans votre historique bash. C'est certainement un problème de sécurité énorme.
Si vous devez exécuter des commandes avec su
(ou Sudo
) de manière automatisée, écrivez un shellscript contenant les commandes sans su
ou Sudo
et exécutez su <username> script.sh
.