В этом кратком руководстве объясняется, как создать домашний каталог для существующего пользователя в 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 команду, которая автоматически создаст домашние каталоги пользователей без каких-либо параметров.
Большое спасибо, коллега
Как создать локального пользователя, чтобы его домашний каталог сформировался только после первого входа.