私たちは共有 Linux 環境を持っていますが、ほとんどのファイルは NFSv3 共有上の多くのマシンにマウントされていますが、これは私たちが制御していません。利用できるファイルシステム権限は基本的なものだけなので (ACL なし)、共有のルートに対する書き込み権限をグループ全体に付与せずに、共有ディスクでユーザーが mkdir を実行できるようにする方法を探しています。
たとえば、setuid ビットが設定され、バイナリの所有者が共有の所有者に設定されているバイナリは、共有ディレクトリにディレクトリを作成できるユーザーまたはグループを定義する構成ファイルを読み取ることができます。次に、バイナリを実行するユーザーが共有にディレクトリを作成できるかどうかを決定できます。
最上位レベルの共有の権限は次のようになります。
drwxr-x--- 1 owner group …
つまり、mkdir のラッパーがあり、それが共有所有者として実行され、構成ファイルをチェックし、構成ファイルで許可されている場合は要求されたディレクトリを作成するという考え方です。こうすることで、ユーザーは組み込みの mkdir を単純に実行できなくなります。
作成されたディレクトリは次のようになります。
drwx------ 1 normaluser group 4096 Nov 3 18:14 newdir
これは最善のアプローチでしょうか? それとも車輪の再発明でしょうか?
答え1
umask
各ユーザーがログインするときに設定します:
umask 002
その後、グループにはユーザーと同じ権限が付与されます。
mkdir newdir
ls -ld newdir
drwxrwxr-x+ 1 roaima roaima 0 Nov 3 22:04 newdir
それが望ましくない場合は、mkdirのエイリアスを作成します。
alias md='mkdir -m 775'
md newdir