- Как узнать домашнюю директорию любого пользователя Linux
- Где хранится системная информация о домашних каталогах пользователей в Linux
- Команда pwd в Unix
- Оператор
- rmnssnvsk / structure-dir-linux.md
- Cтруктура файловой системы Linux
- / — корень
- /bin — (binaries) бинарные файлы пользователя
- /sbin — (system binaries) системные исполняемые файлы
- /etc — (etcetera) конфигурационные файлы
- /dev — (devices) файлы устройств
- /proc — (proccess) информация о процессах
- /var (variable) — Переменные файлы
- /var/log — Файлы логов
- /var/lib — базы данных
- /var/mail — почта
- /var/spool — очереди
- /var/lock — файлы блокировок
- /var/run — PID процессов
- /tmp (temp) — Временные файлы
- /usr — (user applications) Программы пользователя
- /usr/bin/ — Исполняемые файлы
- /usr/sbin/
- /usr/lib/ — Библиотеки
- /usr/local — Файлы пользователя
- /home — Домашняя папка
- /boot — Файлы загрузчика
- /lib (library) — Системные библиотеки
- /opt (Optional applications) — Дополнительные программы
- /mnt (mount) — Монтирование
- /media — Съемные носители
- /srv (server) — Сервер
- /run — процессы
- /sys (system) — Информация о системе
- Выводы
Как узнать домашнюю директорию любого пользователя 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 можно так, поставив перед ним тильду
А теперь посмотреть содержимое этого файла:
Ну и то, к чему мы стремились: посмотреть путь к домашней директории пользователя:
Так гораздо удобнее, чем парсить и разбирать файл /etc/passwd . За нас всю эту работу делает операционная система! 😉
Источник
rmnssnvsk / structure-dir-linux.md
Структура директорий в ОС Linux
В этом каталоге хранятся основные команды операционной системы, такие как команды оболочки и команды файловой системы (ls, cp и т.д.).
Здесь хранятся образы ядер Linux и менеджер загрузки: grub, lilo и т.д.
Директория содержит файлы устройств, подключенные к операционной системе. В Linux вообще всё рассматривается, как файл, даже различные устройства, такие как принтеры, жёсткие диски, сканеры и т.д. Для получения доступа к определённому устройству, необходимо чтобы существовал специальный файл. Аналогично устроено большинство UNIX-подобных операционных систем.
В этой директории находится основная часть конфигурационных файлов самой операционной системы (настройки сети, список пользователей, групп и т.д.) и различных программ (Apache, Samba и т. д.).
В этом месте должна размещаться вся личная информация пользователей системы. Почему должна? Потому что владелец компьютера может хранить свою личную информацию в любом понравившемся ему месте. В целях безопасности самой операционной системы и пользовательских данных хранить последние строго рекомендуется в директории /home. Для получения более высокой надежности операционной системы и сохранности пользовательской информации директорию /home рекомендуется выделить в отдельный раздел жесткого диска.
Это Домашняя папка пользователя usermame. В ней хранится пользовательская часть конфигурационных файлов (настройки пользовательских программ) и вся личная информация пользователя. Linux является многопользовательской системой и поэтому каждый пользователь имеет уникальный каталог для персональных файлов. Этот каталог называется Домашней папкой пользователя. Домашняя папка суперпользователя root располагается в корне файловой системы. Такое разделение пользовательских директорий от файлов операционной системы упрощает резервирование данных и повышает надежность самой операционной системы.
В lost+found скидываются файлы, на которых не было ссылок ни в одной директории, хотя их inod не были помечены как свободные. Допустим при удалении файла из директории произошёл сбой (выключилось питание), то в системе останется потерянный inod, который вроде как и указывает на корректный файл, но этот файл не содержится ни в одной директории. В ext2 и других нежурналируемых файловых системах задача восстановления таких файлов ложится на fsck. Он находит inod, на которые нет ссылок, и создаёт на них ссылки в lost+found. После этого пользователь сможет просмотреть файлы и при необходимости переместить им куда надо, вернув нужные имена. В ext3 и в других журналируемых файловых системах fsck просматривает журнал и видя, что операция завершилась не полностью, откатывает ее. Поэтому потерянных inod в журналируемых файловых системах находиться меньше.
Эта директория предназначена для хранения системных библиотек, необходимые для работы программ из директорий /bin и /sbin и операционной системы вцелом.
Директория, используемая для автоматического монтирования различных устройств USB-накопителей, CD-ROM и т.д. При вставке в привод CD-ROM диска он автоматически подключается во вложенный каталог этой директории.
Обычно эта директория используется для ручного подключения устройств. В эту директорию командой mount «руками» монтируются различные USB-накопители, CD-ROM и т.д.
Директория, в которой обычно размещаются установленные программы, имеющие большой дисковый размер или вспомогательные пакеты (например /opt/openoffice.org).
/proc — это директория, к которой примонтирована виртуальная файловая система procfs. Различная информация, которую ядро может сообщить пользователям, находится в «файлах» каталога /proc. Например, в файле /proc/modules находится список загруженных модулей ядра. А в файле /proc/cpuinfo — информация о процессоре компьютера. Подробнее можно прочитать здесь.
Это домашний каталог или Домашняя папка суперпользователя. Эта директория фактически ничем не отличается от директории обычного пользователя. Данная директория по умолчанию всегда расположена в корневом каталоге файловой системы. Это было сделано для предотвращения проблем с доступом к директории /home. В случае когда к каталогу /home по какой-то причине невозможно получить доступ, в системе всегда есть возможность залогиниться под учетной записью суперпользователя, для решения возникших проблем с доступом.
Основные системные программы для администрирования и настройки системы (iptables, ifconfig и т.д.).
Параметры, которые специфичные для окружения системы. Чаще всего данная директория пуста.
/sys — это директория, к которой примонтирована виртуальная файловая система sysfs, которая добавляет в пространство пользователя информацию ядра Linux о присутствующих в системе устройствах и драйверах. В версии ядра ниже 2.6 не использовалась.
/sys/block содержит директории всех блочных устройств, присутствующих в данный момент в системе.
В этой директории находится список шин, определенных в ядре Linux (eisa, pci и т.д.).
Каталог содержит список группированных устройств по классам (printer, scsi-devices и т.д.).
Временное хранилище данных. Аналог папки в ОС Windows — C:/Windows/Temp. Все пользователи имеют права чтения и записи в этом каталоге.
В этом каталоге хранятся все установленные пакеты программ, документация, исходный код ядра и система X Window. Все пользователи кроме суперпользователя root имеют доступ только для чтения. Может быть смонтирована по сети и может быть общей для нескольких машин.
Директория дополнительных программ для всех учетных записей.
Каталог для размещения доступных компьютерных игр в системе.
Заголовочные файлы С++.
Системные библиотеки для программ, расположенных в директории /usr.
По стандарту /usr должен быть общим для нескольких компьютеров и смонтирован по сети, а /usr/local должен содержать установленные пакеты программы только на локальной машине (к примеру, /usr — бюджет семьи, а /usr/local — личный кошелек каждого). Но чаще всего директория /usr/local используется для установки программ, которые не предназначены для конкретного дистрибутива (к примеру для пакетного дистрибутива Ubuntu в /usr находятся «родные» установленные пакеты, а /usr/local находятся собранные пакеты из исходников).
Дополнительные системные программы.
Общие данные установленных программ.
В каталоге находятся все иконки системы.
Директория, в которой обычно находится справочная документация по установленным программам.
Исходные кода (например, здесь располагаются исходные кода ядра).
Это каталог для часто меняющихся данных. Здесь находятся журналы операционной системы, системные log-файлы, cache-файлы и т. д.
В этом месте хранятся все кэши различных программ.
В этом месте расположены файлы с игровыми достижениями.
Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.).
Здесь лежат lock-файлы, указывающие на занятость некоторого ресурса.
В этом месте хранятся все log-файлы.
Задачи, ожидающие обработки (например, очереди печати, непрочитанные или не отправленные письма, задачи cron и т. д.).
В этом месте размещаются Web-страницы для сервера Apache.
Источник
Cтруктура файловой системы Linux
Понимание файловой системы Linux, структуры каталогов, размещения конфигурационных, исполняемых и временных файлов поможет вам лучше разбираться в своей системе и стать успешным системным администратором. Файловая система Linux будет непривычна именно для новичка, только что перешедшего с Windows, ведь здесь все совсем по-другому.
В отличие от Windows, программа не находится в одной папке, а, как правило, распределена по корневой файловой системе. Это распределение поддается определенным правилам. Вы когда-нибудь задавались вопросом, почему некоторые программы находятся в папке /bin, или /sbin, /usr/sbin, /usr/local/bin, в чем разница между этими каталогами?
Например, программа less, находится в каталоге /usr/bin, но почему не в /sbin или /usr/sbin. А такие программы, как ifconfig или fdisk находятся в каталоге /sbin и нигде иначе. В этой статье будет полностью рассмотрена структура файловой системы Linux, после ее прочтения вы сможете понять смысл использования большинства папок в корневом каталоге Linux.
/ — корень
Это главный каталог в системе Linux. По сути, это и есть файловая система Linux. Здесь нет дисков или чего-то подобного, как в Windows. Вместо этого, адреса всех файлов начинаются с корня, а дополнительные разделы, флешки или оптические диски подключаются в папки корневого каталога.
Только пользователь root имеет право читать и изменять файлы в этом каталоге. Обратите внимание, что у пользователя root домашний каталог /root, но не сам /.
/bin — (binaries) бинарные файлы пользователя
Этот каталог содержит исполняемые файлы. Здесь расположены программы, которые можно использовать в однопользовательском режиме или режиме восстановления. Одним словом, те утилиты, которые могут использоваться пока еще не подключен каталог /usr/. Это такие общие команды, как cat, ls, tail, ps и т д.
/sbin — (system binaries) системные исполняемые файлы
Так же как и /bin, содержит двоичные исполняемые файлы, которые доступны на ранних этапах загрузки, когда не примонтирован каталог /usr. Но здесь находятся программы, которые можно выполнять только с правами суперпользователя. Это разные утилиты для обслуживания системы. Например, iptables, reboot, fdisk, ifconfig,swapon и т д.
/etc — (etcetera) конфигурационные файлы
В этой папке содержатся конфигурационные файлы всех программ, установленных в системе. Кроме конфигурационных файлов, в системе инициализации Init Scripts, здесь находятся скрипты запуска и завершения системных демонов, монтирования файловых систем и автозагрузки программ. Структура каталогов linux в этой папке может быть немного запутанной, но предназначение всех их — настройка и конфигурация.
/dev — (devices) файлы устройств
В Linux все, в том числе внешние устройства являются файлами. Таким образом, все подключенные флешки, клавиатуры, микрофоны, камеры — это просто файлы в каталоге /dev/. Этот каталог содержит не совсем обычную файловую систему. Структура файловой системы Linux и содержащиеся в папке /dev файлы инициализируются при загрузке системы, сервисом udev. Выполняется сканирование всех подключенных устройств и создание для них специальных файлов. Это такие устройства, как: /dev/sda, /dev/sr0, /dev/tty1, /dev/usbmon0 и т д.
/proc — (proccess) информация о процессах
Это тоже необычная файловая система, а подсистема, динамически создаваемая ядром. Здесь содержится вся информация о запущенных процессах в реальном времени. По сути, это псевдофайловая система, содержащая подробную информацию о каждом процессе, его Pid, имя исполняемого файла, параметры запуска, доступ к оперативной памяти и так далее. Также здесь можно найти информацию об использовании системных ресурсов, например, /proc/cpuinfo, /proc/meminfo или /proc/uptime. Кроме файлов в этом каталоге есть большая структура папок linux, из которых можно узнать достаточно много информации о системе.
/var (variable) — Переменные файлы
Название каталога /var говорит само за себя, он должен содержать файлы, которые часто изменяются. Размер этих файлов постоянно увеличивается. Здесь содержатся файлы системных журналов, различные кеши, базы данных и так далее. Дальше рассмотрим назначение каталогов Linux в папке /var/.
/var/log — Файлы логов
Здесь содержатся большинство файлов логов всех программ, установленных в операционной системе. У многих программ есть свои подкаталоги в этой папке, например, /var/log/apache — логи веб-сервера, /var/log/squid — файлы журналов кеширующего сервера squid. Если в системе что-либо сломалось, скорее всего, ответы вы найдете здесь.
/var/lib — базы данных
Еще один тип изменяемых файлов — это файлы баз данных, пакеты, сохраненные пакетным менеджером и т д.
/var/mail — почта
В эту папку почтовый сервер складывает все полученные или отправленные электронные письма, здесь же могут находиться его логи и файлы конфигурации.
/var/spool — очереди
Изначально, эта папка отвечала за очереди печати на принтере и работу набора программ cups.
/var/lock — файлы блокировок
Здесь находятся файлы блокировок. Эти файлы означают, что определенный ресурс, файл или устройство занят и не может быть использован другим процессом. Apt-get, например, блокирует свою базу данных, чтобы другие программы не могли ее использовать, пока программа с ней работает.
/var/run — PID процессов
Содержит файлы с PID процессов, которые могут быть использованы, для взаимодействия между программами. В отличие от каталога /run данные сохраняются после перезагрузки.
/tmp (temp) — Временные файлы
В этом каталоге содержатся временные файлы, созданные системой, любыми программами или пользователями. Все пользователи имеют право записи в эту директорию.
Файлы удаляются при каждой перезагрузке. Аналогом Windows является папка Windows\Temp, здесь тоже хранятся все временные файлы.
/usr — (user applications) Программы пользователя
Это самый большой каталог с большим количеством функций. Тут наиболее большая структура каталогов Linux. Здесь находятся исполняемые файлы, исходники программ, различные ресурсы приложений, картинки, музыку и документацию.
/usr/bin/ — Исполняемые файлы
Содержит исполняемые файлы различных программ, которые не нужны на первых этапах загрузки системы, например, музыкальные плееры, графические редакторы, браузеры и так далее.
/usr/sbin/
Содержит двоичные файлы программ для системного администрирования, которые нужно выполнять с правами суперпользователя. Например, таких как Gparted, sshd, useradd, userdel и т д.
/usr/lib/ — Библиотеки
Содержит библиотеки для программ из /usr/bin или /usr/sbin.
/usr/local — Файлы пользователя
Содержит файлы программ, библиотек, и настроек созданные пользователем. Например, здесь могут храниться программы собранные и установленные из исходников и скрипты, написанные вручную.
/home — Домашняя папка
В этой папке хранятся домашние каталоги всех пользователей. В них они могут хранить свои личные файлы, настройки программ и т д. Например, /home/sergiy и т д. Если сравнивать с Windows, то это ваша папка пользователя на диске C, но в отличии от WIndows, home как правило размещается на отдельном разделе, поэтому при переустановке системы все ваши данные и настройки программ сохранятся.
/boot — Файлы загрузчика
Содержит все файлы, связанные с загрузчиком системы. Это ядро vmlinuz, образ initrd, а также файлы загрузчика, находящие в каталоге /boot/grub.
/lib (library) — Системные библиотеки
Содержит файлы системных библиотек, которые используются исполняемыми файлами в каталогах /bin и /sbin.
Библиотеки имеют имена файлов с расширением *.so и начинаются с префикса lib*. Например, libncurses.so.5.7. Папка /lib64 в 64 битных системах содержит 64 битные версии библиотек из /lib. Эту папку можно сравнить с WIndows\system32, там тоже сгружены все библиотеки системы, только там они лежат смешанные с исполняемыми файлами, а здесь все отдельно.
/opt (Optional applications) — Дополнительные программы
В эту папку устанавливаются проприетарные программы, игры или драйвера. Это программы созданные в виде отдельных исполняемых файлов самими производителями. Такие программы устанавливаются в под-каталоги /opt/, они очень похожи на программы Windows, все исполняемые файлы, библиотеки и файлы конфигурации находятся в одной папке.
/mnt (mount) — Монтирование
В этот каталог системные администраторы могут монтировать внешние или дополнительные файловые системы.
/media — Съемные носители
В этот каталог система монтирует все подключаемые внешние накопители — USB флешки, оптические диски и другие носители информации.
/srv (server) — Сервер
В этом каталоге содержатся файлы серверов и сервисов. Например, могут содержаться файлы веб-сервера apache.
/run — процессы
Еще один каталог, содержащий PID файлы процессов, похожий на /var/run, но в отличие от него, он размещен в TMPFS, а поэтому после перезагрузки все файлы теряются.
/sys (system) — Информация о системе
Назначение каталогов Linux из этой папки — получение информации о системе непосредственно от ядра. Это еще одна файловая система организуемая ядром и позволяющая просматривать и изменить многие параметры работы системы, например, работу swap, контролировать вентиляторы и многое другое.
Выводы
Теперь структура файловой системы Linux не кажется вам темным лесом. Конечно еще есть с чем разбираться, одна только подсистема /proc, /sys или /dev чего стоит. Но база уже заложена. Если я что-то упустил — напишите в комментариях.
Источник