chmod 777 後に権限が不明に設定される

chmod 777 後に権限が不明に設定される

走った後に気づいたのですが

chmod 777 * 

サブディレクトリを含むディレクトリに対しては、予想どおりに動作します。サブディレクトリを含むすべての権限を777に設定します。ただし、その後、これを実行したくない場合は、

chmod 644 *

これで、サブディレクトリの内容に不明な権限が設定され、元に戻すことはできません。

なぜこのようなことが起こるのでしょうか? これは想定された動作ですか、それともバグですか? ファイルの権限を復元する方法はありますか?

ファイルは別の場所の zip ファイルにあったので、ディレクトリ全体を削除し、再度 zip ファイルを解凍しましたが、この「問題」の原因と解決策を知りたいです。

追加情報として、これらのコマンドを SSH 経由でリモート マシンで実行しています。

答え1

おそらく、この種のものには find を使用するのが最適です。

ディレクトリは x アクセスが必要ですが、ファイルはそうではないため、権限のセットが異なります。

# Files
find . -type f -exec chmod 644 '{}' \;

# Directories
find . -type d -exec chmod 755 '{}' \;

答え2

権限ビットの解釈方法は、ファイルとディレクトリによって異なります。詳細については、読み取りinfo coreutils 'File permissions'man 2 chmod書き込みです。所有者、グループ、および世界中のすべてのユーザーに対して、すべてを読み取り可能、書き込み可能、​​実行可能にしたいのはなぜでしょうか。

証拠が消えてしまったので、 の後にchmod、現在のディレクトリである への書き込みアクセス権を失ったとしか推測できません.。 これは次の方法で修正できます。

chmod u+w $PWD

次に、ファイルのモード(権限)を変更できます。$PWD

を行うことでchmod 644 *実行する権限を持つすべてのファイルから権限が削除され、所有者、グループ、ワールドのいずれのユーザーからも実行できなくなります。

答え3

ディレクトリとサブディレクトリに権限を設定する場合は、以下を使用する必要があります。

chmod -R

-R, --recursive ファイルとディレクトリを再帰的に変更する

答え4

私は抱えていた問題の解決策を見つけました。

まず、投稿してくださった皆様に感謝します。皆さんの回答は本当に役に立ちました。

問題は、現在のディレクトリ内のすべてのファイルに権限 664 を割り当てることです。

chmod 644 *

ディレクトリの実行権限を削除します。ディレクトリが正常に動作するには実行権限が必要です。解決策は非常に簡単です。次のようにディレクトリの権限を変更するだけです。

chmod 744 dir_name

ここで、dir_name は、もちろん、ディレクトリの名前です。これを実行すると、すべてが正常に戻ります。

関連情報