Ubuntu 14.04: Neuer Benutzer, der über die Befehlszeile erstellt wurde, verfügt über fehlende Funktionen

17

Ich versuche, einen neuen Benutzer in Ubuntu 14.04 LTS über die Bash-Befehlszeile zu erstellen. Ich benutze die folgenden Befehle:

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

Nach dem Erstellen dieses neuen Benutzers sind drei Probleme aufgetreten:

  1. Ich kann mich mit dem Benutzer sam nicht bei Ubuntu anmelden. Immer wenn ich mich anmelde, werde ich zurück zum Anmeldebildschirm geschickt.

  2. Wenn ich in die /etc/passwdDatei schaue , sehe ich, dass für Benutzer sam keine Standard-Shells definiert sind:

    cat /etc/passwd | grep sam    
    sam:x:1003:1003:Samwise the Brave:/home/sam:
    
  3. Sams Home-Ordner wurde nicht erstellt, existiert also /home/samnicht.

Gibt es Hinweise darauf, was all diese Probleme verursachen könnte?

Ich sollte hier beachten, dass diese Probleme nicht auftreten, wenn ich einen Benutzer mit dem Unity Control Center erstelle. Ich möchte jedoch die Befehlszeile verwenden können, da ich Dutzende von Benutzern erstellen muss.

Phodor
quelle

Antworten:

29

Beachten Sie zuerst, dass es besser ist, adduser und nicht useradd zu verwenden.

Nun zurück zu Ihrem Befehl:

Sie sollten den Befehl folgendermaßen ausführen:

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.

Sie vermissen es also -s, Ihre Login-Shell hinzuzufügen und die -mzu verwenden, um Ihr Zuhause zu erstellen.

Wenn Sie mehrere Benutzer gleichzeitig hinzufügen möchten, ist es besser, den Befehl zu verwenden newusers. Es wird Ihre Aufgabe vereinfachen.

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

Hier ein Tutorial zum newusersBefehl:

Maythux
quelle
Warum bekomme ich "unbekannte Option m"? Ich arbeite auf einer AWS Ubuntu-Instanz mit 14.04.
Donato
2

Benutzer anlegen

Erstellen Sie das Basisverzeichnis des Benutzers

Login-Shell definieren

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

Benutzer löschen

Benutzerverzeichnis löschen

userdel -r username
Sai
quelle
1

Während Sie keine Flags haben und die anderen Antworten nicht unbedingt falsch sind, sollten Sie adduser ausführen, wenn Sie es in Zukunft umfassender haben möchten. Es ist eine hübschere Version von useradd. Im Gegensatz zu useradd wird hierdurch standardmäßig ein Ausgangsverzeichnis erstellt. Beachten Sie auch, dass bei der Abfrage einer Menge Daten diese in der Datei / etc / passwd gespeichert werden und Sie nichts ausfüllen müssen.

Michael Bailey
quelle
1

Vielen Dank an alle. Mit Ihren Antworten konnte ich das Problem mithilfe der folgenden Befehlszeilen beheben.

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

Das Passwort ist so eingestellt, passwddass es bereits verschlüsselt ist (andernfalls würde "hallo-1234" in / etc / passwd nicht verschlüsselt erscheinen).

Phodor
quelle
0

Im Befehl useradd fehlen Flags. '-m' zum Erstellen des Benutzerverzeichnisses, '-s / bin / bash' zum Hinzufügen der bash-Shell. Standardmäßig wird kein Benutzerverzeichnis erstellt und die Standardshell zugewiesen. Mein System hat dasselbe getan, als ich es getestet habe. Es sieht also so aus, als ob Ubuntu 14.04 Blank als Standardshell verwendet. Sie können sich nicht anmelden, da Sie keine Shell haben.

Standard-Ausgangsverzeichnis für vorhandenen Benutzer im Terminal erstellen (Frage 335961, 3. Antwort)

Von Ubuntu Manpage für 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.

Wie ändere ich die Standard-Shell für ALL USERS auf bash? Anfrage 335961

Codeguy007
quelle