Почему Linux требует, чтобы пользователь был root / использовал sudo / был специально авторизован на монтирование для монтирования чего-либо? Похоже, решение о том, разрешать ли пользователю монтировать что-либо, должно основываться на его правах доступа к исходному тому / сетевому ресурсу и точке монтирования. Пара применений для монтирования без полномочий root - это монтирование образов файловой системы в направлении, принадлежащем пользователю, и подключение сетевого ресурса в каталог, принадлежащий пользователю. Кажется, что если пользователь контролирует обе стороны уравнения монтирования, все должно быть круто.
Разъяснение ограничения доступа:
Я чувствую, что должен иметь возможность монтировать все, что в противном случае пользователь имел бы доступ к точке монтирования, владельцем которой является пользователь.
Например, на моем компьютере / dev / sda1 принадлежит пользователю root и групповой диск с разрешениями brw-rw----
. Поэтому пользователи без полномочий root не могут связываться с / dev / sda1 и, очевидно, что mount не должен позволять монтировать его. Однако, если пользователь владеет /home/my_user/my_imagefile.img и точкой монтирования / home / my_user / my_image /, почему он не может смонтировать этот файл образа в этой точке монтирования с помощью:
mount /home/my_user/my_imagefile.img /home/my_user/my_image/ -o loop
Как отметил Кормак, существует проблема suid. Поэтому необходимо добавить некоторые ограничения, чтобы suid не был проблемой, а также, возможно, некоторыми другими проблемами. Возможно, один из способов сделать это - заставить ОС обрабатывать все файлы как принадлежащие пользователю, который выполнял монтирование. Однако для простого чтения / записи / выполнения я не понимаю, почему это будет проблемой.
Случай использования:
У меня есть учетная запись в лаборатории, где мое домашнее пространство ограничено до 8 ГБ. Это крошечный и очень очень раздражающий. Я хотел бы смонтировать том nfs со своего персонального сервера, чтобы существенно увеличить количество места, которое у меня есть. Однако из-за того, что Linux не допускает подобных вещей, я застрял с файлами scp'а туда-сюда, чтобы остаться ниже предела 8 ГБ.
источник
sshfs
? Он будет монтировать удаленный каталог,ssh
как вы сами, без необходимости рут-доступа. Это просто нужно FUSE (Файловая система в UserSpacE) для установки.sftp
это немного приятнее в использовании, чемscp
.Ответы:
Это и историческое ограничение, и ограничение безопасности.
Исторически большинство дисков не было съемными. Поэтому имеет смысл ограничить монтирование людьми, которые имеют законный физический доступ, и они, вероятно, будут иметь доступ к корневой учетной записи. Записи fstab позволяют администраторам делегировать монтирование другим пользователям для съемных дисков.
С точки зрения безопасности, есть три основные проблемы с разрешением произвольным пользователям монтировать произвольные блочные устройства или образы файловой системы в произвольных местах.
/etc
,/etc/shadow
содержащую пароль root, который вы знаете. Это исправлено, позволяя пользователю монтировать файловую систему только в директории, которой он владеет.nosuid
иnodev
, подразумеваемыми наличиемuser
in/etc/fstab
.До сих пор соблюдая
user
когдаmount
не называется root достаточно. Но в целом возможность создания файла, принадлежащего другому пользователю, проблематична: содержание этого файла может быть связано с предполагаемым владельцем, а не с монтажником. Случайная копия, сохраняющая атрибуты root в другую файловую систему создаст файл, принадлежащий объявленному, но незадействованному владельцу. Некоторые программы проверяют законность запроса на использование файла, проверяя, что файл принадлежит конкретному пользователю, и это больше не будет безопасным (программа должна также проверять, что каталоги на пути доступа принадлежат этому пользователю; если бы разрешалось произвольное монтирование, им также пришлось бы проверять, что ни один из этих каталогов не является точкой монтирования, где монтирование не было создано ни пользователем root, ни желаемым пользователем).Для практических целей в настоящее время возможно монтировать файловую систему без полномочий root через FUSE . Драйверы FUSE запускаются как пользователь монтирования, поэтому нет риска повышения привилегий за счет использования ошибки в коде ядра. Файловые системы FUSE могут отображать только те файлы, которые пользователь имеет право создавать, что решает последнюю проблему, описанную выше.
источник
Если пользователь имеет прямой доступ на запись к блочному устройству и может смонтировать это блочное устройство, он может записать исполняемый файл suid на блочное устройство, смонтировать его и выполнить этот файл, и, таким образом, получить root-доступ к системе. Вот почему монтирование обычно ограничено root.
Теперь root может позволить обычным пользователям монтировать с определенными ограничениями, но он должен убедиться, что, если у пользователя есть доступ на запись к блочному устройству, монтирование не разрешает suid, а также devnodes, у которых есть похожая проблема (пользователь может создать узел, который дает им доступ на запись к важному устройству, к которому у них не должно быть доступа на запись).
источник
Это не всегда требует супер привилегий. Из
man mount
источник
mount()
системный вызов всегда требует root. Утилиты suid могут стать пользователем root и разрешить монтирование не-root пользователям, и еслиmount
команда установлена suid, она будет делать это на основе флага пользователя в fstab. Другие исполняемые файлы suid были написаны, чтобы позволить пользователям монтировать, напримерpmount
, который позволяет пользователям монтировать внешний носитель и применяет соответствующие ограничения, такие как nosuid, nodev.Kormac и другие указали, что это не дилемма, которую вы представляете; мне кажется, это сводится к философии явного предоставления пользователям привилегий по сравнению с системой, в которой все пользователи будут иметь неизменное право монтировать файловую систему.
Жиль решает некоторые проблемы безопасности, связанные с монтированием файловых систем. Я буду задним числом избегать прологизированной и неосторожной дискуссии о потенциальных технических проблемах, связанных с этим (см. Комментарии), но я думаю, что это справедливо, что ненадежные пользователи не имеют неизменного права монтировать жесткие диски.
Проблема, связанная с виртуальными и удаленными файловыми системами (или удаленными файловыми системами через виртуальные файловые системы, как FUSE), является менее существенной, но это не решает вопрос безопасности (хотя FUSE может, и это, безусловно, решит вашу проблему). Также важно учитывать, что к данным в таких файловых системах почти всегда можно получить доступ без необходимости монтирования устройства, либо путем передачи файлов, либо с помощью инструментов, которые извлекают из образов без монтирования, поэтому система, которая не позволяет вам монтировать что-либо, делает не представляет непреодолимой проблемы в отношении доступа к данным, которые вы странным образом поместили в файл изображения или (что более понятно) хотите получить из удаленной системы. Если у вас есть ситуация, когда это не так, возможно, стоит спросить:
Что именно я пытаюсь сделать?
Где я пытаюсь это сделать?
Если администрация системы справедлива, то № 2 объясняет, почему № 1 невозможен для вас. Если администрация системы не справедлива, это политика . Решение проблемы «Мой системный администратор не справедлива» не в том, чтобы перепроектировать ОС, чтобы системные администраторы во всем мире не могли ограничивать пользователей.
Система позволяет суперпользователю ограничивать ваши действия либо явным образом, либо бездействием («Мы не предоставляем FUSE» и т. Д.). Привилегии являются одним из механизмов, с помощью которого это достигается. Может быть, нехорошо, когда вам говорят: «Вам не нужно этого делать», но если это правда… Que sera… вам не нужно этого делать. Используйте ftp и т. Д. Если это не так, вы должны приставать к ответственным.
источник
К сведению: новейшие ядра имеют поддержку «пространства имен». Обычные пользователи могут создавать пространство имен, а внутри этого пространства имен становиться
root
и делать забавные вещи, такие как монтирование файловых систем.Однако он не дает вам «настоящих» прав суперпользователя - вы можете делать только то, что вам уже разрешено (т.е. вы можете монтировать только те устройства, которые уже можете прочитать).
http://lwn.net/Articles/531114/ См. раздел 4.
источник
root
внутри пространства имен пользователя, но оно не позволяет вам монтировать обычные типы файловых систем, даже если вы можете читать и записывать блочные устройства. Смотрите эксперимент 2 здесь: unix.stackexchange.com/questions/517317/…Поскольку данные в файловой системе, которую они намереваются монтировать, могут поставить под угрозу безопасность сервера или даже привести к ее поломке (если она была специально создана таким образом).
источник
owner
иuser(s)
установленыnosuid
. Вы бы не хотели, чтобы кто-то мог так легко обойти это, позволив им вручную удалитьnosuid
В GNOME gvfs не требуется root для монтирования удаленной файловой системы (ftp или ssh), а gnome-mount также не требуется root для монтирования внешнего хранилища (USB-накопитель, CD / DVD и т. Д.).
Большинство систем, вероятно, не захотят иметь весь GNOME только для удаленного монтирования, тогда вы можете использовать lufs , sshfs или ftpfs .
gvfs, lufs, sshfs и ftpfs используют FUSE, чтобы позволить пользователям без полномочий root монтировать виртуальную файловую систему; и в отличие от mount
-o user
, FUSE не требует, чтобы системный администратор организовывал определенные монтирования. Если у вас есть привилегия для каталога монтирования и любых ресурсов, которые необходимы для построения файловой системы, вы можете создать FUSE mount.Потому
mount
что в первую очередь / изначально предназначен для локальной файловой системы, которая почти всегда включает аппаратное обеспечение.источник