以前のようにこれらのファイルをchmodできないのはなぜですか?

以前のようにこれらのファイルをchmodできないのはなぜですか?

フォルダのshファイルに実行権限を追加しようとしています。そのために、誤って以下を使用しました。

find . -print0 -iname '*.sh' | xargs -0 chmod -v 744

出力は次のとおりです

mode of `.' changed from 0755 (rwxr-xr-x) to 0744 (rwxr--r--)
mode of `./codis.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ne fil.sw' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swo' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./new file' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ezik.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swp' changed from 0600 (rw-------) to 0744 (rwxr--r--)
mode of `./whois1.sh' retained as 0744 (rwxr--r--)

これで、find部分の正しい使い方が次のようになることがわかります。

find . -iname '*.sh' -print0

だから私は次のような別の発見をしました。

find . \! -iname '*.sh' -print0 | xargs -0 chmod 600

これにより、sh以外のファイルの権限を設定できます(たとえば、600権限ではなく644権限を持つ一部のファイルを見ましたが、今は問題ありません)。このコマンドの出力は次のとおりです。

chmod: cannot access `./ne fil.sw': Permission denied
chmod: cannot access `./.whois1.sh.swo': Permission denied
chmod: cannot access `./new file': Permission denied
chmod: cannot access `./.whois1.sh.swp': Permission denied

私も試してみましたが、sudoまだできません...

権限を正しく理解していないことがわかりました。正しく理解したら、そのディレクトリでコマンドを実行するには、そのxディレクトリに対する権限も必要です。direc

ベストアンサー1

cmdfindは現在のディレクトリも検索します.。これにより、そのディレクトリの権限がに設定され、600そのディレクトリ内のファイルへのアクセス権が失われます。

したがって、ディレクトリcd ..chmod 700言ってから回復を実行すると、現在のfindディレクトリは次のように除外されます。

find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600

おすすめ記事