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

73

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

sudo useradd -d /home/linda linda

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

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

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

No directory, logging in with HOME=/

и, действительно, домашний каталог не создан. Что мне не хватает?

Спасибо.

    
задан tchakravarty 10.11.2013 в 11:48
источник

10 ответов

79

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 .

    
ответ дан gniourf_gniourf 10.11.2013 в 12:03
источник
28

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

mkdir /home/linda
chown linda:linda /home/linda

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

    
ответ дан OmPS 10.11.2013 в 12:10
13

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

sudo -i                            #to get root privileges
mkdir /home/linda                  #to create the directory /home/linda
cp -rT /etc/skel /home/linda         #to populate /home/linda with default files and folders
chown -R linda:linda /home/linda   #to change the owner of /home/linda to user linda

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

    
ответ дан Radu Rădeanu 10.11.2013 в 13:44
6

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

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

ответ дан beanhead 10.01.2015 в 17:32
4

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

...
session required pam_mkhomedir.so

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

    
ответ дан KevinC 13.11.2013 в 21:10
4

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

sudo useradd -m linda

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

sudo useradd -m linda -s /bin/bash

    
ответ дан p1100i 21.12.2016 в 12:13
3

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

CREATE_HOME yes

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

ответ дан kavin 08.06.2015 в 08:43
1

Используйте 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!

    
ответ дан Rinzwind 10.11.2013 в 12:05
0

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

sudo useradd --create-home linda
    
ответ дан Abel Tom 17.09.2016 в 08:21
0

Наиболее вероятная причина, по которой у вас не было созданного домашнего каталога, заключается в том, что у вас не было 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
    

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

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

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

    CREATE_HOME   yes
    

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

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

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

    session  required  pam_mkhomedir.so skel=/etc/skel
    
ответ дан randominstanceOfLivingThing 17.12.2017 в 19:51