web-dev-qa-db-ja.com

Linuxで共有ディレクトリを設定するにはどうすればよいですか?

社内のユーザー間でファイルを共有するために使用したいLinuxサーバーがあります。ユーザーは、sftpまたはセキュアシェルを使用してマシンにアクセスします。

これが私が持っているものです:

 cd /home
ls -l 
 drwxrwsr-x 5 userA staff 4096 Jul 22 15:00 shared 
(他のリストは省略)

スタッフグループのすべてのユーザーが、共有フォルダ内のファイルやディレクトリを作成、変更、削除できるようにしたいのですが。他のユーザーにフォルダへのアクセス権をまったく与えたくありません。

私が持っています:

  1. / etc/groupを変更し、grpconvを実行して/ etc/gshadowを更新することにより、ユーザーをスタッフグループに追加しました。

  2. Chown -R userA.staff/home/sharedを実行します

  3. Chmod -R 2775/home/sharedを実行します

現在、スタッフグループのユーザーは新しいファイルを作成できますが、ディレクトリ内の既存のファイルを開いて編集することはできません。これは、ユーザーが作成されたときに作成されたグループとして設定されている各ユーザーに関連付けられたプライマリグループIDが原因であると考えられます。したがって、ユーザー「userA」のPGIDは「userA」です。

もし私がそれを手伝うことができるなら、ユーザーのプライマリグループを「スタッフ」に変更したくありませんが、それが最も簡単なオプションであれば、それを検討します。

また、テーマのバリエーションとして、別のディレクトリでも同じことをしたいのですが、Apacheユーザーがディレクトリ内のファイルを読み取ってそれらを提供することもできます。

これを設定する最良の方法は何ですか?

5
JR Lawhorne

あなたが実際に持っているものは正しいように見えます。ディレクトリにsetgidビットが設定されているため、作成された新しいファイルはstaffグループを継承する必要があります。ただし、それらはまだ作成者が所有しています。問題は、ユーザーのumaskがデフォルトで022または077に設定されているためと思われます。つまり、ユーザーが作成する新しいファイルには、デフォルトでグループ書き込み権限がありません。ユーザー/グループの所有権は正しいが、グループのアクセス許可では、グループの他のメンバーがファイルを書き込む(場合によっては読み取る)ことはできません。

staffグループのユーザーを選択し、umask002または007に設定します。これは、新しいファイルが所有者お​​よびグループに書き込み可能であることを意味します。これで問題が修正されると思います:

bash$ umask
0022
bash$ umask 002
bash$ umask
0002

また、staffグループ外の誰もディレクトリにアクセスできないようにする必要があることにも気付きました。これを行うには、2770のディレクトリ権限を変更する必要があります。そうしないと、staff以外のユーザーがディレクトリ内のファイルを読み取ることができます(変更はできません)。

Apacheユーザーに関する最後の質問の場合、おそらく最も簡単な方法は、そのユーザーをstaffグループに追加することです。

5

私は彼の調査結果に同意します。 Fuseファイルシステムデーモンについて。まだ迷路にいる場合に備えて、ユーザー間のこのローカル共有を簡単に http://airkayu.com/node/24 で行う方法の手順を書き直しました。

0
admin

問題は、sftpデーモンがログインスクリプトを使用せず、グループへの書き込みを許可しないumaskが発生することです。

これを回避するには、umaskを設定してsftpサーバーを実行するスクリプトを作成します。cat/usr/lib/openssh/sftp-server-prot umask 02 exec/usr/lib/openssh/sftp-server

次に、ssh/sshd_configを編集して、上記のラッパースクリプトを使用します。Subsystem sftp/usr/lib/openssh/sftp-server-prot

次に、sshdを再起動します。

0
Aaron Wohl