Pourquoi ne puis-je pas cd dans un répertoire?

14

J'utilise Ubuntu 10.04.2 LTS. Pourquoi je ne peux pas cddans le /var/wwwrépertoire?

david@ubuntu:/var$ pwd
/var

david@ubuntu:/var$ ls -l
drwxrwxr-- 13 root root  4096 2011-02-26 21:53 www

david@ubuntu:/var$ cd www
-bash: cd: www: Permission denied

david@ubuntu:/var$ sudo cd www
sudo: cd: command not found
davidjhp
la source
2
cdest un shell intégré donc sudone peut pas être utilisé.
pause jusqu'à nouvel ordre.
Et même s'il pouvait être utilisé, ce serait inutile. Il n'y a généralement aucun moyen de faire changer un répertoire de travail à un autre processus, donc quoi que l' cdexécutable puisse faire, il ne peut pas changer le processus shell 'cwd.
David Schwartz

Réponses:

13

Vous avez besoin d'une autorisation d'exécution pour cd dans un répertoire.

sudo chmod o+x /var/www
Cakemox
la source
3
Un petit éclaircissement: dans l'exemple ci-dessus, root (l'utilisateur) et root (le groupe) ont le bit d'exécution défini. Ainsi, les membres de la racine du groupe peuvent se connecter sur www. L'utilisateur david ne peut pas cd car il n'est pas inclus dans les membres du groupe racine. Vous pouvez l'inspecter en consultant le contenu de / etc / group
adamo
1

Il y a une raison pour interdire aux «autres» d'entrer dans l'annuaire, non? Je suggère donc d'obtenir un accès root pour entrer dans ce répertoire, faire des choses et le laisser, en laissant tomber le sudo shell.

sudo -i 
cd /var/www
# do your thing
cd -
exit
Utilisateur inconnu
la source
1

Juste un peu plus d'informations, il serait judicieux de créer un utilisateur Web et un groupe pour votre système et de ne pas avoir de services exécutés en tant que root. Ensuite, vous pouvez également ajouter des utilisateurs à ce groupe si nécessaire et ne pas accorder de privilèges root.

Mike
la source