Comando para alterar o diretório inicial padrão de um usuário

203

Gostaria de saber se existe algum comando shell simples para alterar o diretório inicial do usuário no Linux / Unix (um semelhante ao chsh que altera o shell de login padrão de um usuário válido existente) sem tocar no /etc/passwdarquivo. obrigado

Ibrahim Quraish
fonte
Por que você não quer tocar no /etc/passwdarquivo? Você precisará!
Basile Starynkevitch
11
stackoverflow.com/questions/20071714/... , diz que usermod -d /home/userxx /home/useryya mudança linux diretório de login padrão para / home / useryy
Ibrahim Quraish
2
Por que você pergunta sobre o diretório inicial padrão ? Deseja alterar o diretório inicial de um usuário existente específico ou de todos os usuários adicionados no futuro? Observe que chshnão altera o shell de login padrão , mas apenas o shell de login de um determinado usuário ... Para alterar o HOMEde um usuário em particular, basta editar/etc/passwd
Basile Starynkevitch

Respostas:

351

O comentário de Ibrahim na outra resposta é a maneira correta de alterar o diretório inicial de um usuário existente.

Altere o diretório inicial do usuário:

usermod -d /newhome/username username

usermodé o comando para editar um usuário existente.
-d(abreviação de --home) alterará o diretório inicial do usuário.

Alterar o diretório inicial do usuário + Mova o conteúdo do diretório atual do usuário:

usermod -m -d /newhome/username username

-m(abreviação de --move-home) moverá o conteúdo do diretório atual do usuário para o novo diretório.

STW
fonte
1
Não apenas movo o conteúdo, como também movo a pasta inteira = a pasta original ( /home/usernamenormalmente) é removida.
Betlista 04/07/19
2
@STW Esta é uma tarefa reversível? Ou seja, se eu apenas executá-lo uma vez e depois inverter os parâmetros, meu diretório inicial será exatamente do jeito que era antes?
22818 DanGordon
1
@ DanGordon, o que você colocar no /newhome/usernameargumento será o diretório inicial do usuário. Você pode configurá-lo de volta ao diretório inicial anterior, se souber o que era, mas não há opção "desfazer".
STW
3
A ordem das opções para o segundo comando está incorreta. usermod -m -d /newhome/username usernametrabalho.
Snozzlebert 21/10/19
@Dominik graças - há uma chance de que é diferente com base em OS (Mac vs Linux vs BSD, etc), é claro que também pode apenas estar incorreta
STW
28

No Linux, altere o diretório inicial do usuário padrão ao adicionar um novo usuário :

Simplesmente abra este arquivo usando um editor de texto, digite:

vi /etc/default/useradd

O diretório inicial padrão definido pela variável HOME, localize a linha da seguinte maneira:

HOME=/home

Substituir com:

HOME=/iscsi/user

Salve e feche o arquivo. Agora você pode adicionar usuário usando o comando useradd regular:

# useradd vivek
# passwd vivek

Verifique as informações do usuário:

# finger vivek
Maximin
fonte
82
usermod -m -d /path/to/new/login/home/dir user muda diretório home do usuário existente para um novo diretório de login que é criado se ele não existir, a opção -m move o conteúdo do diretório atual para o novo diretório home
Ibrahim Quraish
23

A resposta aceita está com defeito, pois o conteúdo da pasta inicial do usuário não é movido usando-a. Vou adicionar outra resposta para corrigi-lo:

sudo usermod -d /newhome/username -m username

Você não precisa criar a pasta com nome de usuário e isso também moverá seus arquivos da pasta inicial do usuário para a pasta / newhome / username.

Sukrit Gupta
fonte
4

Caso outros leitores procurem informações sobre o addusercomando.

Editar /etc/adduser.conf

Definir DHOMEvariável

rafaelvalle
fonte
0

Descobriu que isso interrompe alguns aplicativos, a melhor maneira de fazer isso é

Além do link simbólico, em distribuições e sistemas de arquivos mais recentes, como root, você também pode usar bind-mount:

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

Isso é útil para permitir o acesso "através" do diretório / home aos subdiretórios via daemons que, de outra forma, são configurados para evitar percorrer links simbólicos (apache, ftpd, etc.).

Você precisa se lembrar (ou script de inicialização) para ligar as reinicializações, é claro.

Um exemplo de script init /etc/fstabé

/extra-home/username /home/username none defaults,bind 0 0
Wilken
fonte
-1

usermod -m -d / newhome nome de usuário

Ahmed Kay
fonte
5
Por favor, explique sua resposta com mais detalhes.
T. Short