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

Почему реализация что-то уже реализованное? Используйте Ehcache.

Однако , если сторонние библиотеки полностью вне рассмотрения, я предполагаю, что Вы надеетесь реализовывать структуру данных, которая выглядит примерно так:

  • В основном HashMap (расширяется HashMap, если Вы будете)
  • , Каждое значение в Карте указывает на объект в отсортированном списке, на основе которого больше всего используется.
  • Объекты, недавно используемые, добавляются к заголовку списка - O(1)
  • Производящий чистку последний использованный, означает усекать конец списка - O(1)
  • , Все еще дает Вам поиски Карты, но все еще сохраняет недавно используемые объекты сначала...

76
задан 11.04.2015, 05:06

10 ответов

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.

0
ответ дан 19.04.2019, 15:24
  • 1
    В OP' s защита, когда я считал " На Debian, " я думал, что это означало на Debian в противоположность дистрибутивам Ubuntu. Я знаю, что Ubuntu основан на Debian, но думал, что различие делалось. – Mactilda 16.05.2015, 05:11
  • 2
    Я использовал adduser, но тем не менее созданный корневой каталог только содержит файл examples.desktop и ничто иное. Как я могу заставить Ubuntu создавать папки Desktop по умолчанию, Загрузки и так далее? (I' m зарегистрированный на пути ssh) – Mactilda 14.08.2015, 00:35
  • 3
    Привет, жаль последний ответ и только предположение, но я думаю те папки, создаются автоматически на первом входе в систему GUI. Просто люди мысли могли бы все еще приземлиться здесь;) – Scott Boston 06.11.2017, 19:59
  • 4
    adduser не создаст каталог также, если кто-то изменил CREATE_HOME в/etc/login.defs к " no". можно переопределить это с эти -m флаг. – Mactilda 12.06.2018, 11:35

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

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

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

0
ответ дан 19.04.2019, 15:24

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

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

0
ответ дан 19.04.2019, 15:24
  • 1
    " Соответственно с человеком useradd,-d/home/linda опция не создаст каталог,/home/linda" так не, это не решение. – Ivan Yang 03.11.2017, 01:59

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

sudo useradd -m linda

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

sudo useradd -m linda -s /bin/bash

0
ответ дан 19.04.2019, 15:24

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

...
session required pam_mkhomedir.so

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

0
ответ дан 19.04.2019, 15:24

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

sudo useradd --create-home linda
0
ответ дан 19.04.2019, 15:24

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

CREATE_HOME yes

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

0
ответ дан 19.04.2019, 15:24
  • 1
    Это работало на меня. У меня должен был быть основной сценарий, который будет удаленно добавлять/управлять пользователей на различных разновидностях Linux. После этого изменения мой код приводит к тем же результатам на всех серверах. Спасибо. – ypriverol 18.02.2016, 14:36

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

0
ответ дан 19.04.2019, 15:24

Наиболее вероятная причина, по которой вы не создали домашний каталог, заключается в том, что у вас не было 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: измените /etc/login.defs и добавьте строку ниже перед выполнением [ 1114]:

    CREATE_HOME   yes
    

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

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

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

    session  required  pam_mkhomedir.so skel=/etc/skel
    
0
ответ дан 19.04.2019, 15:24

В соответствии с 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

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

0
ответ дан 19.04.2019, 15:24

Теги

Похожие вопросы