|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Ramazan Jah-Far 2:5020/400 22 Jun 2004 00:01:11 To : Victor Wagner Subject : Re: symlinks vs. hardlinks -------------------------------------------------------------------------------- Hi! In fido7.ru.linux, Victor Wagner wrote: RJF>> Здесть есть динамика (управление) и статика (состояние ФС на RJF>> некий момент). Если отделить первое от второго, получим RJF>> бездыханный труп (ФС), которому BTW для _хранения_ RJF>> информации нафиг не нужны директории, права доступа и прочая RJF>> "файловая система"-тичность. :) VW> Я тебя опровергну одним маленьким примером. Представь себе файловую VW> систему iso9660 - где там динамика? Дело в том, что под динамикой я имел в виду не изменение ФС, а просто активное её использование. Это твоя же мысль про связь "структура<->задачи", только другими словами. Смысл в том, что cтруктура нужна не сама по себе. VW>>> Второе ограничение - отсутствие некоей классификации дуг. RJF>> А зачем? // Лучше на примере. VW> Hа примере. Берем почти вырожденный пример - реплика в web-форуме. VW> Она связана VW> 1. Со своим автором (которому соответствует скорее всего какой-нибудь VW> объект в системе. Ведь должен же юзер как-то авторизовываться) VW> 2. С репликой, в ответ на которую она дана. VW> 3. С чем-то что послужило завязкой данной дискуссии. VW> VW> Со статьей опубликованной на сайте всё еще сложнее. У нее кроме связей VW> типа "Автор" и "рубрика" может быть связь "Переводчик", если она VW> переводная, связь "Редактор", связь "в ответ на эту статью поступила" с VW> репликой в форуме, и связь "См. также" с другими статьями, на которые VW> ссылается автор работы (вживую всё это можно увидеть на VW> www.libertarium.ru или любом другом сайте на движке Communiware). Это мне напоминает организацию базы знаний (вот, опять не помню правильный термин). Это, конечно-же, хорошо, но для ФС, по моему глубокому убеждению, overkill. RJF>> Пользователь -- далеко не единственный пользователь ФС, RJF>> есть ещё ОС и ПО. VW> Мы тут вели речь о той абстракции, которая видима пользователю. О том VW> чем там внутри пользуются ОС и ПО - разговор отдельный. Опять же, я пока говорю об организации ФС на уровне "максимальной видимости", т.е. на том уровне, на котором с ней работает OS/VFS/FS-driver. С этой высоты FS односвязна или, иными словами, прозрачна для OS/VFS/FS-driver. И отсюда должны быть видны и доступны те особенности её структуры, которые обеспечивают разделение её на видимые пользователям домены. VW> Хотя в рамках unix-way ПОЛЬЗОВАТЕЛЬСКОЕ ПО должно видеть VW> ту же самую картину, что и пользователь Вообще, да. RJF>> Смысл в том, что злонамеренный пользователь откладывает (ln) RJF>> suid-ные бинари впрок для осуществления privilege escalation RJF>> в будущем. Кстати, тот пример я привёл для одновременной демонстрации двух "противоправных" действий: * засорение диска в обход квоты * складирование suid root бинарей на будущее VW> Кстати говоря, вот тут понятие точек монтирования спасает VW> современные Unix-ы на 100%. Ясен пень. VW> Если какой-то обормот-админ дал юзеру права записи на VW> той же партиции, что у него /usr/sbin А также: /bin (login, su, mount, umount, ping) /sbin (unix_chkpwd) /usr/X11R6/bin (X) /usr/bin (at, chage, chfn, chsh, crontab, gpasswd, ...) /usr/lib (libfakeroot.so.X.X.X, pt_chown, ssh-keysign) :) В смысле, что обычно от остальных отделяют /home, /var и вообще все world-writable директории, а не директории с suid root бинарями. Hо это всё под корень рубит мечты иметь cross-mount hardlinks. VW> - баклан он, и никто более. Hо, тем не менее, это не повод оправдывать кривость hardlinks и безответственность их авторов. В придаточном предложении "баклан он, и никто более", ударение можно поставить и на "баклан", и на "он". Я прокомментирую второй вариант. Я абсолютно уверен, что баклан не только "он" (админ). Изобретатели hardlinks как раз и являются настоящими бакланами -- дристючим стадом бакланов. Основная проблема с hardlinks в том, что они не стыкуются с юниксоидной системой разделения прав. Ownership/permissions _файла_ на влияют на способность пользователей создавать его hardlinks. А по сути, пользователь, создавая hardlink чужого файла, как-бы заявляет намерение его использовать и сохранить от удаления (буде владелец вознамерится). Кстати, в подобном случае использование обычно ограничится чтением или исполнением. Почему бы тогда этот файл просто не скопировать? -- и можно было бы делать с ним что угодно... В результате, одна сторона файл использует, а другая расплачивается своей дисковой квотой. Получается, что для чтения и копирования файлов предусмотрен механизм защиты (read permission вместе с правами родительских каталогов), для исполнения и модификации тоже, а для блокирования удаления -- нет. Кстати, блокирование удаления -- очень частный аспект применения hardlinks. Семантически создание hardlink эквивалентно дополнительному классифицированию файла (что не есть полноценное изменение классификации, коим является mv). Скажем, возьмём /etc/shadow и доклассифицируем его как файл в очереди на печать, или в очереди отправляемых почтовых сообщений, или как web-страницу и т.д. Другое дело, что права доступа к очереди не позволят нам осуществить желаемую доклассификацию, да и сервис будет работать от непривилегированного пользователя, но суть проблемы становится очевидной: доклассификация, да и вообще реклассификация _должна быть ограничена_. Аналог из повседневной жизни: представь, что кто-нибудь "доклассифицирует" твой домашний номер как "секс по телефону". Или твой домашний адрес как "распродажа perfumes". P.S. Hаиболее разумной политикой, если не плодить лишние permissions или иные атрибуты, является запрет создавать hardlinks на чужие файлы любому индивиду, кроме суперпользователя. Такая политика используется в grsec. -- Bye! Ramazan --- ifmail v.2.15dev5.3 * Origin: UkrNet (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/914044a0a0cd.html, оценка из 5, голосов 10
|