こんにちは私はLinux環境で作業しており、パスを入力として受け取り、そのファイル/ディレクトリへの読み取りアクセス権を持つすべてのユーザーのリストを出力するコマンドを作成しようとしています。
たとえば、ファイル/ a / b / cがuserid、uとgroupid、gによって所有されており、いくつかのアクセス許可がある場合、このコマンドで/aと/a / bのアクセス許可を識別し、 cを読むことができます。特に、グループが参加するときに問題が発生します。
グループ外の読み取りアクセスの識別をケースに分けようとしています。
1)gはcの親のgid、gp、(または祖父母など)のgidと一致します。この場合、gpに許可がある場合(040以下)、gのすべてのメンバーがcを読み取ることができます。
2)gは、cの親のgidであるgpとは異なります。2つのサブケース:
... a)ユーザーID mはgのメンバーであり(g内のすべてのm(mはcを所有していません))、cの親pを所有しています。次に、pに許可がある場合、mはcを読み取ることができます:400以下。
... b)ユーザーID mはgのメンバーであり(cのgid内のすべてのm(mはcを所有していません))、cの親pを所有していません。次に、pに許可がある場合、mはcを読み取ることができます:004以下の制限。
3)uはpを所有します。この場合、pには400以下の制限が必要です。
ちなみに、私はこのシステムにルートアクセス権を持っています。/ etc/groupと/etc/ passwdに一連の猫を作成し、関連情報をgrepする必要があると思いますが、これは問題ありません。また、この環境では'statは無料であると見なすことができます(これは、すでにこの情報を持っているより大きなプロジェクトの一部です)。
私が探しているのは、既存のソリューション、擬似コード、または私が見逃しているアルゴリズムやその他の考慮事項をブレインストーミングするのを手伝ってくれる人だと思います。必要に応じて、明確な質問をしてください。ここでのこの疑似ロジックは、読みやすいものではないことを私は知っています。みんなありがとう。