Defina uma variável de ambiente global no Linux que fica quando vai raiz

2

Quando eu for SSH em uma caixa do Linux, quero que o arquivo /etc/profile salve os resultados do comando whoami em uma variável de ambiente global.

Se eu fosse fazer root com o comando sudo su - , eu não quero que o comando seja executado novamente quando for root. Eu quero que ele use o resultado de whoami com meu nome de usuário regular antes de ir root, e preciso acessar essa variável como o usuário root mesmo que ele execute o arquivo /etc/profile novamente quando for root.

O que posso fazer para executar esse comando apenas uma vez no comando /etc/profile ?

    
por Scott 25.06.2011 / 07:04

2 respostas

5

Preservar as variáveis de ambiente após um shell de login requer a opção -m . Preservar as variáveis de ambiente após o sudo requer uma alteração em env_keep em / etc / sudoers . Mesmo assim, fazer isso é duvidoso.

Felizmente, existem outras maneiras de fazer isso. Por exemplo, seu tty é de propriedade do usuário com o qual você efetuou login inicialmente. Então, adicionando isso ao final de / etc / profile:

TTY=$(tty)
if [ -n "$TTY" ]; then
    WHOAMI='ls -al $TTY | awk '{print $3}''
fi

Você configurará a variável WHOAMI para o proprietário do tty, se houver um, passando pelo sudo e pelo sudo su para o root:

[corman@localhost ~]$ sudo su -
Password:
[root@localhost ~]# echo $WHOAMI
corman
[root@localhost ~]# logout
[corman@localhost ~]$ su -
Password:
[root@localhost ~]# echo $WHOAMI
corman
[root@localhost ~]#
    
por 25.06.2011 / 08:03
3

Você também pode usar logname em vez de whoami !

    
por 25.06.2011 / 17:31

Tags