Ubuntu 14.04: il nuovo utente creato dalla riga di comando presenta funzionalità mancanti


17

Sto cercando di creare un nuovo utente in Ubuntu 14.04 LTS dalla riga di comando bash. Uso i seguenti comandi:

sudo useradd -c "Samwise the Brave" sam    
sudo passwd sam    
Enter new UNIX password: hello-1234    
Retype new UNIX password: hello-1234    
passwd: password updated successfully

Dopo aver creato questo nuovo utente, ho riscontrato 3 problemi:

  1. Non riesco ad accedere a Ubuntu usando l'utente sam. Ogni volta che eseguo l'accesso, vengo rimandato alla schermata di accesso.

  2. Quando guardo il /etc/passwdfile, vedo che non ci sono shell predefinite definite per l'utente sam:

    cat /etc/passwd | grep sam    
    sam:x:1003:1003:Samwise the Brave:/home/sam:
    
  3. La cartella principale di Sam non è stata creata, ovvero /home/samnon esiste.

Qualche indizio su cosa potrebbe causare tutti questi problemi?

Devo notare qui che quando creo un utente utilizzando Unity Control Center, questi problemi non si verificano. Ma vorrei essere in grado di utilizzare la riga di comando poiché ho dozzine di utenti da creare.

Risposte:


29

Per prima cosa nota che è meglio usare adduser e non useradd.

Ora torna al tuo comando:

È necessario eseguire il comando nel modo seguente:

sudo useradd -m -c "Samwise the Brave" sam  -s /bin/bash 

man useradd

  -s, --shell SHELL
           The name of the user's login shell. The default is to leave this
           field blank, which causes the system to select the default login
           shell specified by the SHELL variable in /etc/default/useradd, or
           an empty string by default.

 -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.

Quindi ti manca usare -sper aggiungere la tua shell di accesso e il -mper creare la tua casa.

Se vuoi aggiungere più utenti contemporaneamente, è meglio usare il comando newusers. Semplifica il tuo compito.

man newusers

DESCRIPTION

   The newusers command reads a file of user name and clear-text password
   pairs and uses this information to update a group of existing users or
   to create new users. Each line is in the same format as the standard
   password file (see passwd(5)) with the exceptions explained below:

   pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell

Ecco qualche tutorial sul newuserscomando:


Perché ricevo "opzione sconosciuta m"? Sono su istanza AWS Ubuntu in esecuzione 14.04.
Donato,

2

Creare un utente

Crea la home directory dell'utente

Definire la shell di accesso

useradd -m -d /home/username username -s /bin/bash

Elimina utente

Directory home dell'utente di Deleter

userdel -r username

1

Mentre manchi le bandiere e le altre risposte non sono necessariamente errate, considera di eseguire adduser se vuoi che sia più completo in futuro. È una versione più bella di useradd. Vale a dire che creerà una home directory di default a differenza di useradd. Nota anche quando ti chiede un sacco di cose, le memorizza in linea nel file / etc / passwd e non devi riempire nulla.


1

Grazie a tutti. Con le tue risposte sono stato in grado di risolvere il problema utilizzando le seguenti righe di comando.

sudo useradd -c "Samwise the Brave" -m -s /bin/bash sam
echo -e "hello-1234\nhello-1234" | passwd sam

La password è impostata con passwdquindi è già crittografata (altrimenti "ciao-1234" sembrerebbe non crittografato in / etc / passwd).


0

Manca flag nel comando useradd. '-m' per creare la directory utente, '-s / bin / bash' per aggiungere la shell bash. L'impostazione predefinita è non creare una directory utente e assegnare la shell predefinita. Il mio sistema ha fatto la stessa cosa quando l'ho provato, quindi Ubuntu 14.04 usa vuoto come shell predefinita. Non puoi accedere perché non hai shell.

Creare la home directory predefinita per l'utente esistente nel terminale (domanda 335961, 3a risposta)

Dalla pagina man di Ubuntu per useradd

   -s, --shell SHELL
       The name of the user´s login shell. The default is to leave this
       field blank, which causes the system to select the default login
       shell.

Come si modifica la shell predefinita per TUTTI GLI UTENTI in bash? Domanda 335961

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.