Linux :: Aliases compartilhados em /etc/profile.d não aplicados ao usuário root, por quê?

4

Na minha máquina de programação do Fedora 14, posso adicionar um arquivo sharedAliases.sh a /etc/profile.d - tanto meu usuário quanto o usuário root têm acesso aos aliases compartilhados.

Mudar para a máquina remota do CentOS 5.7 e o que parece ser a mesma configuração, nenhum dado, o usuário root não tem acesso aos alias compartilhados.

Isso pode ser devido ao fato de que eu SSH na caixa do CentOS, não tenho certeza. De qualquer forma, a solução lame tem sido copiar aliases compartilhados no .bashrc do usuário root, já que é a única maneira que eu consegui colocar as prefs desejadas na raiz (sim, eu sei que deveria sudo, mas tenho rolado com su para anos).

Idéias apreciadas, prefeririam não ter que duplicar aliases, se possível.

    
por virtualeyes 15.10.2011 / 16:02

1 resposta

6

Must have to do with diff between su-ing over ssh vs when logged directly into machine

Suspeito que você execute o comando su sem traço ( - ) e, se for o caso, ele chamará um shell não-login interativo. Combine com você só seguindo em /root/.bashrc :

# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
    # Shell is non-interactive.  Be done now!
    return
fi

(não fonte /etc/bashrc )

ao passo que se você fizer login ou usar o su - , ele invocará um shell login , /etc/profile será lido e sharedAliases.sh será executado.

Para ver qual arquivo é lido com diferentes shells, adicione logs a todos esses arquivos executando os seguintes comandos como root:

echo "echo 'running /etc/bashrc'" >> /etc/bashrc
echo "echo 'running /etc/profile'" >> /etc/profile
echo "echo 'running /root/.bashrc'" >> ~/.bashrc

Crie um alias de teste:

# echo "alias list='ls'" > /etc/profile.d/test.sh

Agora, faça login como usuário normal e use su . Você verá algo assim:

$ su
Password: 
running /root/.bashrc
bash-3.2# list
bash: list: command not found

e com su - :

$ su -
Password: 
running /etc/profile
running /root/.bashrc
# list
total 226540
-rw-rw-r-- 1 root root     60148987 Apr  1  2011 3241948.flv
    
por 19.10.2011 / 05:55