Как узнать домашнюю директорию пользователя linux
Перейти к содержимому

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

  • автор:

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.

View Linux Home Directory

View Linux Home Directory

If we decide to navigate into either of the above Linux user folders, we should first be able to meet the following prerequisite.

  • You are a sudoer/root user of the Linux operating system distribution you are using.

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.

View User Home Directory

View User Home Directory

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.

) symbol indicates that we are at the home directory of the currently active user.

Find User Home Directory

Find User Home Directory

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.

Find User Home Directory

Find User Home Directory

Another approach is to use cd + tilde (

) should navigate us to the Home directory of the currently logged-in user.

Switch to User Home Directory

Switch to User Home Directory

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 или Unix?

Как найти домашний каталог произвольного пользователя из Grails? В Linux это часто /home/user. Однако на некоторых ОС, например OpenSolaris, путь/export/home/user.

13 ответов

Для UNIX-подобных систем вам может потребоваться выполнить » echo

username » с помощью оболочки (поэтому используйте Runtime.exec() для запуска <"/bin/sh", "-c", "echo

username» кажется лучшим ответом. Я вижу так много людей, которые набирают «cd / home / username» вместо «cd

username» . Конечно, вы никогда не должны выкладываться, если вам не нужно.

похоже, поможет, если вы вошли в систему как пользователь, чей домашний каталог вы ищете.

user ) не является одной из обязательных функций такой оболочки. В дистрибутивах Linux BASH используется как /bin/sh , для которого работает расширение тильды. Если вы запустите echo

используя /bin/sh в другой ОС UNIX, вы можете получить только тильду (например, "

" ) вместо пути к домашней директории.

username а не просто echo

Обычно вы используете оператор

чтобы получить домашний каталог пользователя на любой платформе. См. Документацию по методу getProperty, чтобы узнать, что еще вы можете получить.

Возможно, проблемы с доступом могут быть устранены с помощью этого обходного пути (с использованием файла политики безопасности)

Попробуйте это на Java:

Для произвольного пользователя, в качестве веб-сервера:

Если вы пытаетесь сделать это для имени пользователя, которое вы не можете жестко закодировать, это может быть сложно. Конечно echo

rbronosky сообщит вам путь к моему домашнему директорию /home/rbronosky , но что, если rbronosky находится в переменной? Если вы делаете name=rbronosky; echo

$name , вы получаете

Вот реальный мир и решение:

У вас есть script, который пользователь должен выполнить через sudo. script должен получить доступ к домашней папке пользователя. Вы не можете ссылаться на

/.ssh , иначе он будет расширяться до /root/.ssh . Вместо этого вы выполните:

Красота заключается в том, что если script не запускается как sudo, тогда $SUDO_USER пуст, так что это в основном то же самое, что и «echo

«. Он по-прежнему работает так, как вы ожидаете.

Если вы используете set -o nounset , который вы должны использовать, вы хотите выполнить экспорт до что.

$SUDO_USER" | bash) "эхо эхо? что?"

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

Когда мне нужно было сделать это раньше с Java, мне пришлось написать некоторый собственный код JNI, который завершал семейство вызовов UNIX getpwXXX() .

Для этого вы можете использовать переменную окружения $HOME .

Я предполагаю, что вы хотите найти домашний каталог РАЗЛИЧНОГО пользователя. Очевидно, что получение свойства user.home было бы самым простым способом получить текущий домашний каталог пользователя.

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

Теперь технически мы должны ожидать поток на stdout и stderr, чтобы буферы не заполняли и не блокировали процесс, но я надеялся, что буфер, по крайней мере, может содержать одно имя пользователя. Кроме того, вы можете проверить результат, чтобы узнать, начинается ли он с

root (или любого другого имени пользователя), чтобы убедиться, что пользователь существует и правильно его оценил.

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

Как узнать домашний каталог пользователя linux

Бывают случаи, когда возникает необходимость узнать, какие пользователи зарегистрированы в операционной системе Linux. Это может потребоваться для того, чтобы определить, есть ли лишние пользователи, нуждается ли какой-то конкретный пользователь или же целая группа из них в изменении личных данных.

Способы проверки списка пользователей

Люди, которые постоянно используют данную систему, могут это сделать с помощью целого ряда методов, а для новичков это весьма проблематично. Поэтому инструкция, которая будет расписана ниже, поможет неопытному пользователю справиться с поставленной задачей. Сделать это можно при помощи встроенного Терминала или же ряда программ с графическим интерфейсом.

Способ 1: Программы

В Linux/Ubuntu управлять зарегистрированными в системе пользователями можно при помощи параметров, работа которых обеспечивается специальной программой.

К сожалению, для графической оболочки рабочего стола Gnome и Unity программы разные. Однако они обе способны предоставить набор опций и инструментов для проверки и редактирования групп пользователей в дистрибутивах Linux.

«Учетные записи» в Gnome

Сначала следует открыть параметры системы и выбрать раздел под названием «Учетные записи». Обратите внимание на то, что системные пользователи здесь уже отображаться не будут. Список зарегистрированных пользователей находится в панели слева, правее есть раздел настроек и изменения данных каждого из них.

Программа «Пользователи и группы» в дистрибутиве с графической оболочкой Gnome установлена всегда по умолчанию, однако если вы ее не находите в системе, то можно провести автоматическую загрузку и установку с помощью выполнения команды в «Терминале»:

sudo apt-get install unity-control-center

KUser в KDE

Для платформы KDE существует одна утилита, пользоваться которой даже гораздо удобнее. Она называется KUser.

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

Как и в случае с Gnome, в KDE программа KUser установлена по умолчанию, но ее можно удалить. Чтобы произвести установку приложения, выполните команду в «Терминале»:

sudo apt-get install kuser

Способ 2: Терминал

Данный способ является универсальным для большинства дистрибутивов, разработанных на основе операционной системы Linux. Дело в том, что она имеет в своем программном обеспечении специальный файл, где располагается информация относительно каждого пользователя. Такой документ находится по адресу:

Все записи в нем представлены в следующем виде:

  • имя каждого из юзеров;
  • уникальный идентификационный номер;
  • пароль ИД;
  • ИД группы;
  • название группы;
  • оболочка домашнего каталога;
  • номер домашнего каталога.

Для повышения уровня безопасности в документе сохраняется пароль каждого из пользователей, но он не отображается. В других модификациях этой операционной системы пароли и вовсе хранятся в отдельных документах.

Полный список пользователей

Вызвать переадресацию в файл с сохраненными данными юзеров можно с помощью «Терминала», введя в него следующую команду:

Если ИД у пользователя имеет меньше четырех цифр, то это системные данные, в которые вносить изменения крайне нежелательно. Дело в том, что они создаются самой ОС в процессе установки для обеспечения наиболее безопасной работы большинства сервисов.

Имена в списке пользователей

Стоит отметить, что в данном файле может быть довольно много данных, которые вам не интересны. Если имеется необходимость узнать только имена и основные сведения, касающиеся пользователей, есть возможность отфильтровать приведенные в документе данные при помощи введения следующей команды:

Просмотр активных пользователей

В ОС, работающей на базе Linux, можно посмотреть не только пользователей, которые были зарегистрированы, но и тех, кто в настоящее время активны в ОС, заодно просмотрев то, какие процессы они используют. Для такой операции применяется специальная утилита, вызываемая командой:

Данная утилита будет выдавать все команды, которые выполняются пользователями. Если он одновременно задействует две и более команд, то они также найдут отображение в выдаваемом списке.

Истории посещений

При необходимости, есть возможность проанализировать активность пользователей: узнать дату последнего их входа в систему. Ей можно воспользоваться на базе лога /var/wtmp. Вызывается он вводом в командной строке следующей команды:

Дата последней активности

Кроме того, в операционной системе Linux можно узнать, когда каждый из зарегистрированных пользователей был последний раз активен – это делает команда lastlog, выполняемая при помощи одноименного запроса:

В этом логе также отображается информация о пользователях, которые никогда не были активными.

Заключение

Как можно заметить, в «Терминале» представлены более детальные сведения, касающиеся каждого пользователя. В нем есть возможность узнать кто и когда входил в систему, определить, пользовались ли ей посторонние люди, и многое другое. Однако для рядового пользователя будет лучшим вариантом воспользоваться программой с графическим интерфейсом, чтобы не вникать в суть команд Linux.

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

Как найти домашний каталог пользователя в linux или unix?

Как найти домашний каталог произвольного пользователя из Grails? В Linux это часто /home / user. Однако в некоторых ОС, таких как OpenSolaris, например, путь /export/home/user.

13 ответов

для UNIX-подобных систем вы можете выполнить» echo

username » использование оболочки (поэтому используйте Runtime.exec() для выполнения сказал бы вам путь к моему дому dir /home/rbronosky , но что, если rbronosky находится в переменной? Если вы это сделаете name=rbronosky; echo

вот реальный случай и решение:

у вас есть скрипт, который пользователь должен запустить через судо. Скрипт должен получить доступ к домашней папке пользователя. Вы не можете ссылаться

/.ssh или он будет расширяться до /root/.ssh . Вместо этого вы делаете:

красота в том, что если скрипт не запускается как судо тогда $SUDO_USER пуст, поэтому это в основном то же самое, что делать «echo

«. Он по-прежнему работает так, как вы ожидаете.

если вы используете set -o nounset , который вы должны использовать, вы хотите сделать экспорт до этого.

Я предполагаю, что вы хотите найти домашний каталог другого пользователя. Очевидно, получение «пользователя».главная » свойство будет самый простой способ получить текущий домашний каталог пользователя.

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

теперь технически у нас должен быть поток, ожидающий stdout и stderr, поэтому буферы не заполняются и не блокируют процесс, но я уверен, что буфер может по крайней мере содержать одно имя пользователя. Кроме того, вы можете проверить результат, чтобы увидеть, начинается ли он с

root (или любое имя пользователя, которое вы использовали), чтобы убедиться, что пользователь существует и правильно оценивается.

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

чтобы найти домашний каталог для пользователя FOO в системе UNIX-ish, используйте

FOO . Для текущего пользователя, используйте

найдите оболочку Java для getpwuid/getpwnam(3) функции, они запрашивают у системы информацию о пользователе по uid или по имени входа, и вы получаете всю информацию, включая домашний каталог по умолчанию.

How to find a user's home directory on linux or unix?

How do I find the home directory of an arbitrary user from within Grails? On Linux it’s often /home/user. However, on some OS’s, like OpenSolaris for example, the path is /export/home/user.

Dmitry Pashkevich's user avatar

directory constant help you in any way?

13 Answers 13

Normally you use the statement

to get the home directory of the user on any platform. See the method documentation for getProperty to see what else you can get.

There may be access problems you might want to avoid by using this workaround (Using a security policy file)

For UNIX-Like systems you might want to execute » echo

username » using the shell (so use Runtime.exec() to run <"/bin/sh", "-c", "echo

username' seems like the neatest answer. I see so many people who type 'cd /home/username' instead of 'cd

username' . Of course, you should never shell out, if you don't have to.

seems to do the trick if you're signed in as the user whose home directory you're looking for.

user ) is not one of the required features of such shell. Linux distributions use BASH as /bin/sh , for which tilde expansion works. If you run echo

using /bin/sh under some other UNIX OS, you can get back just the tilde (e.g. "

" ) instead of home directory path.

Try this on Java:

For an arbitrary user, as the webserver:

You can use the environment variable $HOME for that.

If you want to find a specific user’s home directory, I don’t believe you can do it directly.

When I’ve needed to do this before from Java I had to write some JNI native code that wrapped the UNIX getpwXXX() family of calls.

I assume you want to find the home directory of a DIFFERENT user. Obviously getting the «user.home» property would be the easiest way to get the current user home directory.

To get an arbitrary user home directory, it takes a bit of finesse with the command line:

Now technically, we should have a thread waiting on the stdout and stderr so the buffers don’t fill up and lock up the process, but I’d sure hope the buffer could at least hold a single username. Also, you might want to check the result to see if it starts with

root (or whatever username you used) just to make sure the user does exist and it evaluated correctly.

Hope that helps. Vote for this answer if it does as I’m new to contributing to SO and could use the points.

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

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