Chaque fois que j'essaie cd folder_name/
dans bash sur le répertoire tout, l'erreur suivante est générée:
-bash: cd: folder_name/: Permission denied
Les autorisations d'exécution sont données à tous les dossiers, ce qui ne semble pas être le problème. Par exemple. l'exécution de stat sur les sorties Desktop/
:
File: 'Desktop/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 807h/2055d Inode: 13107232 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/caffeine) Gid: ( 1000/caffeine)
Access: 2017-12-07 14:39:42.715820915 +0500
Modify: 2017-12-06 01:16:13.985722935 +0500
Change: 2017-12-06 01:16:13.985722935 +0500
Birth: -
Quelques autres informations éventuellement pertinentes:
mkdir
s'exécute normalement mais je ne peux pas cd
dans le nouveau dossier.rmdir
s'exécute normalement.Alors, est-ce que quelqu'un peut dire quel est le problème?
Merci d'avance.
EDIT: type -a cd
affiche le résultat suivant:
cd is a function
cd ()
{
echo "-bash: cd: $1: Permission denied"
}
cd is a Shell builtin
Vous avez probablement été victime d'une farce, éventuellement de la part de vos collègues ou d'une personne ayant accès à votre machine.
Les fonctions Bash peuvent masquer les commandes intégrées du shell d'origine comme vous pouvez le constater grâce à type -a cd
. Il vous a montré qu'il a d'abord trouvé une fonction éventuellement déclarée quelque part.
cd is a function
cd ()
{
echo "-bash: cd: $1: Permission denied"
}
cd is a Shell builtin
À partir de cette sortie, vous pouvez voir que, quelque part, une personne a déclaré une fonction Shell appelée cd
name__, qui masque désormais la commande intégrée du shell cd
name__. Dans certains cas, quelque chose comme ceci peut être utile pour rendre les commandes plus polyvalentes ou pour implémenter des fonctionnalités supplémentaires, mais dans ce cas, cela a été fait avec une intention malveillante (à mon avis). Cela aurait pu être fait à plusieurs endroits du système:
/etc/bash.bashrc
/etc/profile
/etc/profile.d/
/etc/environment
~/.bashrc
~/.profile
~/.bash_aliases
Une solution possible consiste à effectuer une recherche récursive grep
dans /etc/
et dans /home/
:
grep -r 'bash: cd: $1: Permission denied' /home/*
Sudo grep -r 'bash: cd: $1: Permission denied' /etc/*
Ce qui pourrait donner un résultat comme ça:
$ grep -r 'bash: cd: $1: Permission denied' /home/*
/home/videonauth/.bashrc: echo "-bash: cd: $1: Permission denied"
Dans cet exemple, la ligne ou la fonction semble être dans ~/.bashrc
que vous pouvez voir par le chemin menant à la sortie grep
name__. Selon que tout soit caché ou non, cela peut ou non donner un résultat. Il existe d'autres moyens de masquer une telle déclaration de fonction qui peuvent ne pas être aussi faciles à trouver.