Ubuntu 14.04: у нового пользователя, созданного из командной строки, отсутствуют функции

Я пытаюсь создать нового пользователя в Ubuntu 14.04 LTS из командной строки bash. Я использую следующие команды:

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 

После создания этого нового пользователя я столкнулся с тремя проблемами:

  1. Я не могу войти в Ubuntu с помощью пользователя sam. Когда я вхожу в систему, меня отправляют обратно на экран входа в систему.

  2. Когда я просматриваю файл /etc/passwd , я вижу, что для пользователя sam нет стандартных оболочек:

     cat /etc/passwd | grep sam sam:x:1003:1003:Samwise the Brave:/home/sam: 
  3. Домашняя папка Сэма не была создана, т. Е. /home/sam не существует.

Какие-нибудь подсказки о том, что может вызвать все эти проблемы?

Здесь я должен отметить, что при создании пользователя, использующего Центр управления Unity, эти проблемы не возникают. Но я хотел бы иметь возможность использовать командную строку, так как у меня есть десятки пользователей для создания.

Прежде всего обратите внимание, что лучше использовать adduser, а не useradd.

Теперь вернемся к вашей команде:

Вы должны выполнить команду следующим образом:

 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. 

Таким образом, вы пропустите использовать -s чтобы добавить свою оболочку входа и -m чтобы создать свой дом.

Если вы хотите добавить нескольких пользователей за одно и то же время, лучше использовать команду newusers . Это упростит вашу задачу.

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 

Вот несколько newusers о команде newusers :

Пытаться

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

для меня отлично работает …

В то время как вам не хватает флагов, а другие ответы не обязательно ошибочны, учитывая возможность запуска adduser, если вы хотите, чтобы он был более полным в будущем. Это более красивая версия useradd. А именно, это сделает домашний каталог по умолчанию в отличие от useradd. Также обратите внимание, когда он запрашивает тонны вещей, он сохраняет это в файле / etc / passwd, и вам не нужно заполнять его.

Всем спасибо. С вашими ответами я смог исправить проблему, используя следующие командные строки.

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

Пароль установлен с passwd поэтому он уже зашифрован (иначе «hello-1234» не будет зашифрован в / etc / passwd).

Запустить эту команду

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

описание в командах man

  -c, --comment COMMENT Any text string. It is generally a short description of the login, and is currently used as the field for the user's full name. -d, --home-dir HOME_DIR The new user will be created using HOME_DIR as the value for the user's login directory. The default is to append the LOGIN name to BASE_DIR and use that as the login directory name. The directory HOME_DIR does not have to exist but will not be created if it is missing. -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. -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. 

В команде useradd отсутствуют флаги. '-m', чтобы создать пользовательский каталог, '-s / bin / bash', чтобы добавить оболочку bash. По умолчанию не создается каталог пользователя и назначается оболочка по умолчанию. Моя система делала то же самое, когда я тестировал ее, поэтому похоже, что Uubuntu 14.04 использует пустую оболочку по умолчанию. Вы не можете войти, потому что у вас нет оболочки.

Создайте домашний каталог по умолчанию для существующего пользователя в терминале (вопрос 335961, 3-й ответ)

Из Ubuntu Manpage для 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. 

Как вы изменяете оболочку по умолчанию для ВСЕХ ПОЛЬЗОВАТЕЛЕЙ для bash? Вопрос 335961

Создать пользователя

Создать домашний каталог пользователя

Определение оболочки входа в систему

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

Удалить пользователя

Домашний каталог пользователя Deleter

 userdel -r username