web-dev-qa-db-fra.com

Comment exécuter cd en tant que superutilisateur

Je souhaite effectuer un cd dans un répertoire du terminal, mais l'accès est refusé et taper Sudo cd (directory) renvoie une erreur indiquant que Sudo ne prend pas en charge la commande cd. Je peux utiliser Sudo gnome-terminal pour lancer une nouvelle fenêtre de terminal avec les privilèges root, mais je souhaite utiliser une solution utilisable à partir de la même fenêtre de terminal non root. Est-il possible de rendre la commande cd compatible avec sudo?

1
cheesits456

J'ai bien peur qu'il ne soit pas possible d'utiliser cd avec Sudo directement. Sudo peut appeler des exécutables, par exemple Sudo ls, mais cd est une commande intégrée du shell. En d’autres termes, un fichier contient le script exécutable pour ls (/bin/ls), mais il n’existe aucun fichier pour cd, vous ne pouvez donc pas utiliser cd avec Sudo.

2
Henning Kockerbeck

Eh bien, vous pouvez certainement exécuter la commande suivante:

Sudo sh -c "cd somedirectory"

et techniquement, vous avez changé le répertoire actuel du sous-shell lancé. Le problème est que le sous-shell se fermera immédiatement et que votre shell principal n'aurait pas changé de répertoire.

Le problème principal est que si vous ne pouvez pas cd accéder à un répertoire, vous ne pouvez pas y exécuter de shell avec votre compte actuel.

Une solution de contournement consiste à basculer vers un compte d'utilisateur disposant de ce droit, et root est bien entendu le choix le plus simple:

Sudo sh -c "cd somedirectory; sh"
0
jlliagre