Existe uma maneira de executar o cd
comando com privilégios de superusuário para obter acesso aos diretórios pertencentes ao root? Quando eu corro sudo cd <path>
, eu consigo sudo: cd: command not found
.
relate perguntas
-
Como eu faria minha máquina Linux parecer que está executando o Windows?
-
Existe um equivalente a cd - para cp ou mv?
-
execute o contêiner do docker como root
-
Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux
-
Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?
Como você observou,
cd
é um comando interno do shell e há uma razão para isso: o "diretório atual" é um parâmetro por processo que só pode ser alterado pelo próprio processo .O diretório de trabalho do seu shell não pode ser alterado por nenhum processo filho - portanto, mesmo que você consiga executar
cd
em um subshell privilegiado, ele mudará apenas o diretório de trabalho desse subshell temporário e não importa qual método de aumento de privilégios você usa.Portanto, para
sudo cd
funcionar, o próprio sudo teria que ser um shell embutido e precisaria de alguma forma para aumentar os privilégios de um processo já em execução. Atualmente, tal mecanismo não existe no Linux (nem na maioria dos outros sistemas operacionais).Uma maneira de conseguir o que você deseja é executar um shell interativo com privilégios de root (qualquer método funciona) e apenas usar o regular
cd
nele:Se você quiser fazer tudo em um único comando, deve ter a seguinte aparência - primeiro altere o diretório de trabalho e inicie um shell interativo:
Nota: O comando externo não precisa ser um shell, apenas precisa ser algo que altere seu diretório de trabalho e execute um novo comando. Os sistemas Linux recentes têm um ou dois auxiliares que podem ser usados:
A vantagem desse método é que ele não requer aspas aninhadas; você pode executar um comando de várias palavras sem ter problemas com espaços em branco ou caracteres especiais.
Por fim, alguns programas têm uma opção integrada para alterar seu diretório de trabalho:
A outra resposta não está errada.
Possivelmente uma resposta melhor é:
A ferramenta sudo destina-se a executar ações como um superusuário, e você está descrevendo algo que é mais uma mudança de estado que precederia ações como 'ls' ou 'vi' ou outras para torná-las mais simples.
Sugiro, por exemplo, se você quiser editar um arquivo em /root/private/:
Isso é definitivamente mais digitação e um pouco mais difícil do que apenas mudar de diretório. No entanto, é muito mais auditável e muito mais alinhado com os princípios por trás do sudo do que executar alguma variante do 'sudo bash'.
Se você estiver trabalhando em um ambiente seguro, sua equipe de IA agradecerá. Se você se perguntar: "Que mudança eu fiz outro dia?", então você vai agradecer, porque você não terá que se perguntar qual arquivo ou arquivos você editou.
Tudo isso dito, ativar e executar alguma forma de 'sudo bash' é definitivamente mais fácil. Se você estava procurando mais fácil, por que está usando 'sudo' em primeiro lugar, em vez de apenas fazer login como root?
A maneira mais rápida de fazer o que eu precisava fazer era esta:
Conforme descrito nesta resposta .
Claro, basta fazer isso:
A chave é a
-c
opção que executa os comandos citados depois disso-c
.