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

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


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.


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.


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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.