В каких системах // foo / bar отличается от / foo / bar?

Это была вещь SELinux. Войдите на сервер NFS и выполните

semanage fcontext -a -t ssh_home_t '/exports/[^/]+/\.ssh(/.*)?'
restorecon -v -r /exports/$USER

, предполагая, что вы обслуживаете свои общие ресурсы NFS из `/ exports '.

114
26.01.2016, 12:13
8 ответов

Несколько десятилетий назад, Tektronix Utek (BSD 4. 2 на базе Unix, сначала на процессорах National Semiconductors 32016, затем Motorola 68020s) предоставляла нечто под названием DFS (распределенная файловая система), под которой //foo/bar ссылалась на /bar файл на foo dfs-сервере. Позже он был заменен NFS от Sun.

К сожалению, у меня пока нет ссылок, подтверждающих это, но я могу найти документацию Utek в моем подвале и обновить этот ответ.

13
27.01.2020, 19:29

Обрабатывают ли некоторые приложения, работающие на Unix-подобных ОС - если это не API системы - пути //foo/bar особым образом?

Я знаю о Perforce, который использует //depot/A/B/C/D пути для ссылки на хранилище. Perforce также поддерживает //Client/C/D Paths, когда клиент указывает на //depot/A/B/. В данном случае локальная файловая система может не иметь таких путей.

p4 filelog //depot/A/B/C/D покажет историю этого файла, хотя файла /depot/A/B/C/D не существует.

p4 filelog C/D также покажет историю этого файла, если его выполнить из соответствующего каталога.

Ссылка : https://www.perforce.com/perforce/r12.1/manuals/cmdref/o.fspecs.html

16
27.01.2020, 19:29

Я смутно помню, что нотация // host / path использовалась на AT&T SysV.3 как часть его RFS Remote File Sharing реализация. В конечном итоге от этого отказались примерно в то время, когда была выпущена SysV.4, в пользу более простой, но более популярной NFS от Sun Microsystems.

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

Ссылки 1. Обзор архитектуры RFS

4
27.01.2020, 19:29

Это компиляция и индекс ответов, данных на данный момент. Этот пост является вики сообщества, его может редактировать любой человек с репутацией 100+, и никто не получает от этого репутацию. Не стесняйтесь опубликовать свой собственный ответ и добавить ссылку на него сюда (или подождите, пока я это сделаю). В идеале, этот ответ должен быть просто кратким (с краткими записями, в то время как отдельные другие ответы будут содержать подробности).

Активно поддерживаемые в настоящее время системы:

Несостоявшиеся системы

Приложения, которые рассматривают //foo/bar специально для путей

91
27.01.2020, 19:29

Проект ReactOS - который является свободной и открытой реализацией ядра NT и связанных с ним API - по всей видимости, также взялся за реализацию собственной Interix-подобной POSIX-подсистемы (хотя оригинальная подсистема OS/2 от MS также упоминается в контексте, аналог ReactOS не упоминается).

Хотя усилия до сих пор были небольшими, fork(), очевидно, является реальностью. Вот выдержка из страницы проекта подсистемы, перечисленной в разделе открытые вопросы:

пути

Какой лучший способ использовать пути Win32 в POSIX-приложениях? Идеи:

  • перевести //<устройство>/<путь> в \\\. \<устройство>\<путь> (с особым случаем для букв дисков - //<буква>/<путь> => <буква>:\<путь> - и специальным escape //./ => \\\.\. Пути UNC могут быть указаны с помощью //unc/<путь>). Пути // зарезервированы стандартом для поведения, специфичного для конкретной реализации, а синтаксис //<буква>/ для экранирования путей Win32 широко используется в существующих средах совместимости POSIX

  • эвристика для распознавания "голых" путей Win32 как таковых

  • поиск без учета регистра для путей Win32 и // путей (разрешает ли стандарт такое поведение для // путей? ).

Я не уверен, как это квалифицируется, поскольку я не уверен, насколько это было реализовано, но я подумал, что это полезное интересное описание проблемы.

5
27.01.2020, 19:29

Другое приложение: Blender обрабатывает ведущий // как ссылку на каталог проекта (каталог в который сохраняется в файле .blend ). Вот соответствующая страница руководства .

Это верно и для операционных систем, отличных от Unix (например, Windows).

5
27.01.2020, 19:29

POSIX утверждает в Обосновании для A.4.12 Pathname Resolution параграфы 9 и 10:

В некоторых сетевых системах конструкция /../hostname/ используется для ссылки на корневой каталог другого хоста, и POSIX.1 разрешает такое поведение.

В других сетевых системах для той же цели используется конструкция //hostname; то есть, используется двойная начальная косая черта.

Это кажется подтверждает, что // означает "сетевой корень", или, по крайней мере, такова была идея, когда правило было включено в POSIX.


Следующие правила устраняют любое значение // в середине пути для / начального Pathname:

... поскольку нелидирующие последовательности из двух или более символов <слэш>
рассматриваются как один <слэш>, ...

Конечно, // начатое Имя Пути может расширить или изменить использование // внутри Имени Пути (не в начале). POSIX.1 позволяет это. Последнее подтверждает, что единственные разрешенные // находятся в начале имени пути.

4
27.01.2020, 19:29

В 1980-х годах SEL / Gould имел операционную систему Unix под названием UTX-32 , в которой // host / путь был эквивалентен / net / host / path в Solaris; т.е. , удаленный доступ к пути пути на хосте хосте . Я не могу найти по нему никакой документации, поэтому я не знаю, было ли это RFS или параллельной эволюцией (или AT&T украла это от Гулда).

4
27.01.2020, 19:29

Теги

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