現在、次のfindコマンドを理解するのに問題があります。
find / -o -group `id -g` -perm \
-g=w -perm -u=s -o -perm -o=w\
-perm -u=s -o -perm -o=w \
-perm -g=s -ls
特にこの部分は:
find / -o -group `id -g` -perm -g=w -perm -u=s
-oはOR演算子のように動作することを知っています。この場合、その特定の行は、/またはグループ書き込み権限とsuidが設定され、私のグループと同じファイル内のすべてのファイルを見つけることを意味しますか?これはデフォルトで/ディレクトリ内のすべてのファイルを意味します。誰かが私が逃したことを私に説明できますか?
ベストアンサー1
~からfind(1)
マンページ:
-H
、-L
オプションは-P
シンボリックリンク処理を制御します。これらの後続のコマンドライン引数は、-
またはで(
始まる最初の引数まで解決するファイルまたはディレクトリの名前として扱われます!
。このパラメータとその後のすべてのパラメータは、検索対象を記述する式として扱われます。パスが指定されていない場合は、現在のディレクトリが使用されます。式が指定されていない場合は、-print0
とにかく使用を検討する必要があります)。
あなたの場合、始点は式とは/
異なる方法で処理されます。後者の、
-o -group `id -g` -perm \
-g=w -perm -u=s -o -perm -o=w\
-perm -u=s -o -perm -o=w \
-perm -g=s -ls
あなたの場合は、開始点で見つかったすべてのファイルに対して機能します。-o
は二項演算子で、両方に式が必要なため、このコマンドは実際には失敗します。
見つかった:無効な式です。前に何もせずにバイナリ演算子 '-o'を使用しました。
最初のものを削除すると、-o
次のようになります。
( -group `id -g` -perm -g=w -perm -u=s )
-o ( -perm -o=w -perm -u=s )
-o ( -perm -o=w -perm -g=s -ls )
他の人がsetgidとして書き込むことができるファイルのみをリストします。最初の2つの式セットは何もしないので、目に見える効果なしに適用されます。