2 votes

Comment quitter le super utilisateur à partir du milieu de Shell Shell ?

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 ?

1voto

LetMeSOThat4U Points 607

Si vous ne voulez pas spécifier le mot de passe à chaque fois, ajoutez sesu zu sudoers et exécuter la commande que vous voulez de cette façon :

sudo su -c "command string"

De cette façon command string fonctionne en tant que super-utilisateur (root, etc.).

1voto

MariusMatutiae Points 45233

La commande

    exit

ferme le Shell actuel. Si vous exécutez une Shell comme utilisateur X puis est passé à un utilisateur Y , salida ferme la Shell dans laquelle vous étiez Y et vous ramène à l'état de X

0voto

Kai Points 356

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.

0voto

Tfb9 Points 103

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X