2009-02-24 4 views
91

私は、出力結果をいくつかのユーザーの間で共有されるディレクトリに格納している、長時間実行しているスクリプトとアプリケーションをたくさん持っています。私はこの共有ディレクトリの下に作成されたすべてのファイルとディレクトリが自動的にu=rwxg=rwxo=r権限を持っていることを確認したいと思います。Linuxのディレクトリの下に新しく作成されたファイルとサブディレクトリの既定のアクセス許可を設定しますか?

umask 006を私の様々なスクリプトの頭に使うことができると知っていますが、多くのユーザーが独自のスクリプトを作成し、umask自体を設定するのを忘れるかもしれません。

ファイルシステムが新しく作成されたファイルとディレクトリを、特定のフォルダにある特定の権限を持つように設定したいのは本当のことです。これはすべて可能ですか?

更新:私はそれがデフォルトのACL機能を使用して、POSIX ACLsで行うことができますが、それは現時点ではすべてのビットの私の頭の上だと思います。誰かがデフォルトACLを使用する方法を説明できるなら、おそらくこの質問にうまく答えるだろう。

+1

POSIXのACLは素晴らしいですが、60%のマシンでは、配布に応じて、特定のファイルシステムで有効になりません。ここには非常に良い紹介と例があります:http://www.suse.de/~agruen/acl/linux-acls/online/ –

+1

あなたは私がリンクした同じ文書を意味します:)私はそれを読むための変更をしていませんしかし、可用性問題については頭がおかしくなってくれてありがとう。 –

+1

Tim Postのコメントのリンクは死んでいるようですが、Internet Archiveのおかげで私はそれを見て、http://www.vanemery.com/Linux/ACL/POSIX_ACL_on_Linux.htmlにまったく同じ文書が含まれていることを確認できました。質問を編集してリンクを更新します。 – rmunn

答えて

70

権利所有権を取得するには、このディレクトリ内に作成されたファイルは、グループによって所有されていることを確認します

chmod g+rwxs dirname 

でディレクトリにグループsetuidビットを設定することができます。誰もがumask 002や007などで動作するようにする必要があります。これがDebianや他の多くのLinuxシステムがデフォルトでユーザ単位で設定されている理由です。

ユーザーのumaskが強すぎると、必要な権限を強制する方法がわかりません。

+20

これは本当に解決策を提供していません。彼は所有権ではなくアクセス権について尋ねています。それを行う唯一の方法は[ACLで]です(http://stackoverflow.com/a/13906099/165673) – Yarin

+2

"... make誰もがumask 002か007かその性質のもので走っていることを確かめてください " - これはちょっとしたストレッチです... Postfix、Dovecot、Clam、Spam Assassinはどのようにしてこれを行うのですか? – jww

+1

'+ s'部分は何をしますか?ありがとう。 –

4

醜いですが、あなたが望むものを正確に達成するためにsetfaclコマンドを使うことができます。

Solarisマシンでは、ユーザーとグループのACLを含むファイルがあります。残念ながら、あなたは(少なくとも私はそうでない場合は、この作品を作るための方法を見つけることができませんでした)すべてのユーザーを一覧表示する必要があります。

user::rwx 
user:user_a:rwx 
user:user_b:rwx 
... 
group::rwx 
mask:rwx 
other:r-x 
default:user:user_a:rwx 
default:user:user_b:rwx 
.... 
default:group::rwx 
default:user::rwx 
default:mask:rwx 
default:other:r-x 

は、ファイルacl.lst名前を付けて、代わりにuser_Xのあなたの本当のユーザー名を記入します。

あなたは今、次のコマンドを発行して、あなたのディレクトリにこれらのACLを設定することができます。

setfacl -f acl.lst /your/dir/here 
+0

あなたが同じグループのすべてのメンバーであり、グループ権限だけを使用している場合、ユーザーリストから離れることができますか? –

+0

私は自分自身に同じ質問をしていました。私はこれを設定してからしばらくしている。しかし、私は新しいユーザー(他のユーザーと同じグループ)を得るたびに、リストを更新するのを忘れて、新しいユーザーがファイルを書き書きできないという苦情を受けます。だから答えは:いいえ、あなたはできません。 – innaM

54

は、ここで少なくともLinuxでは、デフォルトのACLを使用してそれを行う方法です。

まず、がファイルシステムでACLサポートを有効にする必要があります。 ext4を使用している場合は、すでに有効になっています。他のファイルシステム(ext3など)はaclオプションでマウントする必要があります。その場合は、/etc/fstabにオプションを追加してください。たとえば、ディレクトリはルートファイルシステム上にある場合:

/dev/mapper/qz-root / ext3 errors=remount-ro,acl 0 1 

そして、それを再マウント:

mount -oremount/

、デフォルトのACLを設定するには、次のコマンドを使用します。

setfacl -dm u::rwx,g::rwx,o::r /shared/directory 

/shared/directoryのすべての新しいファイルに、現在必要な権限が付与されるはずです。もちろん、ファイルを作成するアプリケーションにも依存します。たとえば、ほとんどのファイルは、umaskを使用した場合と同じように、最初から誰からでも(open(2)またはcreat(2)呼び出しのモード引数に応じて)実行できません。 cptar、およびrsyncのような一部のユーティリティは、ソースファイルがグループ書き込み可能でない場合にデフォルトACLをマスクするソースファイルのアクセス許可を保持しようとします。

希望すると便利です。あなたのシェルスクリプト(または.bashrc)で

+0

これはまだすべてのユーザーに適切な 'umask'が必要なようです。 =/http://unix.stackexchange.com/questions/71743/using-setfacl-to-allow-group-members-to-write-to-any-file-in-a-directory –

+1

@techtonik私が書いたように、ファイルを作成するアプリケーションによって異なります。たとえば、 'cp'を使用すると、ソースファイルのパーミッションをコピーしようとします。 'umask'は' cp'を使うときに役立ちません。私は 'tar'と同じ問題を見ました。 [この質問](http://serverfault.com/questions/183800/why-does-cp-not-respect-acls)を参照してください。 – pelle

+0

@techtonik私の答えでこれについての文章が追加されました。 – pelle

2

あなたのような気にいらを使用することがあります。

umask 022

umaskは、ファイルのパーミッションが新しく作成されたファイルに設定されている方法を制御マスクの設定を決定するコマンドです。

+0

umaskは権限を追加できないため、これは正しくありません。 – ACV

関連する問題