chmodとは?ファイルパーミッションの変更
chmod (change mode) は、ファイルのパーミッションビットを変更するUnixコマンドで、誰がそれを読み取り、書き込み、実行できるかを制御します。
chmodは、Unixでファイルパーミッションを変更する方法です。スクリプトを実行可能にしたり、シークレットファイルをロックダウンしたり、ディレクトリを開放したりできます。CIで最もよくある用途は、スクリプトに実行ビットを追加して直接実行できるようにする chmod +x で、頻繁に起きる「permission denied」エラーを修正します。
chmodが行うこと
chmodは、所有者、グループ、その他に対してファイルの読み取り、書き込み、実行ビットを設定します。シンボリック記法 (+x など) または数値の8進記法 (755 など) を受け付けます。
シンボリック記法
chmod +x script.shはすべてのクラスに実行ビットを追加します。chmod u+w fileは所有者のみに書き込みを追加します。chmod go-r secretはグループとその他から読み取りを削除します。
数値記法
数値モードはすべてのビットを一度に設定します。chmod 755 script.sh は所有者にrwx、グループとその他にr-xを与え、chmod 600 key は秘密鍵を所有者の読み書きのみに制限します。
再帰的な変更
-R を追加すると、chmodがディレクトリツリーに適用されます。慎重に使ってください。プロジェクトに対する chmod -R 777 はセキュリティ上の悪臭で、すべての人にすべてのファイルへの完全なアクセスを与えます。
CIにおけるchmod
ステップが ./build.sh を実行して「permission denied」に遭遇したとき、先に chmod +x build.sh を追加すると通常は修正できます。さらに良いのは、実行ビットを設定してファイルをcommitし、chmodを不要にすることです。
マネージドrunnerでのパーミッション修正
Latchkeyのrunnerでは、chmod +x はステップ内でスクリプトを確実に実行可能にします。job中に書き込まれる鍵などの機密ファイルには、600のような制限的なモードを使ってアクセスを制限してください。
重要なポイント
- chmodは、ファイルの読み取り、書き込み、実行のパーミッションビットを変更します。
- シンボリック記法 (
+x) または数値記法 (755) を受け付けます。 - CIでは、
chmod +xが実行不可能なスクリプトに対する一般的な修正です。