1つのコマンドですべてのフォルダ権限を変更する

1つのコマンドですべてのフォルダ権限を変更する

自分のWebアプリケーションディレクトリですべてのフォルダ権限を(755)に変更するにはどうすればよいですかrwxr-xr-x?すべてのファイル権限をrw-r--r--(644)に変更するには?サブサブファイルやフォルダを含むすべてのフォルダとファイルを変更したいと思います。

次のコマンドはすべてのファイルとフォルダを変更することを知っていますが、ファイルとフォルダを区別したいと思います。

chmod -R 755 ./my_web_app_project

ベストアンサー1

1つのコマンドで目的のタスクを正確に実行する1つの方法はfind次のとおりです。

find my_web_app_project '(' -type f -exec chmod 644 {} ';' ')' -o '(' -type d -exec chmod 755 {} ';' ')'

-oまたはを意味します。このコマンドは、プロジェクトツリー内の「ファイル」タイプのすべてのオブジェクトを処理します。または「ディレクトリ」と入力し、各オブジェクトの種類に応じて異なるコマンドを実行します。

';'セミコロン()をプラス記号()に置き換えると、効率がわずかに向上します。+これは、すべての一般ファイルの名前を引数として1回実行し、find すべてのディレクトリの名前を引数として1回実行するように指示します。chmod 644chmod 755

./ ちなみに、現在のディレクトリでプログラムを実行する以外には何も言う必要はありません(ただし、名前がいくつかの特殊文字で始まるファイルを操作するときに便利です)。


現在、あなたの権限がどのように見えるかを知りたいです(再帰ツリー範囲を実行する前にchmod)。ファイルは実際に実行可能なプログラムではないか、誤ってそのようなことをしない限り、通常は実行許可ビットがオンになっていませんchmod -R 755。数字モードのchmod -R 644賢明ではない使用により、権限がひどく混乱してしまったので、chmod -Rこの回答の冒頭にあるコマンドに固執してください。

ただし、ユーザーの権限が一般的に合理的であり、ユーザーに読み取り/書き込み権限基準を適用し、他の人(グループとワールド)に読み取り専用権限のみを適用したい場合は、次のことができます。

chmod -R +rX,u+w,go-w my_web_app_project

~へ

  • +rX+r,+Xは大文字で表示されます。X重要です。)
    • +rユーザー、グループなどの読み取り権限設定を示します。
    • +Xユーザー、グループなどの実行権限設定を示します。 現在、次のいずれかに設定されている場合またはオブジェクトがディレクトリの場合
  • u+wユーザーに書き込み権限を設定することを意味します。
  • go-wグループおよびその他の書き込み権限がオフになっていることを示します。

いくつかの重要なポイントを要約すると、次のようになります。

  • もちろん、chmod権限がない場合は、自分が所有するアイテムにのみアクセスでき、読み取り専用ではありません。ディレクトリに実行できない操作がある場合は、chmodこれらのコマンドのいずれかを使用するとエラーが発生します。
  • これらのfindコマンドは、ディレクトリやファイル(名前付きパイプなど)の外部コンテンツに対して何もしません。
  • 最上位ディレクトリの下のすべてのフォルダに対する読み取りおよび実行権限がまだない場合、findコマンドは失敗する可能性があります。-exec chmod 755 {} +
  • このchmod -R +rX,u+w,go-wコマンドは
    • すべてのディレクトリをモード755に設定し、
    • シンボリックリンクを無視して、
    • 他のすべてのファイル形式(名前付きパイプを含む)の場合:
      • すでに1つ以上のビットがある場合は755に設定してくださいx
      • 644に設定してください。

おすすめ記事