【Linux】パーミッションを一括で設定し直す
最近お邪魔したLinuxサーバのファイルリストを表示して愕然としたのですが、パーミッションがオール777という気持ち悪さ全開・・・ どうしてこうなった。
そんな時は、chmodコマンドとxargsコマンドを組み合わせて使うと一発で解決できます。
chmodコマンドの -R オプションで下層フォルダまで一括で変更できますが、フォルダは実行権限がないと中に入れなかったりするので、ファイルとフォルダそれぞれ設定する必要があり、ちょっと面倒です。
誤ってフォルダの実行権限を取ってしまった結果、中身が参照できなくてシステムエラーになるパターンもよくあります。そんな時は今回紹介する方法で指定フォルダ配下のサブフォルダに対して一気に実行権限を付与できるので便利です。
うん、lsコマンドでファイルリストを確認すると、、、気持ち悪いですね
chmodコマンドでフォルダとファイルにそれぞれパーミッションをセットしていけばいいのですが、フォルダ階層が深いと地獄です。
そんな時はこのように、findコマンドでファイルパスを掘り起こして、xargsコマンドで一気にchmodコマンドに流し込んでしまうと一瞬で片付きます。
◆ファイルのパーミッションを644に変更
$ find . -type f -print0 | xargs -0 chmod 644
◆フォルダのパーミッションょ755に変更
$ find . -type d -print0 | xargs -0 chmod 755
◆シェルスクリプトに実行権限を付ける
$ find . -name '*.sh' -print0 | xargs -0 chmod 755
findで指定するパスと、chmodで指定するパーミッションは設定したい場所と内容によって適宜読み替えてください。
コメント