Conclusão automática para diretórios inacessíveis

5

Estou tentando obter um preenchimento automático para pastas que eu não tenho permissão para visualizar / inserir. Meu primeiro pensamento foi usar compgen e sudo para fazer a conclusão manualmente, mas parece com compgen é um shell embutido, então lançá-lo com o sudo pode não funcionar.

Além disso, se eu escrevi a função de conclusão personalizada para pastas, como posso substituir todos os comandos? Eu não quero fazer o comando complete para tudo.

Ou existem formas alternativas?

EDITAR

Isso é útil em um ambiente onde você concede permissão ao usuário sudo (para executar comandos arbitrários), mas não quer que eles façam o login / su como root, então quando eles precisam navegar para algumas pastas acessíveis apenas pelo root, eles pode visualizar rapidamente o conteúdo sem executar comandos como sudo ls XX

    
por daisy 31.03.2013 / 08:17

2 respostas

3

Eu recomendaria usar uma sessão interativa de sudo como alternativa; use

sudo -i

ou

sudo -s

para obter um shell de root.

sudo -s manterá seu ambiente atual (por exemplo, $HOME ainda é o diretório inicial de seu usuário normal), enquanto sudo -i simulará um login inicial como raiz, portanto, por exemplo, $HOME apontará para /root .

Adaptar a conclusão da aba do seu usuário normal para trabalhar com o sudo may ser possível, mas parece um pouco problemático: se você não usou sudo nos últimos 15 minutos, ele poderia avisá-lo para sua senha enquanto você está tentando usar a conclusão da guia , ou simplesmente não funcionaria e você teria que executar o sudo manualmente para atualizar o cache de credenciais antes que ele pudesse funcionar novamente. Além disso, eu não sei como fazer isso e com certeza parece ser uma solução complicada para um problema simples:)

    
por 13.09.2013 / 23:38
0

O que você realmente está pedindo é uma execução de shell restrita com privilégios elevados. O problema é que o shell bash que o usuário está executando não tem permissão para obter essas listagens de diretórios, de modo que não possa alavancar o preenchimento automático.

Se você estiver abrindo diretórios inteiros para certas pessoas com acesso sudo, crie um grupo para essas pessoas e defina a permissão rX adequadamente (ou use facls).

Se você estiver fornecendo apenas comandos específicos no sudo, os usuários poderão fazer isso:

sudo -l

para obter uma listagem. Alguém esperto pode ser capaz de traduzir a saída de 'sudo -l' em algo que o auto-completar bash pode manipular, mas ainda não o vi. (E, novamente, isso só funcionaria se você estivesse especificando os comandos explicitamente.)

Se você está literalmente fazendo como em seu exemplo (dando às pessoas sudo apenas para ls) então vá em frente e faça todos os diretórios especificados + rx para essas pessoas ...

    
por 14.09.2013 / 05:13

Tags