Примеры того, почему всемирно читаемый каталог / root - это плохо?

Мы иногда называем их файловыми системами , потому что иногда они каталоги - это точки монтирования. Вот вам и единственный вопрос, который вы задали ...

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

  1. Логическая структура, используемая для организации данных на носитель информации.
  2. Методология, используемая ОС для предоставления процессам унифицированного доступа к данным.

Концепция файлов и каталогов - это метафора. Для компьютера это только данные, а все носители - не что иное, как устройства, которые могут хранить данные. Некоторые устройства позволяют читать и записывать данные (например, HDD), другие устройства позволяют только чтение данных (например, CD-ROM), и есть даже устройства, которые позволяют только записывать данные (например, принтер). Мы используем метафору файла и каталога для структурирования данных, чтобы иметь доступ к небольшим фрагментам данных, а не ко всему одновременно.

Файловые системы, которые мы помещаем на носители, например ext4, xfs, fat выполняют часть структурирования. Мы используем их для наложения меток на блоки данных (файлов) и для создания согласованного структурированного списка всех меток (каталогов). Структурированный список на самом деле представляет собой дерево. Самый важный аспект - это то, что у дерева ровно одно начало - корень. Поддержание этой структуры и обеспечение доступности данных - довольно сложная задача, поэтому существует не только одна разновидность файловой системы.

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

  1. ОС предлагает только один (программный) интерфейс для доступа и взаимодействия с файлами и каталогами. Для программ / процессов не имеет значения, является ли файловая система на устройстве хранения ext2, xfs, fat или чем-то еще. Программы / процессы имеют единообразный доступ к файлам и каталогам.

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

Добавление файловой системы устройства хранения к виртуальной файловой системе называется «монтированием» файловой системы. Когда ваш Linux запускается, ядро ​​создает виртуальную файловую систему (VFS). Сразу после создания он пуст и состоит только из своей точки входа, также известной как его корень, записанный / . Затем ядро ​​монтирует файловую систему в корень VFS. Это либо ramdisk, либо непосредственно файловая система в разделе жесткого диска. Поскольку он добавляется в корень VFS, этот раздел часто называют корневой файловой системой.

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

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

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

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

6
05.05.2017, 23:36
4 ответа

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

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

2
27.01.2020, 20:29

По сути, я думаю, что все сводится к выбору, сделанному основными разработчиками, и не более того. Почему? Потому что по умолчанию в /root не должно быть почти ничего ценного. Никто не должен входить в систему как пользователь root для общих целей.

Например, во FreeBSD каждый может прочитать /root. Некоторые файлы внутри /root не могут быть прочитаны из соображений безопасности, но вы все равно можете «видеть» эти файлы с помощью ls (просто не можете их прочитать). Например, .history имеет значение -rw-------, но .login имеет значение -rw-r--r-- .

FreeBSD имеет несколько иной подход к безопасности, чем Linux. Исторически FreeBSD предназначалась для серверов, и хотя ее можно запускать как рабочий стол, она действительно лучше (по умолчанию) в качестве сервера.

Лично я не вижу ничего плохого в такой настройке (/root можно прочитать).

В /root во FreeBSD почти ничего нет, кроме конфигураций. Почта должна быть переадресована реальному пользователю. Никто не должен входить в систему как пользователь root. Учетную запись следует использовать только для установки и настройки программного обеспечения, а также задач обслуживания. Кроме нескольких файлов, чувствительных к безопасности (таких как .history), по моему мнению, в FreeBSD нечего скрывать в /root.

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

2
27.01.2020, 20:29

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

# john-the-ripper /etc/shadow > ~/cracked-passwords.txt
0
27.01.2020, 20:29

Если бы ~root был доступен для записи, любой пользователь мог бы добавить свой SSH-ключ в ~root/.ssh/authorized_keys, а затем получить root-доступ просто через ssh root@ какой-то хост.

Если ~root «просто» доступен для чтения, у вас все еще есть доступ к файлу .bash_history пользователя root, который может содержать пароли или другие учетные данные, введенные на командная строка. Или случайно ввели или вставили в командную строку.

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

Конечно, для этих проблем есть решения, такие как запрет root на вход в SSH, даже с авторизацией по ключу. Или отключить историю оболочки. Или быть прилежным о очистке его. Но это устранения; они являются слоями луковицы безопасности.

Наличие ~root равным 0700 является еще одним уровнем безопасности. Если не хочешь плакать, не чисти луковицу больше, чем нужно.

0
27.01.2020, 20:29

Теги

Похожие вопросы