sudo: command not found
Je suis en train d'exécuter screen
comme un autre utilisateur à l'aide de sudo
.
Je suis l'aide de la commande:
echo 'userpassword' | /usr/bin/sudo -u 'myuser' -S '/usr/bin/screen -ls'
Toute aide trouvés sur l'internet indique que le sudo
efface les variables d'environnement (comme PATH
). J'ai donc décidé d'utiliser le chemin d'accès complet aux applications, mais je suis encore en train de la commande pas trouvé erreur.
Erreur:
sudo: /usr/bin/screen -ls: command not found
Sudo est installé sur le système.
L'écran est installé sur le système.
Pour sudo
, j'ai essayé le -E
et -H
drapeau, mais il ne l'aide pas.
J'ai tenté de PATH
variable en utilisant quelque chose comme ceci:
... | /usr/bin/sudo -u 'myuser' -S 'env PATH=$PATH; /usr/bin/screen -ls'
Soi-disant le $PATH
était supposé s'étendre avant de la commande s'exécute, mais j'ai été faire d'autres erreurs...
Quelqu'un peut-il fournir une commande qui me permettra d'exécuter des commandes en tant qu'autre utilisateur et d'expliquer ce que chaque partie de la commande n'afin que je puisse comprendre?
Grâce.
Veuillez mettre à jour la question de l'exacte (copier-coller) message d'erreur. BTW,
sudo
n'est pas complètement réinitialiser $PATH
; sur mon système, il la définit /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Je vais voter pour fermer cette question hors-sujet parce que c'est pas une question de programmation. Essayez de Unix & Linux.
Ok, je vais le déplacer.
sudo
est d'essayer de trouver de l'ensemble de la chaîne env PATH=$PATH....
en une seule commande à la place d'une commande et les paramètres. sudo
ne reset PATH
. Dans mon test sudo env
le résultat est PATH=/sbin:/bin:/usr/sbin:/usr/bin
et mon CHEMIN est totalement différent de celui que. Essayez sudo -u 'myuser' -S PATH=$PATH /usr/bin/screen -ls
. Noter l'absence de guillemets dans la commande.OriginalL'auteur Bradley Odell | 2016-07-14
Vous devez vous connecter pour publier un commentaire.
Essayer,
Probablement que vous avez remplacé la variable de chemin tout en essayant de définir une nouvelle variable de chemin d'accès.
Aller de l'avant, faire "echo $PATH" avant d'ajouter une nouvelle variable de chemin d'accès.
OriginalL'auteur Siena
Il ne le semble y avoir aucun besoin d'encapsuler commande entre guillemets, sans eux, il fonctionne même.
echo 'userpassword' | /usr/bin/sudo -u 'myuser' -S screen -ls
échappe à tous les espaces entre les guillemets.
Je ne le pense pas. Il ajoute simplement des guillemets simples autour d'elle.
oups. J'ai voulu dire, il s'échappe de devis existants. J'aurais juste copié et collé le texte à partir de là php.net/manual/en/function.escapeshellarg.php
OriginalL'auteur BorysekOndrej