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

Обновлено: 21.11.2024

Как учащийся или сотрудник MCECS, вы имеете доступ к компьютерам Windows, Linux и Unix в школе, а ваши личные файлы доступны во всех трех операционных системах. Базовое понимание того, как ваши файлы хранятся в наших системах, поможет вам добиться успеха в нашей вычислительной среде. В этом руководстве описывается, как ваши домашние каталоги Unix/Linux работают с диском Windows S:\, чтобы сделать ваши личные файлы доступными во всех поддерживаемых нами системах.

Структура ваших личных папок определяет следующее:

  1. Где вы можете разместить элементы, к которым вы хотите получить доступ с разных компьютеров в MCECS.
  2. Где вы можете размещать элементы, которые должны быть доступны в вашем личном веб-пространстве.
  3. Где вы можете разместить предметы, которые должны быть доступны за пределами кампуса.

На тех, кто использует исключительно Windows, структура этих папок оказывает минимальное влияние. Если вы попадаете в эту категорию и этот документ кажется вам слишком сложным, вы можете смело игнорировать описанные здесь папки в пользу использования диска N:\, который доступен со всех компьютеров MCECS Windows. Вы можете просматривать файлы на диске N:\ дома с помощью удаленного рабочего стола и передавать файлы на диск N:\ и с него с помощью SFTP.

Пользователям Unix, Linux и Mac будет полезно прочитать этот документ независимо от того, используют ли они машины Windows.

Содержание

Структура каталогов

Макет каталога

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

Каталоги Desktop, Documents, Downloads, public_html и smb_files доступны из всех операционных систем. Все, что вы поместите в эти каталоги, будет доступно в соответствующем месте на любом компьютере MCECS. Все, что находится за пределами этих каталогов, будет доступно только в операционной системе, в которой вы его создали.

ПРИМЕЧАНИЕ. Если вы используете компьютер с Windows, вы не можете создавать новые папки, изменять имена папок или сохранять файлы внутри самого верхнего уровня S:\. Однако вы имеете полный контроль над содержимым существующих папок на диске S:\.

Куда поместить ваши файлы

Если вы хотите хранить обычные файлы для использования в Linux, Unix и Windows, поместите их в папку «Рабочий стол», «Документы» или «Загрузки». Каталог smb_files в основном включен для устаревших целей, но он также работает как обычный каталог. Например, любые файлы, помещенные в Документы, могут находиться в следующих местах:

  • В Unix: /home/username/Documents
  • В Linux: /home/username/Documents
  • В Windows: S:\Documents
  • В Solaris: /home/username/public_html
  • В Linux: /home/username/public_html
  • В Windows: S:\public_html

Технические детали

Общая информация для всех пользователей

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

В Unix и Linux такое зеркальное отображение выполняется с помощью символических ссылок. В Windows это достигается с помощью перенаправленных папок. В любом случае, любой компьютер MCECS, в который вы войдете, сможет взаимодействовать со стандартным набором общих папок. Все, что вы храните за пределами этих папок, будет доступно вам только в той операционной системе, которая использовалась для его создания.

Общая информация для пользователей Unix/Linux

Когда вы входите в систему Unix или Linux, вы окажетесь в каталоге /u/username. На самом деле это псевдоним. Реальное расположение вашего домашнего каталога — /home/username/OS, где OS — это имя используемой вами операционной системы.

Например, когда вы входите в систему Linux, вам будет казаться, что вы находитесь в /u/имя_пользователя, но на самом деле вы находитесь в /home/имя_пользователя/ubuntu, /home/имя_пользователя/redhat5 или /home/имя_пользователя /redhat6, в зависимости от того, какой дистрибутив Linux вы используете.

Иерархия структуры

Более технически точное представление новой структуры каталогов выглядит примерно так:

Ваши общие каталоги (Рабочий стол, Документы и т. д.) на самом деле хранятся в /home/username/common. Оттуда они связаны с домашним каталогом каждого типа операционных систем Linux и Unix, а также с диском S:\ на компьютерах с Windows.

Вы не можете создавать новые каталоги или файлы внутри /home/username/common, но у вас есть полный контроль над содержимым существующих каталогов.

Каталог /home/username/mail содержит вашу электронную почту — работайте с этим каталогом на свой страх и риск. Внесение неправильных изменений здесь может привести к сбоям в работе или исчезновению электронной почты.

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

Можете ли вы быть немного более конкретным? Вы ищете домашний каталог пользователя, который запускает Grails, или домашний каталог произвольного пользователя, чье имя или UID у вас есть?

13 ответов 13

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

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

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

Сервер приложений будет работать от имени производственного пользователя и находиться, например, в /opt. Это может работать или не работать, в зависимости от того, как настроена производственная учетная запись. Таким образом, запрос домашнего каталога рабочего пользователя может не быть ответом.

ОП запросил дом произвольного пользователя. Но user.home — это текущий пользователь. Всегда ли работает этот метод, если вы переходите от текущего дома пользователей к родительскому, а затем вниз к каталогу с указанным именем пользователя?

Для UNIX-подобных систем вы можете выполнить " echo ~username " с помощью оболочки (поэтому используйте Runtime.exec() для запуска).

Ответить на "эхо ~имя_пользователя" кажется самым изящным ответом. Я вижу так много людей, которые пишут «cd /home/username» вместо «cd ~username». Конечно, никогда не стоит раскошеливаться, если в этом нет необходимости.

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

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

Чтобы быть предельно точным, /bin/sh гарантируется POSIX как оболочка, совместимая с Bourne, но расширение тильды ( ~ и ~user ) не является одной из обязательных функций такой оболочки. Дистрибутивы Linux используют BASH как /bin/sh , для которого работает расширение тильды. Если вы запустите echo ~, используя /bin/sh под какой-либо другой ОС UNIX, вы можете вернуть только тильду (например, "~" ) вместо пути к домашнему каталогу.

Это не ответ на вопрос. Они не спрашивали, как найти свой домашний каталог, они спрашивали, как найти домашний каталог пользователя.

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

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

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

$HOME изменяется в зависимости от того, какой пользователь вошел в систему. Я не понимаю, как его можно использовать для поиска дома произвольного пользователя.

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

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

Я предполагаю, что вы хотите найти домашний каталог ДРУГОГО пользователя. Очевидно, что получение свойства "user.home" было бы самым простым способом получить текущий домашний каталог пользователя.

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

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

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

Если вы пытаетесь сделать это для имени пользователя, которое вы не можете жестко запрограммировать, это может быть сложно. Конечно, echo ~rbronosky подскажет вам путь к моему домашнему каталогу /home/rbronosky , но что, если rbronosky находится в переменной? Если вы сделаете name=rbronosky; echo ~$name вы получите ~rbronosky

Вот пример из реальной жизни и решение:

У вас есть скрипт, который пользователь должен запустить через sudo. Сценарий должен получить доступ к домашней папке пользователя. Вы не можете ссылаться на ~/.ssh, иначе он расширится до /root/.ssh . Вместо этого вы делаете:

Прелесть этого в том, что если скрипт не запускается как sudo, то $SUDO_USER пуст, так что это в основном то же самое, что и "echo ~". Он по-прежнему работает так, как вы ожидаете.

Если вы используете set -o nounset , который вы должны использовать, ссылка на переменную $ будет по умолчанию пустой, где $SUDO_USER или $ выдадут ошибку (поскольку она не установлена), если не запустить через sudo .

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

Домашний каталог создается автоматически для каждого обычного пользователя в каталоге с именем /home. Стандартный подкаталог корневого каталога, /home, служит единственной целью хранения домашних каталогов пользователей. Корневой каталог, обозначенный косой чертой ( / ), — это каталог, содержащий все другие каталоги и их подкаталоги, а также все файлы в системе.

Имя домашнего каталога пользователя по умолчанию идентично имени пользователя. Так, например, пользователь с именем mary обычно имеет домашнюю директорию с именем mary. У него будет абсолютный путь /home/mary. Абсолютный путь — это расположение каталога или файла относительно корневого каталога, и он всегда начинается с корневого каталога (т. е. с косой черты).

Единственный пользователь, чей домашний каталог по умолчанию находится в другом месте, — это пользователь root (т. е. администратор), чей домашний каталог — /root. /root — это еще один стандартный подкаталог корневого каталога, и его не следует путать с корневым каталогом (хотя иногда это делают новые пользователи). В целях безопасности даже у системных администраторов должны быть обычные учетные записи с домашними каталогами в /home, в которые они обычно входят, и они должны использовать учетную запись root только в случае крайней необходимости.

У пользователя есть несколько простых способов вернуться в свой домашний каталог независимо от его текущего каталога (т. е. каталога, в котором он сейчас работает). Самым простым из них является использование команды cd (т.е. сменить каталог) без каких-либо опций или аргументов (т.е. входных файлов), т.е. , просто введя следующее и нажав клавишу ВВОД:

тильда (символ волнистой горизонтальной линии) используется для представления домашних каталогов пользователей в Unix-подобных операционных системах, включая домашние каталоги пользователей, которые используются для хранения веб-страниц в Unix-подобных операционных системах. веб-серверы. Таким образом, пользователь также может вернуться в свой домашний каталог, используя тильду в качестве аргумента команды cd, т. е.

Абсолютный путь к домашнему каталогу пользователя хранится в переменной среды этого пользователя $HOME. Переменные окружения — это класс переменных, которые сообщают оболочке (т. е. программе, предоставляющей текстовый пользовательский интерфейс для ввода команд), как вести себя, когда пользователь работает с командной строкой<. /i> (т. е. полнотекстовый режим). Таким образом, третий способ для пользователя вернуться в свой домашний каталог — использовать $HOME в качестве аргумента cd, т. е.

Создано 17 июня 2005 г.
Авторские права © 2005 The Linux Information Project. Все права защищены.

Linux — это многопользовательская среда, поэтому каждому пользователю также назначается определенный каталог, доступный только ему и системному администратору. Это домашние каталоги пользователей, которые можно найти в разделе «/home/$USER» (~/). Это ваша игровая площадка: все в вашей команде, вы можете записывать файлы, удалять их, устанавливать программы и т. д. Ваш домашний каталог содержит ваши личные файлы конфигурации, так называемые точечные файлы (их имя начинается с точки). Файлы личной конфигурации обычно «скрыты», если вы хотите их увидеть, вам нужно либо включить соответствующую опцию в вашем файловом менеджере, либо запустить ls с ключом -a. В случае конфликта между личными и общесистемными файлами конфигурации преимущественную силу имеют настройки в личном файле.

Конечный пользователь, скорее всего, изменит файлы Dot, вероятно, ваши файлы .xsession и .bashrc. Файлы конфигурации для X и Bash соответственно. Они позволяют вам изменить оконный менеджер, который будет запускаться при входе в систему, а также псевдонимы, указанные пользователем команды и переменные среды соответственно. Почти всегда при создании пользователя его dotfiles берутся из каталога /etc/skel, куда системные администраторы помещают образец файла, который пользователь может изменить по своему усмотрению.

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

В FSSTND указано, что:

/home — довольно стандартная концепция, но явно файловая система для конкретного сайта. Разные люди предпочитают размещать учетные записи пользователей в разных местах. В этом разделе описывается только предполагаемое размещение домашних каталогов пользователей; тем не менее, мы рекомендуем, чтобы все дистрибутивы, совместимые с FHS, использовали это место по умолчанию для домашних каталогов. В небольших системах каталог каждого пользователя обычно является одним из многих подкаталогов /home, таких как /home/smith, /home/torvalds, /home/operator и т. д. В больших системах (особенно когда каталоги /home совместно используются многими хосты, использующие NFS), полезно разделить домашние каталоги пользователей.Разделение может быть выполнено с использованием подкаталогов, таких как /home/staff, /home/guests, /home/students и т. д. Настройка будет отличаться от хоста к хосту. Поэтому никакая программа не должна полагаться на это место. Если вы хотите узнать домашний каталог пользователя, вам следует использовать библиотечную функцию getpwent(3), а не полагаться на /etc/passwd, поскольку информация о пользователе может храниться удаленно с использованием таких систем, как NIS. Пользовательские файлы конфигурации для приложений хранятся в домашнем каталоге пользователя в файле, который начинается с '.' символ («точечный файл»). Если приложению необходимо создать более одного точечного файла, их следует поместить в подкаталог с именем, начинающимся с «.». символ («точечный каталог»). В этом случае файлы конфигурации не должны начинаться с '.' персонаж. Рекомендуется, чтобы программы, кроме автосохранения и блокировки файлов, воздерживались от создания неточечных файлов или каталогов в домашнем каталоге без вмешательства пользователя.

Читайте также: