Por que minha variável $ PATH para root é diferente quando uso o su root

4

Quando eu estava tentando rodar o chkconfig como um usuário comum (no CentOS 5) eu percebi que não podia acessá-lo porque o diretório sbin não está no meu $ PATH. Quando eu su para root ainda não funciona. Eu percebo que a variável $ PATH é a mesma do usuário comum que eu mudei.

No entanto, quando faço login como root para começar, a variável $ PATH é a correta para o root e posso executar o comando.

Isso deveria funcionar dessa maneira? Como posso fazer um usuário comum ter acesso temporário a comandos que só podem ser executados como root?

Obrigado

    
por Ron 19.08.2010 / 01:30

3 respostas

18

Tente usar o comando su - . O - significa que o novo shell terá um ambiente do usuário para o qual você mudou. Se você não usá-lo, a maior parte do seu ambiente permanecerá a mesma.

A página man do su diz:

The optional argument - may be used to provide an environment similar to what the user would expect had the user logged in directly.

    
por 19.08.2010 / 01:34
0

Root e User possuem ambientes totalmente diferentes e distintos. Usando o sudo, você tem a capacidade de executar comandos restritos, mas mantendo as variáveis do ambiente intocadas.

Por outro lado, su, digamos que carrega o ambiente da raiz. É quase como se autenticar como root.

Sobre a sua pergunta, você pode fazer um usuário regular para poder "ver" os comandos, mas não executá-los. você ainda precisa de privilégios de root para isso.

por exemplo, você pode executar o ifconfig como um usuário comum, apenas para ver o seu ip, mas se você quiser mudar algo, então você deve ter privilégios apropriados.

    
por 19.08.2010 / 01:44
0

Eu acho que é normal, cada usuário tem sua própria variável PATH e você pode alterá-lo para o usuário em seu perfil, se precisar.

Em relação a permitir que um usuário execute comandos reservados para root, é possível usar setuid bit , mas pode ser perigoso ( setuid ). Se o usuário tiver permissão de execução (por exemplo, por meio de grupo) em um arquivo de propriedade root com conjunto de bits setuid, ele executará esse arquivo com as permissões do proprietário (root) e não com suas próprias permissões. Não tenho certeza de que funciona em todas as distribuições porque, de acordo com os documentos, muitas distribuições não a respeitam devido a riscos de segurança, mas funciona no Ubuntu pelo menos.

    
por 19.08.2010 / 01:35