web-dev-qa-db-ja.com

ユーザー間で共有されるファイルを配置する最も適切なディレクトリは何ですか?

または:グループに属するファイルをどこに置くことができますか?

Unixシステムに2人のユーザーがいるとします:joesarah。彼らは両方ともmovies-enthusiastグループのメンバーです。動画ファイルはどこに置くべきですか?

  • /home/{joe,sarah}/moviesは、これらのディレクトリがjoe/sarahに属しているため、適切ではありません。彼らのグループではありません。

  • /home/movies-enthusiastも適切ではありません。movies-enthusiastはユーザーではなくグループであるためです。

  • /var/movies-enthusiastはオプションかもしれませんが、これがFHSで許可されているかどうかはわかりません。

  • /srv/movies-enthusiastもオプションの場合がありますが、ムービーはシステムサービスに必要なファイルではありません。

89
user16538

使用しない

  • /usrは、共有可能な読み取り専用データ用です。ここのデータは、管理上の理由(たとえば、新しいパッケージのインストール)でのみ変更する必要があります。
  • /optは通常、自己完結型のプログラム、または何らかの理由でシステムの残りの部分から分離する必要があるプログラム用です(たとえば、ハニーポットプログラムの相互作用が中低度)。
  • /varは、 "ログ、スプールファイル、一時的な電子メールファイルなど、システムの通常の動作中に継続的にコンテンツが変更されることが予想されるファイル"私はそれを次のように考えるのが好きです:データがリストに要約されて正しく見えない場合、それは通常/varには属しません(ただし、これには例外があります)。

使用

  • /homeは、ユーザーのホームディレクトリ用です。このディレクトリをグループファイルの領域と見なす人もいます。 FHSは実際、 "大規模なシステム(特に/ homeディレクトリがNFSを使用して多くのホスト間で共有されている場合)にユーザーのホームディレクトリを細分することは有用であると述べています。サブディビジョンは、/home/staff、/ home/guests、/ home/studentsなど "
  • /srvは、グループファイルの受け入れ可能な、よく使用される場所です。私は通常、Chris Downの answer ;で言及されている理由により、グループ共有ファイルにこのディレクトリを使用します。グループファイル共有は、サーバーが提供するサービスであると思います。

FHSで記述されている各ディレクトリの目的の詳細については、hier(7)のマニュアルページ(man hier)を参照してください。

76
user26112

私の意見では、正しい場所は/srv/movies-enthusiast。 「サービス」は、デーモンやプログラムである必要はなく、システムが提供するサービス(映画をそこに取得できるなど)である必要があります。 [〜#〜] fhs [〜#〜] からの引用は次のとおりです。

/ srvには、このシステムによって提供されるサイト固有のデータが含まれています。

あなたの使用法はその定義に当てはまり、サービスを提供すると思います。

29
Chris Down

Filesystem Hierarchy Standard (FHS)は、を混乱させないために、「Unixディストリビューションの開発者、パッケージ開発者、およびシステム実装者」が遵守するレイアウトを指定しますyour名前空間。

your名前空間なので、適切と思われる名前を選択する必要があります。もしあなたが見つけたら /groups/movies-enthusiast理にかなっているので、そこに配置する必要があります。入力が簡単なため、短いパス名が必要な場合は、/g/movies-enthusiast (多分 /g/m-e)が適しています。

選択したパスはFHSで定義されていないため、ディストリビューションまたはサードパーティのパッケージはそれらに触れてはなりません。そのため、FHSを読んで、準拠ソフトウェアで使用できるパスを確認する必要があります(目次で、知っておくべきことのほとんどがわかります)。

たとえば、私は個人的に/av視聴覚コンテンツを保存する場所、/srcソースコードおよび/data未定義のデータ(仮想マシンイメージ、CDイメージ、chroot、保存されたパッケージなど)。

11
camh

ルートからこの目的で新しいマウントポイントまたはディレクトリを作成しても問題はありません。

特にこれがこのシステムの主な目的である場合、私は単に作成します

/映画愛好家

他に同様の「グループ」がある場合、それらを一緒にホストすることを好むかもしれませんし、好まないかもしれません。

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

または

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

考慮すべき質問:この目的のためにマウントポイントを専用にする予定ですか?

ソフトリンクを検討しましたか?

いずれにしてもルールはありません。 1人のユーザーを管理者にして、残りのユーザーにこのプロジェクトスペースへのアクセスを許可する場合は、ユーザーのホームディレクトリで自由にホストしてください。または、/ home/shared/*名前空間を作成します。あなたはあなた自身の上司です。

ああ、1つのこと:あなたが何をするにせよ、それを文書化してください。システムの回復、毎日のチェック、バックアップなどの一部になる必要があります。重要な構成の注意事項(たとえば、グループメンバーシップ、アクセス許可セット、パフォーマンスのためのfs調整可能パラメーター、およびその他のデフォルトではないもの)に注意する必要があります。

7
Johan

FHSは、ローカルサイト、ディストリビューション、アプリケーション、ドキュメントなど、複数の関係者間でファイルの配置を調整する必要がある問題に対処することを覚えておくことが重要です; FHSはあなたが持つかもしれないすべての状況に対して規則を設定しようとはしません:ローカルファイルのローカル配置はローカルの問題ですFHS 3.0、セクション1.1 =)。

したがって、技術的には、moviesディレクトリをどこにでも、FHSの規則に反しない限り置くことができます。それでも、あなたの質問は最も適切なの場所に関するものだったので、いくつかの一般的な回答を考えてみましょう(特定のユースケースを考慮して、最も好ましいものから、あまり好ましくないものへの順序で)

  • /<someprefix>/<groupname>または/media/<volumename>/<groupname>:Linuxの世界でこのオプションの評判が悪い理由は正直にわかりませんが、これを明確にしましょう:これは本当にyourシステム、および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を介して)分散されている場合は少し簡単になります。そのため、非常に大規模な環境で好まれます組織。

1
jwatkins

FHSは管理を容易にすることも目的としているので、/ srvを使用します。しかし、完璧な後知恵を持っています。 NAS上にあるため、/ export/srvを使用しています。

ドロップボックスの場合は、setgidとstickyの両方であることを確認してください。また、それを使用するユーザーが有用なumaskを持っていることを確認してください。ただし、ファイルアクセスモードの例で行ったようにホイールを使用しないでください。 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
user2243313

私は個人的に/ usr/share/movies-enthusiastまたは/ opt/movies-enthusiastを選択します

0
Srdjan Grubor

/ opt/moviesのような別のディレクトリを作成し、適切なユーザーとグループのアクセス許可を設定することをお勧めします。また、ディスクquotaを使用して、ディスクの総消費量を回避できます。

0
Hojat Taheri

これは回答と同じくらい多くのコメントです(そのため、私に反対票を投じないでください!)。ただし、コメントを入れるには長すぎます。

私は2つのことを行い、どちらもあなたが直面している問題を回避します。

1)システムディスク上のすべての空き領域の個別のパーティションを作成し、データスペースにラベルを付けます。私の現在のすべてのメディアファイルと他のデータが行くところです。これは/ media/dataspaceとして自動マウントされ、「data」というディレクトリの下に「data」を配置して、定期的にバックアップしたくない作業ファイル、vms、またはisoイメージなどから分離します。

別のパーティションを使用すると、いっぱいになっても、/または/ homeの下に格納されている場合のようにシステムが危険にさらされないという追加の利点があります。

2)ほとんどのデータ/メディア、特に「現在」使用していないものを別の物理ドライブ(ノートブックの場合はUSB)に入れました。これにより、必要に応じて、バックアップや別のコンピューターへの接続が簡単になります。

0
Joe