web-dev-qa-db-ja.com

Linuxでのグループ間のファイル権限

アリスとボブの2人のユーザーと、管理職と人事の2つのグループがあります。アリスには、プライマリグループの管理と、セカンダリグループの人事とアリスがあります。ボブには、プライマリグループの人事とセカンダリグループのボブがいます。

ここで、両方とも/ var/svn/new-project /にあるローカルSubversionリポジトリへの読み取り/書き込みアクセスが必要です。問題は、アリスがリポジトリにコミットすると、ボブがアリスのプライマリグループである管理グループに属していないために、リポジトリにコミットできなくなることです。

私の質問:アクセス許可を台無しにすることなく、リポジトリディレクトリを777にchmodせずに、またcronjobを実行せずに、それらを別々のプライマリグループに保持しながら、リポジトリの読み取りと書き込みの両方を有効にする方法毎分権限を修正しますか?

3
vincent.io

ディレクトリのsetgidビットを有効にして、ディレクトリのグループを共通グループ(この場合はPersonnel)に設定することをお勧めします。ディレクトリのsetuid/setgidは、その下に作成されたファイルにディレクトリの所有者/グループを強制的に与えます。

3
James O'Gorman

ACL(アクセス制御リスト)を使用します。ドキュメントはこちら: http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-acls.html

セットアップの例:

setfacl --recursive -m u:Alice:rwx /var/svn/new-project/
setfacl --recursive -m u:Bob:rwx /var/svn/new-project/ 
3
weeheavy

グループPersonnelが所有するリポジトリフォルダ構造を作成します。

770の権限と、両方のユーザーが00xumaskを持っていることを確認してください。

(必要に応じて、使用前にumaskを00xに設定する小さなスクリプトでSubversionクライアントをラップします。)

Subversionクライアントがリポジトリを更新するときにファイルパーミッションで異常なことをしない限り、これで十分です。

2
Tonny