Домашний каталог не создается

Я пытаюсь понять системное администрирование в Ubuntu. Итак, в качестве примера я создаю фиктивного пользователя, используя

sudo useradd -d /home/linda linda

и passwd чтобы создать пароль. Я проверяю, что запись была сделана с помощью cat /etc/passwd

linda:x:1004:1004::/home/linda:/bin/sh

Однако, когда я su - linda, я получаю

No directory, logging in with HOME=/

и действительно, никакой домашний каталог не был создан. Что я упускаю из виду?

Спасибо.

man useradd состояния:

useradd is a low level utility for adding users. On Debian,administrators should usually use adduser(8) instead.

Обратите внимание на low level utility

Чтобы добавить пользователя, используйте adduser вместо. Это утилита более высокого уровня.


Более того, глядя на -d вариант:

   -d, --home 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.

The directory will not be created if it is missing.

Как правило, держитесь подальше от useradd, использовать adduser вместо.

вы можете исправить это, просто создав домашнюю директорию.

mkdir /home/lindachown linda:linda /home/linda

попробуйте войти в систему еще раз, и это должно сработать.

В соответствии с man useradd, -d /home/linda опция не приведет к созданию каталога /home/linda, если это отсутствует. Итак, вы должны создать его вручную. Для этого выполните следующие команды в терминале:

sudo -i                            #to get root privilegesmkdir /home/linda                  #to create the directory /home/lindacp -rT /etc/skel /home/linda         #to populate /home/linda with default files and folderschown -R linda:linda /home/linda   #to change the owner of /home/linda to user linda

Смотрите также: Как создать домашнюю папку пользователя после создания учетной записи?

Смотреть на /etc/defaults/useradd если вы хотите изменить значения по умолчанию. Воспользуйся:

useradd -m -d /home/joe -s /bin/bash.

Воспользуйся -m вместо -d, таким образом, каталог будет создан для вас:

sudo useradd -m linda

Кроме того, если linda является обычным пользователем, вы можете захотеть, чтобы она использовала /bin/bash по умолчанию shell:

sudo useradd -m linda -s /bin/bash

Вы также можете изменить /etc/pam.d/common-session чтобы сделать так, чтобы домашний каталог пользователя создавался при первом входе в систему. Добавьте в этот файл следующую строку.

...session required pam_mkhomedir.so

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

Добавьте нижеприведенную запись в /etc/login.defs и спасти:

CREATE_HOME yes

Теперь попробуйте создать учетные записи пользователей. Он создаст домашний каталог.

Наиболее вероятная причина, по которой у вас не был создан домашний каталог, заключается в том, что у вас не было CREATE_HOME yes в /etc/login.defs.

Вы можете исправить это, следуя тому, что предложили @OmPS или @Radu Rădeanu.

Но так много способов преодолеть эту проблему в будущем, используя одну из приведенных ниже команд:

  • Результат sudo adduser linda

    Adding user 'linda'Adding new group 'linda' (1001) ...Adding new user 'linda' (1001) with group 'linda' ...Creating home directory '/home/linda' ...Copying files from '/etc/skel' ...****Password confirmation********Name prompt****

    Значения по умолчанию для adduser выбираются из /etc/adduser.conf если--home опция не указана.Обратите внимание, что он также копирует /etc/skel содержание.

  • Используйте adduser с --home

    sudo adduser --home /home/linda

То же, что и в предыдущем варианте, за исключением того, что это может потребоваться, если каталог usershome отличается от назначенного вами имени пользователя.

  • Укажите базовый каталог для useradd команда:

    sudo useradd -b /home
  • Используйте login.defs: Измените /etc/login.defs и добавьте строку ниже, прежде чем делать sudo useradd:

    CREATE_HOME   yes

Примечание: если вы это сделаете man login.defs, в настоящее время в нем говорится

Большая часть функций, которые раньше предоставлялись набором теневых паролей, теперь обрабатывается PAM. Таким образом, /etc/login.defs больше не используется passwd(1) или меньше используется login(1) и su(1). Пожалуйста, вместо этого обратитесь к соответствующим файлам конфигурации PAM.

  • Используйте модуль pam_mkhomedir PAM: из man pam_mkhomedir страницу, добавьте строку ниже в /etc/pam.d/login:

    session  required  pam_mkhomedir.so skel=/etc/skel

Воспользуйся adduser.

DESCRIPTION adduser  and  addgroup  add users and groups to the system according to   command    line    options    and    configuration    information    in   /etc/adduser.conf.   They  are  friendlier  front ends to the low level   tools like useradd, groupadd and usermod programs, by default  choosing   Debian  policy conformant UID and GID values, creating a home directory   with skeletal configuration, running a custom script,  and  other  fea‐   tures.  adduser and addgroup can be run in one of five modes:

useradd вы должны добавить все опции самостоятельно. Включая разрешения и некоторые другие вещи.adduser делает это на основе разумных значений по умолчанию (а также добавляет домашний каталог сам по себе).

Если вам нужно использовать adduser, вам, вероятно, понадобится опция -b вместе с опцией -d!

Если /home/linda отсутствует, прежде чем вы добавите Линду в качестве пользователя, вам также придется добавить --create-home.

sudo useradd --create-home linda