103

少数のユーザー間で共有されるディレクトリに出力結果を保存している、実行時間の長いスクリプトとアプリケーションがたくさんあります。この共有ディレクトリの下に作成されたすべてのファイルとディレクトリに自動的にアクセス許可が付与されるようにする方法が必要ですu=rwxg=rwxo=r

さまざまなスクリプトの先頭に使用できることはわかっていumask 006ますが、多くのユーザーが独自のスクリプトを作成し、umask を自分で設定するのを忘れる可能性があるため、そのアプローチは好きではありません。

ファイルシステムが特定のフォルダーにある場合、特定のアクセス許可を持つ新しく作成されたファイルとディレクトリを設定することを本当に望んでいます。これはまったく可能ですか?

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

4

5 に答える 5

78

正しい所有権を取得するには、ディレクトリにグループ setuid ビットを設定できます。

chmod g+rwxs dirname

これにより、ディレクトリに作成されたファイルがグループによって所有されるようになります。次に、全員が umask 002 または 007 またはその性質のもので実行されていることを確認する必要があります。これが、Debian および他の多くの Linux システムがデフォルトでユーザーごとのグループで構成されている理由です。

ユーザーの umask が強すぎる場合に、必要なアクセス許可を強制する方法がわかりません。

于 2009-02-24T05:37:26.857 に答える
59

少なくとも 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 をマスクするソース ファイルのアクセス許可を保持しようとします。

お役に立てれば!

于 2011-07-01T15:36:19.987 に答える
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
于 2009-02-24T10:01:39.733 に答える