Variável env $ HOME incorreta para um usuário recém-criado

2

Na minha máquina Ubuntu, eu efetuei login como "olduser" e criei "newuser" usando o seguinte comando:

adduser --system --home /usr/share/newuser --no-create-home --ingroup newgroup --disabled-password --shell /bin/false newuser

Isso adiciona uma nova linha:

newuser:x:104:1001::/usr/share/newuser:/bin/false

ao meu arquivo /etc/passwd . Mas quando eu logar na máquina como 'newuser' (ou por sshing na máquina como newuser ou executando sudo -u newuser bash de um shell), meu diretório inicial está definido como /home/olduser .

echo $HOME

/home/olduser

O mesmo comando mencionado acima funciona como esperado em uma máquina Debian, mas não na máquina Ubuntu.

Por que isso poderia estar acontecendo?

Eu tentei alterar o diretório inicial usando o comando

usermod -m -d /usr/share/newuser newuser

Isso também não ajudou.

    
por radiantRazor 01.07.2016 / 09:22

1 resposta

2

sudo não necessariamente atualiza a variável HOME para o novo usuário. Se você quiser que HOME seja atualizado, use as opções -H ou -i . Por exemplo:

sudo -Hu newuser bash

Como alternativa, você pode adicionar essa linha ao arquivo /etc/sudoers para que sudo atualize automaticamente HOME e outras variáveis relevantes:

Defaults        env_reset

Muitas distribuições já têm env_reset como padrão.

Documentação

Da seção de man sudo que descreve as variáveis de ambiente:

HOME
Set to the home directory of the target user if -i or -H are specified, env_reset or always_set_home are set in sudoers, or when the -s option is specified and set_home is set in sudoers.

Veja também man sudoers .

    
por 01.07.2016 / 09:36