Создать домашний каталог для существующего пользователя в Linux

В этом кратком руководстве объясняется, как создать домашний каталог для существующего пользователя в Linux и Unix-подобных операционных системах с помощью команды mkhomedir_helper.

Как вы уже знаете, мы можем создать нового пользователя в Linux и Unix-подобных системах с помощью команды adduser, верно? Да все верно! Когда мы добавляем нового пользователя, по умолчанию автоматически создается домашний каталог для соответствующего пользователя.

Есть еще одна команда для создания пользователей в Linux. Это так useradd. После того, как я создал несколько пользователей с помощью команды useradd в Alpine Linux, я заметил, что каталоги $HOME для пользователей не создаются. Я не знал этого раньше. Прочитав справочные страницы команды useradd, я понял, что мне следовало включить -m (или --create-home) опцию для создания новых пользователей в каталоге $HOME, как показано ниже:

$ sudo useradd -m user_name

Или же

$ sudo useradd --create-home user_name

Но я забыл включить эту опцию и создал несколько новых пользователей. Если вы похожи на меня, не удаляйте существующих пользователей и создавайте их заново с помощью опции -m. Вы можете легко создать домашний каталог для существующего пользователя в Linux с помощью команды mkhomedir_helper, не удаляя и не воссоздавая пользователя.

mkhomedir_helper вспомогательная программа для модуля pam_mkhomedir. Модуль pam_mkhomedir PAM создаст домашний каталог пользователя, если он не существует в начале сеанса. Сначала этот модуль создает домашние каталоги, а затем заполняет их содержимым указанного каталога skel. Значение по умолчанию umask — это 0022, а значение по умолчанию для пути к skel — /etc/skel.

Позвольте мне показать вам пример, чтобы объяснить, как создать домашний каталог для существующего пользователя с помощью mkhomedir_helper.

Во-первых, давайте создадим нового пользователя с именем ostechnix, используя команду useradd:

$ useradd ostechnix

Установите пароль для пользователя:

$ passwd ostechnix

Теперь переключитесь на нового пользователя:

$ su - ostechnix

Вы увидите следующее сообщение об ошибке:

su: warning: cannot change directory to /home/ostechnix: No such file or directory

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

Давайте проверим это, заглянув в /homeкаталог:

$ ls -l /home/
total 0
drwx------ 1 vagrant vagrant 72 Dec 15 13:19 vagrant

Что ж, это правда, что у пользователя ostechnix нет домашнего каталога.

Итак, давайте создадим домашний каталог для существующего пользователя (то есть ostechnix в нашем случае) с помощью команды mkhomedir_helper.

Для этого сначала выйдите из системы пользователя ostechnix, если вы уже вошли в систему:

$ exit

И выполните следующую команду, чтобы создать домашний каталог для пользователя с именем ostechnix :

$ sudo mkhomedir_helper ostechnix

Обратите внимание, что вы должны выполнить указанную выше команду как root пользователь или другой sudo пользователь.

Теперь переключитесь на пользователя ostechnix:

$ su - ostechnix

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

[ostechnix@archlinux ~]$ pwd
/home/ostechnix

Для получения дополнительных сведений см. справочные страницы:

$ man mkhomedir_helper

Теперь вы знаете, как создавать домашние каталоги после создания пользователей. Это может быть полезно, если вы забыли включить -m параметр при создании пользователей с помощью команды useradd.

Вместо использования useradd вы можете использовать adduser команду, которая автоматически создаст домашние каталоги пользователей без каких-либо параметров.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

2 комментария

  1. Олег Ответить

    Как создать локального пользователя, чтобы его домашний каталог сформировался только после первого входа.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *