J'ai également eu ce problème parfois, avec des commandes de base telles que cd. Utilisation du dzdo cdretour de "commande introuvable". Bien sûr , je compris plus tard que cding dans un répertoire que je ne dispose pas des autorisations dans, ne va pas aider beaucoup, donc je soit besoin d' un shell root ou besoin de dzdo ls, dzdo mvetc. le contenu de l' extérieur que dir.
Wildcard
2
Le problème sudo cdest que cdc'est une commande intégrée, pas un programme. Si vous voulez aller dans un répertoire auquel vous n'avez pas accès et (par exemple) y renommer un fichier, vous pouvez faire (par exemple) sudo mv dir/oldfile dir/newfileousudo sh -c "cd dir; mv oldfile newfile" .
G-Man dit `` Réintègre Monica ''
Réponses:
13
Lorsque vous sudo, vous obtenez un préconfiguré $PATH, qui est (censé être) quelque chose comme le chemin par défaut de l'utilisateur root . Votre programme ne figure pas dans cette liste de répertoires identifiés par $PATH.
sudo essaie d'être en sécurité lors de l'exécution de commandes externes.
Il existe deux façons distinctes de gérer les variables d'environnement. Par défaut, l'
option env_resetsudoers est activée. Cette commande causes à exécuter avec un environnement minimal contenant TERM,
PATH, HOME, SHELL, LOGNAME, USERet USERNAMEen plus des variables du processus appelant autorisés par les env_checket env_keepsudoers options. Il existe effectivement une liste blanche pour les variables d'environnement.
Si vous ne pouvez pas configurer sudopour conserver votre $PATH, la solution de contournement habituelle consiste à spécifier le chemin d'accès complet du programme. Cela peut ne pas fonctionner correctement avec des scripts qui appellent d'autres exécutables dans le répertoire (non accessible).
Vous devez spécifier le chemin complet. C'est aussi plus sûr; Si vous ne spécifiez pas le chemin, il est concevable qu'un attaquant puisse créer un autre programme qui sera exécuté avec les autorisations root.
De plus, vous devez mettre une ligne /etc/sudoerspour le permettre. man sudoerspour la syntaxe, c'est beaucoup trop à mettre ici.
cd
. Utilisation dudzdo cd
retour de "commande introuvable". Bien sûr , je compris plus tard quecd
ing dans un répertoire que je ne dispose pas des autorisations dans, ne va pas aider beaucoup, donc je soit besoin d' un shell root ou besoin dedzdo ls
,dzdo mv
etc. le contenu de l' extérieur que dir.sudo cd
est quecd
c'est une commande intégrée, pas un programme. Si vous voulez aller dans un répertoire auquel vous n'avez pas accès et (par exemple) y renommer un fichier, vous pouvez faire (par exemple)sudo mv dir/oldfile dir/newfile
ousudo sh -c "cd dir; mv oldfile newfile"
.Réponses:
Lorsque vous
sudo
, vous obtenez un préconfiguré$PATH
, qui est (censé être) quelque chose comme le chemin par défaut de l'utilisateur root . Votre programme ne figure pas dans cette liste de répertoires identifiés par$PATH
.Voir par exemple
sudo
conserver $ PATH?PATH
)Si vous ne pouvez pas configurer
sudo
pour conserver votre$PATH
, la solution de contournement habituelle consiste à spécifier le chemin d'accès complet du programme. Cela peut ne pas fonctionner correctement avec des scripts qui appellent d'autres exécutables dans le répertoire (non accessible).la source
Vous devez spécifier le chemin complet. C'est aussi plus sûr; Si vous ne spécifiez pas le chemin, il est concevable qu'un attaquant puisse créer un autre programme qui sera exécuté avec les autorisations root.
De plus, vous devez mettre une ligne
/etc/sudoers
pour le permettre.man sudoers
pour la syntaxe, c'est beaucoup trop à mettre ici.la source