как узнать домашнюю директорию пользователя linux
Как узнать домашнюю директорию любого пользователя Linux
Для того, чтобы правильно и безопасно хранить данные на сервере, (особенно, если на этом сервере несколько пользователей), следует точно знать, где располагаются их домашние папки, до которых у пользователей есть доступ (у каждого в свою, но нет доступа в чужие папки с чужими данными). Например, для того, чтобы дать пользователю доступ по ftp только к его данным или подсказать полный путь до его www-директории. В этой статье рассмотрим то, как узнать домашнюю директорию любого пользователя Linux несколькими способами.
Где хранится системная информация о домашних каталогах пользователей в Linux
login : password : UID : GID : GECOS : home : shell
Поэтому, можно в цикле обходить этот файл в поиске записи нужного пользователя, разбивать строку на подстроки и брать значение 6-го поля. Но это слишком длинный способ. Есть короче и проще. 😉
Команда pwd в Unix
Оператор
Другой способ того, как определить домашнюю директорию текущего пользователя. Достаточно посмотреть значение оператора
Результат не сильно отличается от предыдущего, но к
можно добавлять дополнительные пути к папкам и/или файлам пользователя, используя её как точку отсчёта в домашней директории пользователя. Что сильно облегчает работу с написанием относительных путей (относительно не только корня файловой системы, но и корня домашней папки пользователя).
Ещё одним полезным свойством
А теперь посмотреть содержимое этого файла:
Ну и то, к чему мы стремились: посмотреть путь к домашней директории пользователя:
Навигация по файлам и директориям
В прошлый раз мы хаотично вводили текст в командную строку Linux и получали сообщения об ошибках. Все это время мы находились внутри домашнего каталога. Сегодня мы попытаемся разобраться как перемещаться по папкам при помощи команд и просматривать их содержимое.
Но для начало необходимо понять устройство файловой структуры Linux. Она представляет собой иерархическую структуру. То есть файловая система организована на подобии директорий (они же папки и каталоги), в которых расположены иные директории и файлы. Верхняя директория файловой системы называется корневой директорией. Внутри корневой директории расположены файлы и директории, которые содержат файлы и директории.
В графическом интерфейсе структура директорий выглядит следующим образом.
В отличии от файловой организации Windows, где корневыми директориями являются диски, в Linux есть единственное дерево и только одна корневая директория, которая не ассоциируется с каким либо физическим дисковым устройством. Различные диски могут быть подключены как поддеревья (директории) внутри этого дерева.
Разморозим нашу виртуальную машину и сделаем первые шаги в освоении организации файловой структуры Linux 🙂
Рабочая директория и её содержание
Так как интерфейс командной строки не может графически показать файловую структуру, существует иной способ ее представления. Представим, что дерево файлов является лабиринтом, в котором мы находимся. В каждый момент мы находимся в одной из директорий данного лабиринта. Внутри нее мы видим путь к родительской директории, файлы и пути во вложенные директории.
Директория в которой мы находимся называется рабочей директорией. Чтобы узнать имя рабочей директории, воспользуемся командой pwd (print working directory — вывести рабочую директорию).
Введем команду pwd в окно терминала.
Как узнать домашнюю директорию любого пользователя Linux
Для того, чтобы правильно и безопасно хранить данные на сервере, (особенно, если на этом сервере несколько пользователей), следует точно знать, где располагаются их домашние папки, до которых у пользователей есть доступ (у каждого в свою, но нет доступа в чужие папки с чужими данными). Например, для того, чтобы дать пользователю доступ по ftp только к его данным или подсказать полный путь до его www-директории. В этой статье рассмотрим то, как узнать домашнюю директорию любого пользователя Linux несколькими способами.
Где хранится системная информация о домашних каталогах пользователей в Linux
login : password : UID : GID : GECOS : home : shell
Поэтому, можно в цикле обходить этот файл в поиске записи нужного пользователя, разбивать строку на подстроки и брать значение 6-го поля. Но это слишком длинный способ. Есть короче и проще. 😉
Команда pwd в Unix
Оператор
Другой способ того, как определить домашнюю директорию текущего пользователя. Достаточно посмотреть значение оператора
Результат не сильно отличается от предыдущего, но к
можно добавлять дополнительные пути к папкам и/или файлам пользователя, используя её как точку отсчёта в домашней директории пользователя. Что сильно облегчает работу с написанием относительных путей (относительно не только корня файловой системы, но и корня домашней папки пользователя).
Ещё одним полезным свойством
А теперь посмотреть содержимое этого файла:
Ну и то, к чему мы стремились: посмотреть путь к домашней директории пользователя:
Как найти домашний каталог пользователя в linux или unix?
Как найти домашний каталог произвольного пользователя из Grails? В Linux это часто /home / user. Однако в некоторых ОС, таких как OpenSolaris, например, путь /export/home/user.
13 ответов
для UNIX-подобных систем вы можете выполнить» echo
username » использование оболочки (поэтому используйте Runtime.exec() для выполнения <"/bin/sh", "-c", "echo
обычно вы используете оператор
чтобы получить домашний каталог пользователя на любой платформе. См. документацию по методу для getProperty чтобы увидеть, что еще вы можете сделать.
могут возникнуть проблемы с доступом, которые вы можете избежать, используя этой обходной путь (с помощью файла политики безопасности)
попробуйте это на Java:
для произвольного пользователя, а на сервер:
Если вы хотите найти домашний каталог конкретного пользователя, я не верю, что вы можете сделать это напрямую.
когда мне нужно было сделать это раньше с Java, мне пришлось написать собственный код JNI, который обернул UNIX getpwXXX() семейные звонков.
вот реальный случай и решение:
у вас есть скрипт, который пользователь должен запустить через судо. Скрипт должен получить доступ к домашней папке пользователя. Вы не можете ссылаться
«. Он по-прежнему работает так, как вы ожидаете.
Я предполагаю, что вы хотите найти домашний каталог другого пользователя. Очевидно, получение «пользователя».главная » свойство будет самый простой способ получить текущий домашний каталог пользователя.
чтобы получить произвольный домашний каталог пользователя, требуется немного изящества с помощью командной строки:
теперь технически у нас должен быть поток, ожидающий stdout и stderr, поэтому буферы не заполняются и не блокируют процесс, но я уверен, что буфер может по крайней мере содержать одно имя пользователя. Кроме того, вы можете проверить результат, чтобы увидеть, начинается ли он с
root (или любое имя пользователя, которое вы использовали), чтобы убедиться, что пользователь существует и правильно оценивается.
надеюсь, что это поможет. Проголосуйте за этот ответ, если он делает так, как я новичок в содействии SO и мог бы использовать очки.
чтобы найти домашний каталог для пользователя FOO в системе UNIX-ish, используйте
найдите оболочку Java для getpwuid/getpwnam(3) функции, они запрашивают у системы информацию о пользователе по uid или по имени входа, и вы получаете всю информацию, включая домашний каталог по умолчанию.
Как найти домашний каталог пользователя в 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
похоже, поможет, если вы вошли в систему как пользователь, чей домашний каталог вы ищете.
используя /bin/sh в другой ОС UNIX, вы можете получить только тильду (например, «
» ) вместо пути к домашней директории.
username а не просто echo
Обычно вы используете оператор
чтобы получить домашний каталог пользователя на любой платформе. См. Документацию по методу getProperty, чтобы узнать, что еще вы можете получить.
Возможно, проблемы с доступом могут быть устранены с помощью этого обходного пути (с использованием файла политики безопасности)
Попробуйте это на Java:
Для произвольного пользователя, в качестве веб-сервера:
Если вы пытаетесь сделать это для имени пользователя, которое вы не можете жестко закодировать, это может быть сложно. Конечно echo
Вот реальный мир и решение:
У вас есть script, который пользователь должен выполнить через sudo. script должен получить доступ к домашней папке пользователя. Вы не можете ссылаться на
«. Он по-прежнему работает так, как вы ожидаете.
$SUDO_USER» | bash) «эхо эхо? что?»
Если вы хотите найти конкретный домашний каталог пользователя, я не думаю, что вы можете сделать это напрямую.
Я предполагаю, что вы хотите найти домашний каталог РАЗЛИЧНОГО пользователя. Очевидно, что получение свойства user.home было бы самым простым способом получить текущий домашний каталог пользователя.
Чтобы получить произвольный домашний каталог пользователя, в командной строке требуется немного утонченности:
Теперь технически мы должны ожидать поток на stdout и stderr, чтобы буферы не заполняли и не блокировали процесс, но я надеялся, что буфер, по крайней мере, может содержать одно имя пользователя. Кроме того, вы можете проверить результат, чтобы узнать, начинается ли он с
root (или любого другого имени пользователя), чтобы убедиться, что пользователь существует и правильно его оценил.
Надеюсь, что это поможет. Проголосуйте за этот ответ, если он делает то, что я новичок, чтобы внести вклад в SO и использовать точки.