Como alterar o diretório inicial do usuário conectado no momento

17

No momento, estou logado em um servidor CentOS e gostaria de mudar meu diretório pessoal de /home/myuserName/para/var/www/html/

Eu tentei o comando abaixo:

> sudo usermod -d /var/www/html myuserName

Mas isso me dá um erro:

usermod: user myUserName is currently logged in
Mohan
fonte
2
Não tenho certeza do que você quis dizer, HOME=/var/www/htmlmudará para a sessão o seu diretório de casa.
Archemar 04/02
Isso ajuda, mas eu gostaria de alterar meu diretório pessoal permanentemente, não apenas para a sessão atual.
Mohan

Respostas:

17

resposta curta : você não pode.

resposta longa :

HOMEdir está definido no /etc/passwd6º campo. É lido após o loggin, seu shell é iniciado com este diretório inicial.

A maneira correta de alterar o diretório home de joe é:

  • joe faça logoff.
  • use usermod -d /new/home joe para alterar o diretório inicial da sessão subseqüente.

Depois que a sessão é executada, você deve fazer duas coisas:

  • edite $HOMEpara alterar o diretório inicial da sessão (a ser repetido em todas as sessões ativas).
  • use sudo vipwpara editar o diretório home da próxima sessão

Além disso, saiba que você pode ter um problema com permissões / propriedade em /var/www/html

Archemar
fonte
1
editar / etc / passwd sempre funcionou para mim. Veja @ 7171u abaixo
jeffmcneill 30/03
editando / etc / passwd sem logoff / logon?
Archemar 30/03
editando / etc / passwd para uma conta que está conectada e inicie uma nova sessão com a mesma conta, e ela obedece ao novo diretório inicial. Para a conta já conectada, essa sessão ainda possui o local inicial antigo no Ambiente.
31417 Jefferson
8

O comando usermod não funcionará se você estiver conectado ao usuário em que está tentando fazer alterações.

Na página de manual do usermod, diz:

O CAVEATS usermod não permitirá que você altere o nome de um usuário conectado. Você deve garantir que o usuário nomeado não esteja executando nenhum processo quando este comando estiver sendo executado se o ID numérico do usuário estiver sendo alterado. Você deve alterar o proprietário de qualquer arquivo crontab manualmente. Você deve alterar o proprietário de qualquer um dos trabalhos manualmente. Você deve fazer alterações que envolvam o NIS no servidor NIS.

Tente fazer login com um usuário diferente e execute o comando novamente.

Se isso não for possível, você poderá editar manualmente o arquivo / etc / passwd (que é realmente o que o comando usermod está fazendo). Se você fizer isso, certifique-se de fazer o backup do arquivo, caso inadvertidamente faça algo bobo.

MattM
fonte
7

Você precisa editar o /etc/passwdarquivo para alterar o diretório inicial dos usuários que estão conectados no momento.

Edite o diretório /etc/passwdwith sudo vipwe altere o diretório inicial do usuário.

vipwaltamente recomendado, exceto vimoutros editores, pois vipwdefinirá o bloqueio para evitar qualquer corrupção de dados.

7171u
fonte
2

Algumas soluções possíveis, dependendo do que você espera resolver:

Opção 1. Adicione HOME=/var/www/htmlao seu .bashrc

Opção 2. Renomeie /home/myusernamee crie um link simbólico para o diretório desejado.

mv /home/myusername /home/myusername-old
ln -s /var/www/html /home/myusername
Dax Kerchner
fonte
Coelho mal. depois disso, myusername-old não pode ser usado por outro usuário
GeoMint 3/18/18
-2

Você só pode fazer isso temporariamente. Isso significa que toda vez que você efetua login como usuário, você deve executar este comando:

export HOME=/var/www/html

Dessa forma, você pode fazer a maioria dos aplicativos pensar que seu diretório pessoal é o local que você usa acima.

~também começará a apontar para /var/www/html.

As aplicações com as quais isso funcionou foram NPM e Maven.

Gelo derretido
fonte