Skip to content
Latchkey

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 が実行不可能なスクリプトに対する一般的な修正です。

関連ガイド