Como posso fazer cd em um diretório como root?

9

Digamos que há um diretório que não tenho privilégios para acessar. Obviamente, sudo cd foo não funcionará, porque cd é um shell embutido em cada shell de todos os tempos.

Até agora, eu acabei de usar sudo bash (sim, eu sei que existem maneiras melhores) para obter um prompt root. Então, posso cd no diretório para pesquisar.

Existe uma maneira melhor de fazer isso?

    
por strugee 22.06.2013 / 09:11

3 respostas

11

Não, não há uma maneira de cd em um diretório que permita somente o root sem ser o root. Não deveria haver muitos diretórios com essa limitação. Na maioria das vezes, é o acesso a um determinado arquivo que é limitado, como o arquivo /etc/shadow ou arquivos de log específicos em /var/log .

Você pode usar sudo ls <dir> para vê-los em vez de bash . Além disso, ao usar sudo para se tornar root, você geralmente deseja definir o usuário ( su command) em vez de bash , portanto, use este comando:

$ sudo su -

Você também pode realizar a mesma coisa com a opção -i de sudo:

$ sudo -i

trecho da man page referente a sudo -i

The -i (simulate initial login) option runs the shell specified in the passwd(5) entry of the target user as a login shell. This means that login-specific resource files such as .profile or .login will be read by the shell. If a command is specified, it is passed to the shell for execution. Otherwise, an interactive shell is executed.

Para os arquivos que você não pode acessar, você pode usar um desses comandos sudo :

$ sudo tail /var/log/messages

$ sudo less /etc/shadow
    
por 22.06.2013 / 10:59
5

Não, não há. Você precisa de um shell executando como root.

    
por 22.06.2013 / 09:14
0

Certo, você não pode. Aqui está uma solução alternativa:

sudo sh -c "cd restricted-dir; some_command"
    
por 07.11.2015 / 07:02