特別なLinuxファイル属性を持つファイルを検索できますか?

特別なLinuxファイル属性を持つファイルを検索できますか?

次のようにLinuxオペレーティングシステムで特定のファイル属性を持つファイルを検索できますか?---S--l---

---S--l---  1  root    root          0 Mar  1004:25/opt/csTuner/iba/wys/tuer_lolk

何ですかS権限:

S - 変更はディスクに同期的に書き込まれます。これは、ファイルサブセットに適用される「同期」マウントオプションと同じです。

私の目標は、ディスクに書き込まれたファイルを同期的に検索することです。

ベストアンサー1

あなたの質問に出てくる例は、出力ではls -lなくlsattr出力のように見えます。ls -l出力の最初のフィールドは次のとおりです。モデルつまり、タイプ(一般、ディレクトリ、シンボリックリンク...)と権限。

Sこの位置のビットは、ユーザーにsetuid実行権限がないことを示します。ユーザー/グループ/その他のどれも実行権限を持っていないことを考慮すると、これはほとんど意味がありません。これはlsetgid ビットがセットされたが実行されなかったことを意味します。通常のファイルの場合、これは強制ロックが有効になっているファイルを意味します。

ここで可能性が高いのは、ファイルが無効な権限です(たとえばchmod 6000chmod 600

今述べている「同期化」ビットはS出力用ですlsattr

chattr +S fileLinuxでこれを行うと、lsattr file出力は次のようになります。

--S----------e-- file

そのフラグを持つファイルを見つけるには:

ファイル名に改行文字が含まれていない場合は、次のようにできます。

find . ! -type l -exec lsattr -d {} + | sed -n 's/^[^ ]*S[^ ]* //p'

Sあるバージョンが同じオンラインの場所にあるか、次のバージョンが-------同じ長さであるという保証はありません。e2fsprogs

ファイル名に改行文字が含まれていないことを保証できない場合は、代わりに次のようにします。

(find .//. ! -type l -exec lsattr -d {} +; echo //) |
  sed -ne '/\/\//!{H;d;}' -e 'x; s|^[^ ]*S[^ ]* .//.|./|p'

(各ファイル名の先頭はで識別されます.//)。

おすすめ記事