Existe-t-il une commande sur une seule ligne pour faire `su`?
15
Je peux faire un suavec su <username>et il me demande mon mot de passe. Existe-t-il un paramètre de mot de passe pour suque je ne sois pas invité à entrer un mot de passe?
Si vous voulez écrire un script qui s'exécute en tant qu'utilisateur différent, quelque chose comme ça fonctionne, bien qu'il affiche le mot "mot de passe" sans retour à 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
!
Obtention de l' erreur: su: must be run from a terminal.
Abhishek Kashyap
5
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 comme su <username> -p <password>, il serait stocké en texte brut dans votre historique bash. Il s'agit certainement d'un énorme problème de sécurité.
Si vous devez exécuter des commandes avec su(ou sudo) de manière automatisée, écrivez un script shell contenant les commandes sans suou sudoet exécutezsu <username> script.sh
@DaiKaixian oui, mais il n'est enregistré nulle part et personne ne peut le lire
Wayne_Yux
2
vous pouvez essayer quelque chose comme echo <passwd> | sudo -S <command-line>:. Bien que ce ne soit pas sûr, mais cela fonctionne.
Dai Kaixian
1
le point entier de ma réponse est qu'il n'est pas possible d'écrire un mot de passe dans une commande. Je conseille donc de ne pas le faire
Wayne_Yux
-3
Si vous souhaitez exécuter certaines commandes spécifiques en tant que nouvel utilisateur, utilisez la commande suivante: sudo -u {username} {command to be executed as the new user}
superuser
ici, superuser.com/questions/67765/…Réponses:
Si vous voulez écrire un script qui s'exécute en tant qu'utilisateur différent, quelque chose comme ça fonctionne, bien qu'il affiche le mot "mot de passe" sans retour à la sortie standard
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 à
la source
su: must be run from a terminal
.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 comme
su <username> -p <password>
, il serait stocké en texte brut dans votre historique bash. Il s'agit certainement d'un énorme problème de sécurité.Si vous devez exécuter des commandes avec
su
(ousudo
) de manière automatisée, écrivez un script shell contenant les commandes sanssu
ousudo
et exécutezsu <username> script.sh
la source
su root script
doivent encore entrer passwd.echo <passwd> | sudo -S <command-line>
:. Bien que ce ne soit pas sûr, mais cela fonctionne.Si vous souhaitez exécuter certaines commandes spécifiques en tant que nouvel utilisateur, utilisez la commande suivante:
sudo -u {username} {command to be executed as the new user}
la source