所有者権限よりも制限的なグループ権限を持つファイルを見つける

所有者権限よりも制限的なグループ権限を持つファイルを見つける

実際の業務に関する質問です。以前は、ユーザーは「su - userx」を実行し、user:owner権限を使用してuserx:groupz 760または540でスクリプトを実行したり、userx:groupz 740または640のファイルを変更したりできました。これで、ユーザーは userx で su できなくなり、groupz のメンバーとして作業を実行する必要があります。グループ権限を変更する必要がありますが、問題ファイルを最初に見つけなければなりません。失敗したときに見つけることができます。あるいは、私が積極的に見つけるのを手伝ってください。所有者:グループがuserx:groupzであり、グループ権限が所有者権限よりも制限されているファイルまたはディレクトリは問題を引き起こす可能性があるため、「ビジネスロジック」の文脈で見る必要があります。これらのファイルとディレクトリの両方を見つける方法はありますか?この質問に対する答えは、過去に働いていた作業が現在失敗したときにのみ表面化することができる多くの基本的な問題を明らかにします。

答え1

GNUが利用可能な場合は、find次のように使用できます。

find /somedir -user userx -group groupz \( -perm /u+w,g-w -o -perm /u+r,g-r -o -perm /u+x,g- \) -ls

答え2

3 つのファイル アクセス権のいずれかについて、ユーザーには存在するがグループにはない、必要なユーザーとグループに属するファイルを探します。

find / -user userx -group groupz \( -perm -u+r ! -perm -g+r -o \
                                    -perm -g+w ! -perm -g+w -o \
                                    -perm -g+x ! -perm -g+x \) -print

これにより、多くのUNIXバリアントでは、権限と所有権が重要ではないシンボリックリンクを含むすべてのファイルタイプを返すことができます。シンボリックリンクを除外するには! -type l

ファイルを操作するにはを使用します-exec

グループ権限をユーザー権限と一致させたい場合は、chmod g=u自由に実行できます。

find / -user userx -group groupz ! -type l -exec chmod g=u {} +

答え3

これは私がテストした最終的な解決策であり、うまくいきます。マウントされたリモートファイルシステムを検索したくない場合は、-mountが必要で、必要なシンボリックリンクをたどらないでください。 -従う。出力に権限が表示され、基準に合うかどうかを簡単に確認できるようにしたいので、-lsを使用します。驚くべきことに、「議論の順序」は非常に重要です。このコマンドは、動作する結果が見つかるまでいくつかの誤った結果を返します。

-user userx -group groupz -mount \ ( ( -perm -u=r -a ! -perm -g=r ) -o \ ( -perm -u=w -a ! -perm -g=w ) -o 検索\ (-perm -u=x -a !-perm -g=x ) \) -ls !

関連情報