Я ищу способ сделать каталог доступным только для его родительских каталогов. То есть предположим, что у вас есть два каталога, A и B , на одном уровне в файловой иерархии. Теперь предположим, что у вас есть каталог A' который является подкаталогом A Я хотел бы обеспечить, чтобы A мог получить доступ к содержимому A' а B - нет.

Моя проблема в том, что я хотел бы использовать библиотеку (каталог A), которая построена поверх устаревшей версии другой библиотеки (каталог A'). В то же время я хочу использовать новейшую версию этой устаревшей библиотеки (каталог B). Я хочу убедиться, что люди каким-то образом не используют библиотеку A и не связываются с новой библиотекой B , заставляя библиотеку A использовать библиотеку A' .

Я мог бы просто связать A с библиотекой B , но тогда я рискую совместимостью.

2 ответа2

0

Использовать разрешения групп,

предположим, что у вас есть группа 'foo' и другая группа 'bar'

   /
   |
   +-A
   | |
   | +- A'
   |
   +-B
  • chgrp -R bar B чтобы установить разрешение группы для подкаталога B.
  • chgrp -R foo A чтобы установить разрешение группы для подкаталога A.

И сделайте некоторых пользователей членами группы 'foo', чтобы они имели доступ к A и его дочерним подкаталогам под ним. Теперь пользователи, принадлежащие к группе 'bar', также не будут иметь доступа к A и связанным с ним подкаталогам.

0

То, что вы просите, не имеет смысла.

Только работающая программа может получить доступ к каталогу; каталог не может "получить доступ" к другому каталогу.

Когда вы запускаете программу, ваша учетная запись становится владельцем этого запущенного процесса (если вы запускаете ps -fa , вы видите свой UID во всех своих программах)1.

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

В случае, когда программа A пытается установить связь с библиотекой, разрешения файловой системы в /path/to/LibraryX сравниваются с владельцем процесса программы A. Даже если для файла /path/to/ProgramA установлены разрешения, они не учитываются, когда уже запущенный экземпляр программы A пытается прочитать /path/to/LibraryX . Разрешения проверяются только в отношении владельца процесса.


[1] - Исключением являются программы с включенным битом setuid. Когда вы запускаете эти программы (например, passwd), тогда владельцем процесса становится владелец файла, а не вы. Вот почему passwd может редактировать /etc/shadow даже если ваша учетная запись не может: она всегда запускается с правами root.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .