acl
非常に具体的な権限構造を設定するにはインストールが必要でした。グループメンバーは、ディレクトリ内のファイルを表示でき、サブディレクトリに移動できる必要があります。しかし、ファイルを読み取る権限があってはいけません!
私はこれを達成する方法がわからない。このコマンドはsetfacl -m d:g:mygroup:rx
操作の一部を実行しますが、すべてのファイルを読み取ることができます。したがって、このルールをフォルダにのみ適用すると、他の(drwxrwx---)
すべてのアイテムにアクセスできなくなります(rw-------)
。
答え1
デフォルトの ACL を設定して、グループに「実行可能な場合は実行」(X) を付与しますが、読み取り権限を付与しないことがあります。
setfacl -R -d -m group:mygroup:X .
これにより、新しく作成されたファイルをグループから読み取ることができなくなりますが、グループはディレクトリを参照できます。ただし、グループはディレクトリの内容を一覧表示できません。私はこれがSolaris / Linux ACLを介して取得できる最も近いものだと思います。
このACLは必要なものよりも制限されているため、このACLを適用して後でディレクトリに読み取り権限を追加するのは安全です。自動的にできます。inotifyによるたとえば、次の incrontab を使用します。
/path/to/directory IN_CREATE /path/to/script $@
スクリプトに含まれる場所
#!/bin/sh
if [ -d "$1" ]; then setfacl -m group:mygroup:r -- "$1"; fi
別の方法は、異なる権限を持つディレクトリツリービューを作成することです。ファイルシステムバインディング。 Bindfsは、ディレクトリと一般ファイルに対するさまざまな権限をサポートしています。
bindfs -g mygroup -p gd=rx,gf= /path/to/original/root /path/to/mount/point
答え2
後で作成されるすべてのファイル/ディレクトリにこの権限を適用するには、umask
質問に関する最初のコメントのアドバイスに従ってください。
ワンタイムアクティビティの場合(すでに適切なディレクトリとファイルがあり、権限を変更したい場合)、最上位find
ディレクトリで次のコマンドを使用できます。
# Give all permissions to all for the directories and
# Revoke the permission for others
find . -type d -exec chmod +rwx,o-rwx {} +
# Unset all premissionas for all files and
# Give read & write premission to the owners
find . -type f -exec chmod -rwx,u+rw {} +
を使用してこれらのコマンドを予約することを検討できますが、cron
これは良い考えではないようです。たとえば、所有者以外の人は、次のジョブがスケジュールされる前の期間中にファイルを読み取ることができますcron
。
答え3
わずかに異なる角度でソリューションにアクセスして、次のものを使用できます。イギリスクローナまたはイノティコン(後者は多くのディストリビューションに移植されたDebianツールです)。これら2つの機能を使用すると、ディレクトリを監視し、特定の重要なイベントに対するファイル権限の変更を操作できます。 incronによると、これにはカーネル2.6.13以降が必要で、inotifyをコンパイルする必要があります。 ubuntu、debian、Fedoraでパッケージ化されているので、インストールは簡単です(そして多くのディストリビューションに移植されているようです)。
innotifyのincronの使用に関する良い記事があります。ニッククラフト