- Как узнать домашнюю директорию любого пользователя Linux
- Где хранится системная информация о домашних каталогах пользователей в Linux
- Команда pwd в Unix
- Оператор ~ (тильда) в Debian
- 👥 Как создать домашний каталог для существующего пользователя Linux
- Создание домашнего каталога по умолчанию для существующего пользователя
- Заключение
- How to Find User’s Home Directory in Linux or Unix
- Ways to Find User’s Home Directory in Linux
- Navigating to the Home Directory Traditionally
- Find User’s Home Directory Using Cd Command
- Создать домашний каталог для существующего пользователя в Linux
Как узнать домашнюю директорию любого пользователя Linux
Для того, чтобы правильно и безопасно хранить данные на сервере, (особенно, если на этом сервере несколько пользователей), следует точно знать, где располагаются их домашние папки, до которых у пользователей есть доступ (у каждого в свою, но нет доступа в чужие папки с чужими данными). Например, для того, чтобы дать пользователю доступ по ftp только к его данным или подсказать полный путь до его www-директории. В этой статье рассмотрим то, как узнать домашнюю директорию любого пользователя Linux несколькими способами.
Где хранится системная информация о домашних каталогах пользователей в Linux
При создании нового пользователя в Unix-системах, каждому пользователю обязательно домашний каталог. О том, где и как располагается запись о домашней директории пользователя в файле /etc/passwd , подробно описано в → этой статье. Для понимания вопроса сейчас требуется знать, что это предпоследнее (шестое) поле home в строке записи пользователя в этом файле:
login : password : UID : GID : GECOS : home : shell
Поэтому, можно в цикле обходить этот файл в поиске записи нужного пользователя, разбивать строку на подстроки и брать значение 6-го поля. Но это слишком длинный способ. Есть короче и проще. 😉
Команда pwd в Unix
Команда pwd выводит текущий путь к директории, в которой находится пользователь. Выполнив команду pwd , получим этот путь:
У пользователя root в Unix по умолчанию домашней директорией является /root .
Оператор ~ (тильда) в Debian
Другой способ того, как определить домашнюю директорию текущего пользователя. Достаточно посмотреть значение оператора ~ (тильда):
Результат не сильно отличается от предыдущего, но к ~ можно добавлять дополнительные пути к папкам и/или файлам пользователя, используя её как точку отсчёта в домашней директории пользователя. Что сильно облегчает работу с написанием относительных путей (относительно не только корня файловой системы, но и корня домашней папки пользователя).
Ещё одним полезным свойством ~ является то, что с помощью этого оператора можно получить путь до домашней директории любого пользователя в системе (если конечно пользователь есть в системе, то есть прописан в файле /etc/passwd , например посмотреть содержимое домашнего каталога пользователя ftp можно так, поставив перед ним тильду ~ :
А теперь посмотреть содержимое этого файла:
[email protected]:~# cat ~ftp/welcome.msg Welcome, archive user %U@%R ! The local time is: %T This is an experimental FTP server. If you have any unusual problems, please report them via e-mail to .
Ну и то, к чему мы стремились: посмотреть путь к домашней директории пользователя:
Так гораздо удобнее, чем парсить и разбирать файл /etc/passwd . За нас всю эту работу делает операционная система! 😉
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! 😉
👥 Как создать домашний каталог для существующего пользователя Linux
По умолчанию, когда вы создаете пользователя в Linux, домашний каталог создается в каталоге /home.
Возможно вы заметили, что в производных дистрибутивах Ubuntu и Debian команда useradd по умолчанию не будет создавать домашний каталог.
Давайте представим ситуацию, что вы уже создали пользователя, но домашний каталог отсутствует.
В этом руководстве я покажу вам, как создать домашний каталог по умолчанию для существующего пользователя в системах Linux.
Создание домашнего каталога по умолчанию для существующего пользователя
В примере я использую Ubuntu 20.04 и собираюсь создать пользователя с именем ‘bob’ с помощью команды useradd:
$ grep bob /etc/passwd bob:x:1003:1003::/home/bob:/bin/sh $
Если я попытаюсь войти в систему от этого пользователя, используя su -, система показывает logging in with Home=/
Это означает, что домашний каталог пользователя не создан.
$ su - bob Password: No directory, logging in with HOME=/ $
В Linux домашним каталогом пользователя по умолчанию является /home.
Чтобы создать домашний каталог по умолчанию, используйте команду mkhomedir_helper.
Обязательно запустите команду mkhomedir_helper от имени пользователя root или пользователя с доступом sudo.
$ sudo mkhomedir_helper bob
$ ls -al /home/bob total 20 drwxr-xr-x 2 bob bob 4096 Jun 1 02:26 . drwxr-xr-x 5 root root 4096 Jun 1 02:26 .. -rw-r--r-- 1 bob bob 220 Jun 1 02:26 .bash_logout -rw-r--r-- 1 bob bob 3771 Jun 1 02:26 .bashrc -rw-r--r-- 1 bob bob 807 Jun 1 02:26 .profile
В графической среде (например, GNOME или XFCE), если вам не хватает подкаталогов в домашнем каталоге, пользователь должен выйти из системы и войти обратно.
При первом входе пользователя в систему все подкаталоги, такие как папки Pictures, Documents, Videos, и Downloads , могут быть созданы в домашнем каталоге.
Другой метод – удалить пользователя и создать нового пользователя с помощью параметра -m или –create-home.
Следующая команда создает домашнюю папку (-m) и задаст указанный домашний каталог (-d) в качестве значения для входа нового пользователя:
$ sudo useradd -m -d /home/bob01 bob01
Заключение
В заключение, если вы являетесь поклонником Ubuntu, вы должны теперь использовать команду adduser.
Если у вас уже есть пользователь, теперь вы сможете добавить каталог по умолчанию.
How to Find User’s Home Directory in Linux or Unix
Under a Linux operating system distribution environment, a created/existing system user is associated with a Home directory. The configuration of the Home directory ensures that the files belonging to the currently active Linux user are only accessible to that user unless this user switches to another user account where they will access the Home directory of that switched user.
The files under a Linux Home user directory are specific to the currently active users. The base directory of the Linux operating system is the root (/) directory.
It is from the root (/) directory that we should be able to access the Home (/home) directory.
If you only have a single active user on your Linux operating system environment, dealing with the Home directory is straightforward. The latter statement implies that every created/existing Linux user will have their system username as a directory name under this Linux Home directory.
For instance, listing the directories in the above Home directory lists three other directories to imply that the Linux operating system in question hosts 3 three users.
If we decide to navigate into either of the above Linux user folders, we should first be able to meet the following prerequisite.
It is only by being a sudoer/root user that we can be able to navigate into other Linux users’ Home directories without bumping into permission/access barriers.
From the above display, we have managed to navigate to the Home directory and list the files, folders, and directories associated with user dnyce whose user directory exists within the Home (/home) directory.
The above screen capture also reveals to us the different file permissions associated with the listed files, folders, and directories. The file permissions starting with – e.g – rw-rw-r— , imply that we are dealing with a file and the file permissions starting with d e.g drwxr-xr-x , imply that we are dealing with a folder or directory.
Ways to Find User’s Home Directory in Linux
Before we look at some viable approaches to finding a user’s home directory in Linux, it is important to understand why the Home directory exists. This directory helps differentiate system-wide data from user data such that we do not have to deal with redundancy. Also, important file backup operation becomes flawless.
Navigating to the Home Directory Traditionally
You first need to be sure that the Linux user exists. This approach is a summary of the above-discussed content.
The tilde (~) symbol indicates that we are at the home directory of the currently active user.
The Linux user’s home directory contains directories like Documents, Downloads, Music, Pictures, and Public.
Find User’s Home Directory Using Cd Command
Executing the cd (change directory) command alone should take you to the home directory of the current Linux user.
Another approach is to use cd + tilde (~) should navigate us to the Home directory of the currently logged-in user.
You can also use $HOME command, which takes you to the Home directory as a variable.
Not only do we understand the concept of the Linux user’s home directory, but we can navigate to it from any directory path.
Создать домашний каталог для существующего пользователя в Linux
В этом кратком руководстве объясняется, как создать домашний каталог для существующего пользователя в Linux и Unix-подобных операционных системах с помощью команды mkhomedir_helper .
Как вы уже знаете, мы можем создать нового пользователя в Linux и Unix-подобных системах с помощью команды adduser , верно? Да все верно! Когда мы добавляем нового пользователя, по умолчанию автоматически создается домашний каталог для соответствующего пользователя.
Есть еще одна команда для создания пользователей в Linux. Это так useradd . После того, как я создал несколько пользователей с помощью команды useradd в Alpine Linux, я заметил, что каталоги $HOME для пользователей не создаются. Я не знал этого раньше. Прочитав справочные страницы команды useradd , я понял, что мне следовало включить -m (или —create-home ) опцию для создания новых пользователей в каталоге $HOME , как показано ниже:
$ 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 :
Установите пароль для пользователя:
Теперь переключитесь на нового пользователя:
Вы увидите следующее сообщение об ошибке:
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, если вы уже вошли в систему:
И выполните следующую команду, чтобы создать домашний каталог для пользователя с именем ostechnix :
$ sudo mkhomedir_helper ostechnix
Обратите внимание, что вы должны выполнить указанную выше команду как root пользователь или другой sudo пользователь.
Теперь переключитесь на пользователя ostechnix:
На этот раз вы не получите никакого предупреждающего сообщения, потому что домашний каталог для пользователя с именем ostechnix был создан с помощью команды mkhomedir_helper .
Для получения дополнительных сведений см. справочные страницы:
Теперь вы знаете, как создавать домашние каталоги после создания пользователей. Это может быть полезно, если вы забыли включить -m параметр при создании пользователей с помощью команды useradd.
Вместо использования useradd вы можете использовать adduser команду, которая автоматически создаст домашние каталоги пользователей без каких-либо параметров.
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Средняя оценка / 5. Количество оценок:
Оценок пока нет. Поставьте оценку первым.