
フォルダの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