GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je exécuter une série de commandes dans un sous-shell bash en tant qu'autre utilisateur utilisant sudo ?

Exécutez un shell dans sudo :sudo bash -c 'whoami; whoami'

Vous pouvez utiliser n'importe quel caractère sauf ' lui-même à l'intérieur des guillemets simples. Si vous voulez vraiment avoir un guillemet simple dans cette commande, utilisez '\'' (ce qui techniquement est :end single-quote literal, literal ' caractère, début d'un littéral entre guillemets simples ; mais effectivement c'est un moyen d'injecter un guillemet simple dans une chaîne littérale à guillemets simples).


Vous pouvez passer les commandes en tant qu'entrée standard dans bash sudo avec un document ici :

sudo bash <<"EOF"
whoami
id
EOF

De cette façon, il n'est pas nécessaire de jouer avec les citations correctes, surtout si vous avez plusieurs niveaux, par exemple :

sudo bash <<"EOF"
whoami
echo $USER ~
sudo -u apache bash <<"DOF"
whoami
echo $USER ~
DOF
EOF

Produit :

root
root /root
apache
apache /usr/share/httpd

(Notez que vous ne pouvez pas mettre en retrait le terminateur interne - il doit être seul sur sa ligne. Si vous souhaitez utiliser l'indentation dans un document ici, vous pouvez utiliser <<- au lieu de << , mais vous devez alors indenter avec des tabulations, pas des espaces.)


par exemple essayez ceci, je l'ai testé :

sudo bash -c "cd /;ls;ls|grep o"

Dans cet exemple, vous changez d'abord dir en /root, listez ensuite le répertoire racine et enfin pour le répertoire racine, filtrez uniquement les répertoires dont le nom contient la lettre 'o'.

Mais je pense que la meilleure façon est d'écrire un script qui fait tout ce dont vous avez besoin et donne un code de sortie pour toutes les actions complexes. Ensuite, vous pouvez créer un script sudo à la place d'un groupe de commandes uniques comme dans l'exemple ci-dessus.


Linux
  1. Comment puis-je utiliser des commandes aliasées avec xargs ?

  2. Comment exécuter la commande bash avec les privilèges sudo en Java ?

  3. Comment puis-je ajouter un utilisateur régulier au fichier sudoers ?

  4. Comment puis-je exécuter plusieurs commandes lors de l'utilisation de find ?

  5. Comment lister les dossiers à l'aide des commandes bash ?

Exécutez des commandes en tant qu'autre utilisateur via Sudo sous Linux

Comment contrôler Vagrant Box à l'aide des commandes Vagrant

Comment afficher l'historique des commandes d'un autre utilisateur sous Linux ?

Exécuter automatiquement le script bash sous les privilèges d'un autre utilisateur

Comment ssh en tant qu'autre utilisateur

Comment puis-je chown un fichier à un subuid sans sudo