Каков наиболее подходящий каталог для размещения файлов, которыми обмениваются пользователи?


83

Или: куда я могу поместить файлы, принадлежащие группе?

Предположим, в системе Unix есть два пользователя: Джо и Сара . Они оба являются членами группы любителей кино . Где я должен положить свои файлы фильмов?

  • /home/{joe,sarah}/moviesне подходят, потому что эти каталоги принадлежат joe / sarah , а не их группе;

  • /home/movies-enthusiastтоже не подходит, потому что любители кино - это группа, а не пользователь;

  • /var/movies-enthusiast может быть вариант, но я не уверен, что это разрешено FHS;

  • /srv/movies-enthusiast также может быть вариантом, однако фильмы не являются файлами, которые требуются системным службам.


6
Проголосовал за упоминание FHS! Этот пользователь * nix и обычный системный администратор 20 лет не знали об этом. Спасибо!
CPRitter

Ответы:


72

Не использовать

  • /usrдля общих данных только для чтения. Данные здесь должны изменяться только по административным причинам (например, установка новых пакетов.)
  • /opt как правило, для программ, которые являются автономными или по какой-либо причине должны быть изолированы от остальной системы (например, программы с медленным и слабым взаимодействием).
  • /varпредназначен для «файлов, содержимое которых, как ожидается, будет постоянно меняться при нормальной работе системы, таких как журналы, файлы спула и временные файлы электронной почты». Мне нравится думать об этом так: если ваши данные не будут выглядеть правильно в виде списка, они обычно не принадлежат /var(хотя есть исключения из этого).

использование

  • /homeдля домашних каталогов пользователей. Некоторые видят этот каталог как область для групповых файлов. FHS фактически отмечает, что «в больших системах (особенно, когда каталоги / home совместно используются многими хостами, использующими NFS) полезно разделить домашние каталоги пользователей. Разделение может быть выполнено с использованием подкаталогов, таких как / home / staff, / home. / гости, / дома / студенты и т. д. "
  • /srvявляется приемлемым и часто предпочтительным местом для групповых файлов. Я обычно использую этот каталог для файлов с общим доступом по причине, указанной в ответе Криса Дауна ; Я считаю групповой обмен файлами службой, предоставляемой сервером.

См. Справочную страницу hier (7) ( man hier) для получения дополнительной информации о назначении каждого каталога, описанного FHS.


1
Я предполагаю, что в более общем случае можно использовать /srv/dataкаталог для файлов данных.
Виктор Ярема

4
+1 за упоминание человека выше. Я не знал, что существует.
Зак Бойд

Спасибо, очень полезная информация и ссылки для нового пользователя Linux.
Шивам

28

На мой взгляд, правильное место /srv/movies-enthusiast. «Служба» не обязательно должна быть демоном или программой, она должна быть только службой, предоставляемой системой (например, возможностью доставлять туда свои фильмы). Вот цитата из FHS :

/ srv содержит специфичные для сайта данные, которые обслуживаются этой системой.

Я определенно думаю, что ваше использование подпадает под это определение, и предоставляет услугу.


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

11

Hierarchy Standard Filesystem (FHS) определяет макет для «разработчиков Unix распределений, разработчиков пакета и системы реализаторов» , чтобы придерживаться, чтобы не напутать ваше пространство имен.

Поскольку это ваше пространство имен, вы должны выбрать любое имя, которое вы считаете подходящим. Если вы находите /groups/movies-enthusiastсмысл, вы должны положить его туда. Если вам нравятся короткие имена путей, потому что их легче набирать, /g/movies-enthusiast(или, возможно /g/m-e) подойдет.

Поскольку выбранные вами пути не определены в FHS, дистрибутив или сторонние пакеты не должны касаться их. Таким образом, вы должны прочитать FHS, чтобы узнать, какие пути могут использоваться совместимым программным обеспечением (оглавление расскажет вам большую часть того, что вам нужно знать).

Например, я лично использую /avдля хранения своего аудиовизуального контента, /srcдля исходного кода и /dataдля неопределенных данных (таких как образы виртуальных машин, образы компакт-дисков, chroot, сохраненные пакеты и т. Д.).


Я лично использую / данные для всех таких файлов, затем / данные / фильмы для аудиовизуального контента, / данные / src для исходного кода, / данные / музыка. все в одном (иерархическом) месте.
Медуз,

Следовать или придерживаться стандартов очень часто хорошая идея, даже если вы не являетесь разработчиком, дистрибутивом, разработчиком pkg или разработчиком системы.
Фелипе Альварес

Добавление нового каталога не против FHS; на самом деле, я бы сказал, что для создания FHS-совместимости иногда не требуется создавать новые каталоги ! FHS особо упоминает, что любой вопрос, который не нужно координировать между несколькими сторонами, выходит за рамки этого стандарта. Следовательно, попытка удовлетворить каждую возможную потребность внутри одного из определенных FHS каталогов неизбежно приведет к созданию ситуаций, когда файлы помещаются в каталоги там, где их не должно быть.
Джваткинс

7

Нет ничего плохого в создании новой точки монтирования или каталога для этой цели из корня.

Особенно, если это основная цель этой системы, я бы просто создал

/ Кино-энтузиасты

Если есть другие подобные «группы», я могу или не могу предпочесть разместить их вместе, например

/data/movies-entusiast
/data/next-group
etc

или же

/share/movies-enthusiast
/share/next-idea
etc

Вопросы для рассмотрения: Собираетесь ли вы выделить точку монтирования для этой цели?

Вы рассматривали мягкие ссылки?

В любом случае нет никаких правил. Если вы хотите сделать одного пользователя хранителем и предоставить остальным доступ к этому пространству проекта, не стесняйтесь размещать его в домашнем каталоге пользователя. Или создайте пространство имен / home / shared / *. Вы свой собственный босс.

Ах, одно: что бы вы ни делали, документируйте это. Он должен стать частью восстановления системы, ежедневных проверок, резервного копирования и т. Д. Необходимо отметить важные задержки конфигурации (например, членство в группах, наборы разрешений, настраиваемые fs для производительности и все остальное, что не является значением по умолчанию)


1

FHS также упрощает работу с администратором, поэтому я бы выбрал / srv по этой причине, хотя это не то, что я сделал. Имейте идеальный взгляд в прошлое, хотя. Я использую / export / srv, потому что это на NAS.

Если это выпадающий ящик, то убедитесь, что он и сетгид, и липкий. Также убедитесь, что те, кто его использует, имеют полезные маски. Тем не менее, не используйте колесо, как я это делал на примере режимов доступа к файлам. Не раздевайте eXecute, иначе вас ждет сюрприз.

bash-3.2$ mkdir movies
bash-3.2$ sudo chmod 03771 movies
Password:
bash-3.2$ ls -ld movies/
drwxrws--t 2 andrewb wheel 68 Apr  4 17:09 movies/
bash-3.2$ umask 026
bash-3.2$ touch movies/junk
bash-3.2$ ls -l movies/
total 0
-rw-r----- 1 andrewb wheel 0 Apr  4 17:09 junk

1

Важно помнить, что FHS решает проблемы, когда размещение файлов необходимо координировать между несколькими сторонами, такими как локальные сайты, дистрибутивы, приложения, документация и т. Д . ; FHS не пытается устанавливать правила для каждой конкретной ситуации: локальное размещение локальных файлов является локальной проблемой ( FHS 3.0, раздел 1.1 ).

Следовательно, технически вы можете поместить свой moviesкаталог куда угодно, если он не противоречит соглашениям FHS . Тем не менее, ваш вопрос был о наиболее подходящем месте, поэтому давайте рассмотрим несколько распространенных ответов (упорядоченные от наиболее предпочтительных до менее предпочтительных, учитывая ваш конкретный вариант использования):

  • /<someprefix>/<groupname>или /media/<volumename>/<groupname>: я, честно говоря, не знаю, почему эта опция имеет плохую репутацию в мире Linux, но давайте проясним это: это действительно ваша система, и FHS говорит, что вы свободны от создания новых каталогов на корневом уровне до тех пор, пока так как вы не конфликтуете ни с чем, для чего существует устоявшаяся семантика. Вы можете, например, создать каталог /groupsили /sharedорганизовать файлы в них по своему усмотрению. Я знаю, что некоторые администраторы предпочитают изолировать их от остальной части файловой системы, поэтому они монтируют отдельный том (то есть под /media/<volumename>/<groupname>). Оба хороши, и оба соответствуют FHS.

  • /srv/<groupname>или /srv/<someprefix>/<groupname>: в соответствии с FHS, /srvсодержит специфические для сайта данные, которые обслуживаются этой системой . Затем FHS продолжает объяснять, что методология, используемая для именования подкаталогов в / srv, не определена . Исходя из моего личного опыта, большинство администраторов, использующих /srvкаталог , используют подкаталог для каждого клиента, сайта или проекта, а затем размещают каталоги данных на этом уровне. Как бы вы это ни структурировали,/srvВполне допустимо хранить файлы для совместного использования несколькими пользователями, если вы разумно полагаете, что совместное использование этих файлов само по себе является услугой. Задайте себе вопрос: «Имеет ли смысл в конечном итоге обмениваться этими файлами через SMB / NFS / AFS / GIT / ...?» Если это так, то вы можете обоснованно считать, что ваш каталог является локальной службой общего доступа к файлам, и, таким образом, хранить их в подкаталоге /srv, даже если нет демона, фактически обслуживающего эти файлы в других системах.

  • /home/<groupname>или /home/<some-prefix>/<groupname>: FHS гласит: /homeэто довольно стандартная концепция, но это явно файловая система для конкретного сайта . Абсолютно не требуется, чтобы каждый каталог /homeбыл именем фактического пользователя, и допустимо иметь подкаталоги для групп, хотя следует соблюдать осторожность, чтобы избежать возможных конфликтов между группой и пользователем. Тем не менее, я видел, как эта стратегия использовалась в нескольких крупных установках (особенно в университетах) с некоторой стратегией сравнения, чтобы избежать возможности конфликта; например, реальные пользователи будут иметь свои домашние каталоги /home/students/<studentid>, /home/teachers/<username>или /home/staff/<username>, в то время как общие материалы будут, например, помещены в/home/workgroup/<workgroupname>, Когда-нибудь они также будут подразделением отдела; Тем не менее, вы поняли идею. Честно говоря, мне лично не нравится эта стратегия, но она немного облегчает ситуацию, когда /homeона распределяется между несколькими серверами (например, через NFS), поэтому она имеет тенденцию быть предпочтительной в очень крупных организациях.



0

Я предлагаю создать отдельный каталог, например / opt / movies, установить для них соответствующие разрешения для пользователей и групп, а также использовать диск, quotaчтобы избежать его полного потребления.


0

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

Я делаю две вещи, которые избегают проблем, с которыми вы сталкиваетесь.

1) Я делаю отдельный раздел из всего свободного места на системном диске и помечаю его как пространство данных. Вот где все мои текущие медиа-файлы и другие данные. Он автоматически монтируется как / media / dataspace, и я помещаю все, что является «данными», в каталог, называемый «данные», чтобы отделить его от таких вещей, как рабочие файлы, виртуальные или виртуальные образы, которые я не хочу регулярно резервировать.

Использование отдельного раздела имеет дополнительное преимущество: если он заполняется, он не ставит под угрозу мою систему, как если бы он хранился в / или / home.

2) Я поместил большинство своих данных / носителей, особенно те, которые я не использую «сейчас», на другой физический диск (USB в моем случае с ноутбуком). Это упрощает резервное копирование и подключение к другому компьютеру в случае необходимости.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.