Criar diretório inicial padrão para o usuário existente no terminal

151

Como eu faço isso? Criei um usuário sem um diretório inicial e agora quero criar um. Não é apenas uma pasta chamada new_user, quero o diretório inicial padrão com todas as suas pastas e arquivos ocultos, etc.

Jo Rijo
fonte
Quando o usuário efetua login, esses subdiretórios (Documentos, Downloads, etc ...) serão criados automaticamente. Embora eu esteja procurando maneiras de "simular" seu login através do terminal.
Alaa Ali
@Alaa su new_user: D
Radu Rădeanu
1
@ RaduRădeanu sim, eu já tentei isso, também tentei, sudo -i -u new_usermas não funciona. Eu acho que precisamos "simular um login X" ... não sei como fazer isso.
Alaa Ali
2
o login não cria os subdiretórios em casa.
Jo Rijo

Respostas:

231

Use o seguinte (como root ou com sudo, se não for root):

mkhomedir_helper username

Para que isso funcione, a pasta /home/usernamenão deve existir.

Para pastas relacionadas ao X (área de trabalho, downloads, etc.), você precisará fazer login em um ambiente gráfico; eles serão gerados automaticamente na primeira vez que você fizer login.

kavadias
fonte
1
Simples e útil. Dessa forma, você também pode ter certeza de que o diretório doméstico recém-criado é compatível com as políticas do sistema, sem nunca conhecê-las ou fazer qualquer reparo manual.
gerlos
Esta é a resposta correta, pelo menos funcionou para mim no Ubuntu 14.04.2 LTS.
Christian Wilkie
1
Eu precisava primeiro ter meu nome de usuário em / etc / passwd antes que isso funcionasse para mim.
user79878
3
Simples .. apenas funciona (tm). Deve ser a resposta aceita
Newtopian 15/03
Não se esqueça de verificar as permissões do diretório com ls -l /home. Eu descobri que o novo diretório era legível por todos os outros usuários, então removi essas permissões com chmod go-r-x /home/username.
Don Kirkby
33

Os subdiretórios (Documentos, Downloads, etc ...) são criados automaticamente quando o usuário efetua login pelo GNOME, desde que o diretório inicial seja criado com as permissões corretas. Aqui está uma demonstração:

alaa @ aa-lu: ~ $ sudo useradd testinguser
 alaa @ aa-lu: ~ $ sudo passwd testinguser
Digite a nova senha do UNIX:
Digite novamente a nova senha UNIX:
passwd: senha atualizada com sucesso
alaa @ aa-lu: ~ $ sudo ls -l / home
20 total
drwxr-xr-x 55 alaa alaa 4096 22 de agosto 22:00 alaa
drwx ------ 2 root root 16384 5 de jun 09:46 perdido + encontrado
alaa @ aa-lu: ~ $ sudo mkdir / home / testinguser
 alaa @ aa-lu: ~ $ sudo chown testinguser: testinguser / home / testinguser
 alaa @ aa-lu: ~ $ ls -l / home
24 total
drwxr-xr-x 55 alaa alaa 4096 22 de agosto 22:00 alaa
drwx ------ 2 root root 16384 5 de jun 09:46 perdido + encontrado
Clique no botão abaixo para habilitar o envio de mensagens com dicas e receitas para você!
alaa @ aa-lu: ~ $ ls -l / home / testinguser /
0 total
alaa @ aa-lu: ~ $

Você pode verificar se o diretório inicial do usuário está definido corretamente, marcando a entrada /etc/passwd. Por padrão, você deve ver o diretório inicial definido como /home/testinguser:

alaa @ aa-lu: ~ $ grep testinguser / etc / passwd
testinguser: x: 1001: 1001 :: / home / testinguser : / bin / sh

Se você não vir o diretório inicial /home/testinguser, precisará executar o comando sudo usermod -d /home/testinguser testinguserpara atualizá-lo, embora não precise usar esse comando, pois ele deve ser definido por padrão (de acordo com useraddas páginas de manual do usuário).

Saí da minha conta e entrei novamente com testinguser, e aqui estão os subdiretórios criados automaticamente:

alaa @ aa-lu: ~ $ ls -l / home / testinguser /
36 total
Como instalar o drwxr-xr-x 2 no Windows 10?
drwxr-xr-x 2 testinguser testinguser 4096 23 de agosto 10:05 Documentos
Como instalar o drwxr-xr-x 2 no seu computador?
Drwxr-xr-x 2 testinguser testinguser 4096 23 de agosto 10:05 Música
drwxr-xr-x 2 testinguser testinguser 4096 23 de agosto 10:07 Fotos
Como instalar o drwxr-xr-x 2 no Windows 10?
drwxr-xr-x 2 testinguser testinguser 4096 23 de agosto 10:05 Modelos
drwxr-xr-x 2 testinguser testinguser 4096 23 de agosto 10:05 Vídeos

Não precisei copiar o conteúdo de /etc/skel.

Se possível, tente seguir estas etapas, criando outro novo usuário? Quando terminar, você pode remover esse novo usuário por sudo deluser testinguser && sudo rm -r /home/testinguser.

Se tudo isso não funcionou com você, acho que é um bug.

Alaa Ali
fonte
Em algumas situações, quando você usa useradd, o diretório inicial padrão do novo usuário não é definido automaticamente como /home/username. Então, primeiro o ypu deve ter certeza disso.
Radu Rădeanu 23/08
Você pode me dar um exemplo dessas situações =)? Nas páginas de manual de useradd: "useradd usará o diretório base especificado pela variável HOME em /etc/default/useradd, ou /homepor padrão". A variável HOME in /etc/default/useraddnão é definida por padrão, portanto o useradd sempre usará /home. De qualquer forma, vou editar minha resposta e mover a parte para verificar /etc/passwd.
Alaa Ali
Um exemplo aqui . Outro exemplo: você exclui um usuário, mas não excluiu seus diretórios e arquivos; e você adiciona novamente um usuário com o mesmo nome. E há muitos, e não há erros :)
Radu Rădeanu
Se você não tem /bin/shna linha de usuário /etc/passwdque você tem que adicionar um shell para esse usuário, por exemplo, o shell padrão comusermod -s /bin/sh testuser
rubo77
Nem todos os sistemas têm o GNOME e sugerir alguém para remover e adicionar novamente um usuário simplesmente para criar um diretório inicial é um mau conselho.
Ntwrkguru # 4/18
12

ATUALIZAÇÃO: A solução está quebrada e não está funcionando para mim também.

Se você deseja criar o diretório inicial do usuário, se ele não existir, execute o useraddcomando com o -msinalizador Isso copiará todos os arquivos do /etc/skeldiretório.

useradd -m username

Pode ser necessário definir as configurações do seu sistema. De acordo com a página do manual:

  -m, --create-home
    Create the user's home directory if it does not exist. The files and directories
    contained in the skeleton directory (which can be defined with the -k option)
    will be copied to the home directory.

    By default, if this option is not specified and CREATE_HOME is not enabled, no
    home directories are created.

e indica ainda:

CONFIGURATION

   The following configuration variables in /etc/login.defs change the behavior
   of this tool:

   CREATE_HOME (boolean)
       Indicate if a home directory should be created by default for new users.
construtor
fonte
8
isso parece tentar criar um novo usuário, porque ele diz que "o usuário 'novo usuário' já existe".
Jo Rijo
Também testei o -msinalizador ao criar um novo usuário, e ele não funcionou; apenas copia os arquivos do esqueleto.
Alaa Ali
@ Jo: E como isso está incorreto, porque de acordo com o post inicial, o usuário já existe.
Crafter
3
Esta resposta não resolve o problema. A cópia /etc/skelnão cria os subdiretórios no diretório inicial. Além disso, useradd -mé usado ao criar um novo usuário, não quando o usuário já foi adicionado.
Alaa Ali
Atualizei a postagem, então defina CREATE_HOME como yes no arquivo de configuração login.defs.
Crafter
5

Se você criou o novo usuário com o addusercomando, não precisa criar um diretório inicial para o novo usuário. Um diretório inicial nomeado com o nome do usuário no /homediretório, com os seguintes subdiretórios: Área de trabalho, Downloads, Documentos, Música, Imagens, Vídeos (e outros), para o novo usuário, será criado automaticamente.

Se você criou o novo usuário com o useraddcomando, execute os seguintes comandos no terminal:

sudo -i     #enter your user password when you are asked
gedit /etc/passwd

editar /etc/passwdarquivo como raiz (esta é a etapa mais importante). Encontre a linha com o nome do novo usuário e defina o diretório inicial padrão para ele algo como isto:

new_username:x:1001:1001::/home/new_username:/bin/sh

Nesta linha, você também pode adicionar um nome real para o novo usuário ou definir o shell padrão. Algo assim:

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash

Cuidado, não faça outras alterações.

Depois de salvar o arquivo, antes de sair da conta raiz, execute os seguintes comandos:

mkdir /home/new_username                                #to create the directory /home/new_username
cp -r /etc/skel/. /home/new_username                    #to copy skeleton files to /home/new_username
chown -R new_username:new_username /home/new_username   #to change the owner of /home/new_username to the new user

Depois de tudo isso, a pasta pessoal do novo usuário será preenchida automaticamente após o primeiro login.

Consulte também: Como criar a pasta base do usuário após a criação da conta?

Radu Rădeanu
fonte
Tanto quanto me lembro, a pasta inicial não é criada automaticamente, você deve criá-la manualmente e atualizar a entrada do usuário /etc/passwd(se ainda não estiver lá). Depois que o usuário efetuar login, a pasta inicial será preenchida automaticamente com esses subdiretórios. No entanto, tudo isso é resolvido: alguém adiciona um usuário usando adduser, em vez de useradd.
Alaa Ali 22/08/2013
@ Laa Acabei de testar há alguns dias e usei adduser: a pasta pessoal é criada automaticamente. E, de fato, a pasta pessoal será preenchida automaticamente após o primeiro login.
Radu Rădeanu
isso parece não fazer nada. talvez eu tente o script bash da outra pergunta, mas não consegui simplesmente criar uma pasta em / home / chamada new_user e copiar o conteúdo de / etc / skel? é isso que esse script bash faz?
Jo Rijo
@JoRijo eu editei minha resposta.
Radu Rădeanu 23/08
@ RaduRădeanu, você não quer dizer cp /etc/skel/* /home/new_username? Além disso, existe uma razão para você usar dois chowncomandos consecutivos ?
Alaa Ali
3

Tudo o que você precisa é a pasta pessoal para que ela funcione. Como raiz,

cd /home
cd mkdir username
chown username username
chgrp username username

O login pela primeira vez deve criar todos os arquivos necessários, que parecem ser os seguintes:

drwxr-xr-x 16 fotanus fotanus 4096 Jun  4 17:46 .
drwxr-xr-x  9 root    root    4096 Jun  4 17:43 ..
drwx------ 11 fotanus fotanus 4096 Jun  4 17:46 .cache
drwx------ 13 fotanus fotanus 4096 Jun  4 17:46 .config
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Desktop
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Documents
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Downloads
drwx------  3 fotanus fotanus 4096 Jun  4 17:46 .gconf
drwxrwxr-x  2 fotanus fotanus 4096 Jun  4 17:46 .gstreamer-0.10
-rw-------  1 fotanus fotanus  334 Jun  4 17:45 .ICEauthority
drwxr-xr-x  3 fotanus fotanus 4096 Jun  4 17:45 .local
drwx------  4 fotanus fotanus 4096 Jun  4 17:45 .mozilla
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Music
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Pictures
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Public
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Templates
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Videos
-rw-------  1 fotanus fotanus   55 Jun  4 17:45 .Xauthority
-rw-------  1 fotanus fotanus  711 Jun  4 17:45 .xsession-errors
fotanus
fonte