'Permissão negada' quando eu cd em qualquer pasta

5

Sempre que eu tento cd folder_name/ no bash em qualquer diretório, ele apresenta este erro:

-bash: cd: folder_name/: Permission denied

As permissões de execução são dadas a todas as pastas, portanto, esse não parece ser o problema. Por exemplo. executando stat em Desktop/ outputs:

  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: -

Algumas outras informações possivelmente relevantes:

  1. Eu posso ler ou gravar arquivos em qualquer diretório sem qualquer problema.
  2. mkdir é executado normalmente, mas não consigo cd na nova pasta.
  3. rmdir é executado normalmente.
  4. Eu posso abrir um terminal em uma determinada pasta, navegando para essa pasta e abrindo um terminal a partir dele.

Então, alguém pode dizer qual é o problema?

Obrigado antecipadamente.

EDITAR: type -a cd mostra a seguinte saída:

cd is a function
cd () 
{ 
    echo "-bash: cd: : Permission denied"
}
cd is a shell builtin
    
por Awais Chishti 08.12.2017 / 07:47

1 resposta

2

Você provavelmente é a vítima de uma brincadeira, possivelmente feita por seus colegas de trabalho ou por alguém que tenha acesso à sua máquina.

As funções de bash podem sombrear os comandos internos do shell original como você pode ver como você fez type -a cd . Ele mostrou que primeiro encontrou uma função que possivelmente é declarada em algum lugar.

cd is a function
cd () 
{ 
    echo "-bash: cd: : Permission denied"
}
cd is a shell builtin

A partir desta saída, você pode ver que em algum lugar alguém declarou uma função de shell chamada cd , que ilumina agora o comando interno do shell cd . Em alguns casos, algo como isto pode ser útil para tornar os comandos mais versáteis ou implementar funcionalidade extra, mas neste caso foi feito com mal intencionado (meu palpite). Isso poderia ter sido feito em vários lugares no sistema:

  • /etc/bash.bashrc
  • /etc/profile
  • qualquer arquivo em /etc/profile.d/
  • /etc/environment
  • ~/.bashrc
  • ~/.profile
  • ~/.bash_aliases
  • qualquer outro arquivo que seja executado ou originado desses arquivos

Uma maneira possível de encontrar isso talvez seja fazer uma pesquisa grep recursiva em /etc/ e em /home/ :

grep -r 'bash: cd: : Permission denied' /home/*
sudo grep -r 'bash: cd: : Permission denied' /etc/*

Que pode gerar uma saída assim:

$ grep -r 'bash: cd: : Permission denied' /home/*
/home/videonauth/.bashrc:    echo "-bash: cd: : Permission denied"

Neste exemplo, a linha ou função parece estar em ~/.bashrc , que você pode ver pelo caminho que leva a grep output. Dependendo de quão suficiente a coisa toda está escondida, isso pode ou não produzir um resultado. Existem outras maneiras de ocultar essa declaração de função, que pode não ser tão fácil de encontrar.

    
por Videonauth 08.12.2017 / 16:44