J'ai un Shell Shell dans lequel la plupart des commandes doivent être exécutées sous sesu
et je dois ensuite exécuter certaines commandes en tant qu'utilisateur actuel. Pouvez-vous m'aider ?
Réponses
Trop de publicités?Vous pouvez utiliser su
pour passer à un autre utilisateur et le -c
pour exécuter la commande, par exemple
su anotherUser -c "ls /"
Vérifiez si vous avez sudo
et voyez si vous pouvez l'utiliser dans votre cas. L'exemple de su ci-dessus demandera le mot de passe d'un autreUser, et cela pourrait être ennuyeux.
J'ai été dans une situation similaire récemment. Voici ce que j'ai fait pour passer au niveau super-utilisateur immédiatement lorsqu'un script est appelé, et ensuite effectuer des tâches d'utilisateur normal. Je pense que cela peut vous aider à trouver un moyen d'arriver à la solution souhaitée :
#!/bin/bash
# generic_sudo.sh
# Tool that demonstrates in-then-out of sudo
# This demo is pointless if called with 'sudo generic_sudo.sh'
# Need root priviledges for some superuser work
if (( EUID != 0 )); then # If the user is not "root":
# In general one should use ((..)) for testing numbers and integer variables, and [[..]] for testing strings and files.
sudo $0 # Relaunch it as "root".
EXITCODE=$?
printf "su mode OFF.\n" # If we got here, we left superuser mode
printf "EUID is: %d\n" $EUID
printf "Exit code %d\n" $EXITCODE
exit $EXITCODE # Once it finishes, exit gracefully.
else
printf "su mode ON.\n"
fi # End if.
printf "EUID is: %d\n" $EUID
# Some superuser work
printf "Some superuser work was done.\n"
exit 0