chmod コマンドは、ファイルやディレクトリのアクセス権限を変更するためのコマンドです。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、細かなオプションの違いがあります。

基本的な使い方

編集
chmod [オプション] モード ファイル...

主なオプション(GNU coreutils版)

編集
主なオプション
オプション 説明
-R, --recursive ディレクトリ内のすべてのファイルに対して再帰的にアクセス権を変更
-v, --verbose 変更したファイルごとに詳細を表示
-c, --changes 実際に変更されたファイルに対してのみ変更内容を表示
-f, --silent, --quiet エラーメッセージを表示しない

モードの指定方法

編集

chmod ではアクセス権限を指定するためにモードを使用します。モードの指定には、数字または記号を使用する方法があります。

数字で指定

編集

モードは3桁の数字で指定され、各桁は以下のように設定されます:

  • 所有者(ユーザー)の権限
  • グループの権限
  • その他のユーザーの権限

例えば、755 の場合、所有者には読み、書き、実行の権限、グループおよびその他のユーザーには読みと実行の権限が与えられます。

chmod 755 file.txt

記号で指定

編集

記号を使ってもアクセス権限を変更できます。記号は以下のように使います:

  • r:読み取り権限
  • w:書き込み権限
  • x:実行権限
  • u:所有者(ユーザー)
  • g:グループ
  • o:その他
  • a:全員

例えば、u+x は所有者に実行権限を追加することを意味します。

chmod u+x file.txt

ファイルに実行権限を追加

編集
chmod +x file.sh

file.sh に実行権限を追加。

所有者に読み書き権限を付与、その他のユーザーに読み権限を付与

編集
chmod 644 file.txt

file.txt に所有者に読み書き権限、その他のユーザーに読み権限を付与。

再帰的にディレクトリ内のすべてのファイルの権限を変更

編集
chmod -R 755 directory/

directory/ 内のすべてのファイルおよびディレクトリに 755 の権限を設定。

FreeBSD 版との違い

編集

FreeBSD でも chmod コマンドは提供されていますが、GNU coreutils 版といくつか違いがあります。

主な違い:

編集
  1. -R(再帰的に変更)オプションの動作が異なる
    • FreeBSD では、chmod -R が一部のシンボリックリンクには適用されないことがあります。
    • 一方、GNU 版ではシンボリックリンクにも再帰的に変更を適用します。
  2. -v(詳細表示)オプションの動作が異なる
    • FreeBSD では、chmod -v が一部のファイルシステムでは出力されない場合があります。
  3. GNU coreutils 版を FreeBSD で使う方法
    • coreutils パッケージをインストールすると gchmod という名前で GNU 版 chmod が使える。
    pkg install coreutils
    gchmod -R 755 directory/  # GNU coreutils 版の chmod
    

詳しくは、それぞれの環境で man chmod を確認してください。