Como fazer o comando 'usermod' sem logout e login [duplicado]

8

Estou usando o fedora19 e adicionei wheel à minha conta assim.

usermod -a -G wheel ironsand

E eu fiz logout e login novamente para ter o comando de acordo com a seguinte resposta. link

Não preciso reiniciar quando altero .bashrc , se eu usar o comando source . Não há como tirar o efeito usermod da mesma forma?

    
por ironsand 16.10.2013 / 19:27

1 resposta

6

Cuidado onde você desenha suas analogias. A origem do .bashrc pode ser perigosa no sentido de que, se uma variável estiver sendo incluída, você entrará na situação em que algo assim pode ocorrer:

inicial env

PATH=/path/to/dir

env enviado

PATH=/path/to/dir:/path/to/dir

É por isso que geralmente é uma boa prática fazer logout e efetuar login novamente quando alterações fundamentais são feitas em arquivos de ambiente de baixo nível, como .bashrc e / ou .bash_profile .

Ser adicionado ou removido de grupos Unix também deve ser visto como uma alteração importante, exigindo um logout / login.

Você pode obter algum acesso, pelo menos em um único shell, fazendo também uma dessas 3 operações em relação ao grupo do Unix que está mudando:

  • su - <user>
  • su <user>
  • newgrp

O 3º método funcionará, mas exigirá que você mude cegamente para um grupo que ainda não aparece em seu ambiente existente e, então, fará com que seu grupo primário seja esse novo grupo, o que pode não ser o que você quer.

Por que

Se você der uma olhada na página man, credenciais , verá por que os processos filhos não podem ter alterações feita via usermod imediatamente refletida em tempo real:

trecho

A child process created by fork(2) inherits copies of its parent's user and groups IDs. During an execve(2), a process's real user and group ID and supplementary group IDs are preserved; the effective and saved set IDs may be changed, as described in execve(2).

    
por 16.10.2013 / 20:45

Tags