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

113

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

    
por Jo Rijo 22.08.2013 / 20:54

5 respostas

170

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

mkhomedir_helper username

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

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

    
por kavadias 05.11.2014 / 20:48
30

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

alaa@aa-lu:~$ sudo useradd testinguser
alaa@aa-lu:~$ sudo passwd testinguser
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
alaa@aa-lu:~$ sudo ls -l /home
total 20
drwxr-xr-x 55 alaa alaa  4096 Aug 22 22:00 alaa
drwx------  2 root root 16384 Jun  5 09:46 lost+found
alaa@aa-lu:~$ sudo mkdir /home/testinguser
alaa@aa-lu:~$ sudo chown testinguser:testinguser /home/testinguser
alaa@aa-lu:~$ ls -l /home
total 24
drwxr-xr-x 55 alaa        alaa         4096 Aug 22 22:00 alaa
drwx------  2 root        root        16384 Jun  5 09:46 lost+found
drwxr-xr-x  2 testinguser testinguser  4096 Aug 23 10:03 testinguser
alaa@aa-lu:~$ ls -l /home/testinguser/
total 0
alaa@aa-lu:~$

Você pode verificar se o diretório pessoal do usuário está definido corretamente, marcando a entrada em /etc/passwd . Você deve, por padrão, ver o diretório home 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 home /home/testinguser lá, você precisará executar o comando sudo usermod -d /home/testinguser testinguser para atualizá-lo, embora você não precise usar este comando porque ele deve ser definido por padrão (de acordo para manpages useradd ).

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

alaa@aa-lu:~$ ls -l /home/testinguser/
total 36
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Desktop
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Documents
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Downloads
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Music
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:07 Pictures
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Public
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Templates
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Videos

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

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

Se tudo isso não funcionou com você, acredito que seja um bug.

    
por Alaa Ali 23.08.2013 / 08:22
12

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

Se você deseja criar o diretório pessoal do usuário, se ele não existir, execute o comando useradd com o sinalizador -m . Isso copiará todos os arquivos do diretório /etc/skel .

useradd -m username

Você pode precisar definir configurações para o seu sistema. De acordo com a página man:

  -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.
    
por crafter 22.08.2013 / 21:54
4

Se você criou o novo usuário com o comando adduser , não será necessário criar um diretório base para o novo usuário. Um diretório pessoal nomeado com o nome do usuário no diretório /home , com os seguintes subdiretórios: Desktop, 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 comando useradd , execute os seguintes comandos no terminal:

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

para editar o arquivo /etc/passwd como root (este é o passo mais importante). Encontre a linha com o nome do novo usuário e configure o diretório inicial padrão para ele assim:

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 parecido com isto:

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 /etc/skel/* /home/new_username                             #to copy copy files from the /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 inicial do novo usuário será preenchida automaticamente após o primeiro login.

Veja também: Como tornar a pasta pessoal do usuário após a conta criação?

    
por Radu Rădeanu 22.08.2013 / 21:18
3

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

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

Fazer o login pela primeira vez deve criar todos os arquivos necessários, que parecem ser aqueles:

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
    
por fotanus 04.06.2014 / 22:49