Как узнать домашнюю директорию любого пользователя Linux

Для того, чтобы правильно и безопасно хранить данные на сервере, (особенно, если на этом сервере несколько пользователей), следует точно знать, где располагаются их домашние папки, до которых у пользователей есть доступ (у каждого в свою, но нет доступа в чужие папки с чужими данными). Например, для того, чтобы дать пользователю доступ по ftp только к его данным или подсказать полный путь до его www-директории. В этой статье рассмотрим то, как узнать домашнюю директорию любого пользователя Linux несколькими способами.



Где хранится системная информация о домашних каталогах пользователей в Linux

При создании нового пользователя в Unix-системах, каждому пользователю обязательно домашний каталог. О том, где и как располагается запись о домашней директории пользователя в файле /etc/passwd, подробно описано в → этой статье. Для понимания вопроса сейчас требуется знать, что это предпоследнее (шестое) поле home в строке записи пользователя в этом файле:

login:password:UID:GID:GECOS:home:shell

Поэтому, можно в цикле обходить этот файл в поиске записи нужного пользователя, разбивать строку на подстроки и брать значение 6-го поля... Но это слишком длинный способ. Есть короче и проще. ;)

Команда pwd в Unix

Команда pwd выводит текущий путь к директории, в которой находится пользователь. Выполнив команду pwd, получим этот путь:

root@server:~# pwd
/root

У пользователя root в Unix по умолчанию домашней директорией является /root.

Оператор ~ (тильда) в Debian

Другой способ того, как определить домашнюю директорию текущего пользователя. Достаточно посмотреть значение оператора ~ (тильда):

root@server:~# echo ~
/root

Результат не сильно отличается от предыдущего, но к ~ можно добавлять дополнительные пути к папкам и/или файлам пользователя, используя её как точку отсчёта в домашней директории пользователя. Что сильно облегчает работу с написанием относительных путей (относительно не только корня файловой системы, но и корня домашней папки пользователя).

Ещё одним полезным свойством ~ является то, что с помощью этого оператора можно получить путь до домашней директории любого пользователя в системе (если конечно пользователь есть в системе, то есть прописан в файле /etc/passwd, например посмотреть содержимое домашнего каталога пользователя ftp можно так, поставив перед ним тильду ~:

root@server:~# ls ~ftp
welcome.msg

А теперь посмотреть содержимое этого файла:

root@server:~# 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 <root@%L>.

Ну и то, к чему мы стремились: посмотреть путь к домашней директории пользователя:

root@amorale:~# echo ~ftp
/srv/ftp

Так гораздо удобнее, чем парсить и разбирать файл /etc/passwd. За нас всю эту работу делает операционная система! ;)

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню