サイトアイコン ITC Media

【実例付】chmodコマンドの使い方とオプション一覧を徹底解説

(最終更新月:2023年3月)

✔このような方へ向けて書かれた記事となります

「ファイルのアクセス権限を変更したい」

「chmod コマンドの使い方がわからないのだろうか?」

「Linuxでのファイル操作について知りたい」

✔当記事を通じてお伝えすること

当記事では、chmodコマンドの基本についてはもちろん、初心者にもわかりやすくファイルやディレクトリのパーミッションについて詳しく解説しています。

ぜひ最後までご覧ください。

✔読むより見て、聞きたい方は

筆者プロフィール

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

chmodコマンドで知っておくべきこと

chmodコマンドで知っておくべきことについて解説していきます。

Unix系のオペレーティングシステムでファイルやディレクトリのアクセス権限を変更できるので、つかう頻度の多いコマンドのひとつです。

chmodコマンドとは?

chmodコマンドは、LinuxやUnix系のオペレーティングシステムでファイルやディレクトリのアクセス権限を変更するためのコマンドです。

コンピューター内に保存しているファイルやディレクトリには、その所有者やグループ、ほかのユーザーのアクセスや編集できるかの権限が定められています。

例えば「itc.txt」というファイルに対して、それぞれ以下のように設定する方法はこちら。

chmod 740 itc.txt

このコマンドにより、所有者にはrwx(読み書き実行)、グループにはr(読み取り)、その他のユーザーには何も権限が与えられません。

chmodコマンドの基本的な書き方

chmodコマンドの基本的な書き方は以下のとおり。

chmod [オプション] モード ファイル名

chmod 777 itc.txt

chmodコマンドで設定するモードの書き方

chmodコマンドでは、モードを設定し、ファイル権限を変更します。

モードの書き方としては以下の2つ。

パーミッション(権限)を数字で表す

パーミッションを数字で表す際は3桁の数字で使用し、その桁が誰に対しての権限かを意味しています

左から、所有者→グループ→その他ユーザーです。

権限の内容を意味するその数値は、0から7で、読み・書き・実行の数字を足し算して出来上がっています。

読み・書き・実行すべてできる場合は、4+2+1で7となるのです。

パーミッション(権限)を記号で表す

記号による方法は、そのコマンドの中で、「誰に」「何を」与えるのかを記号で表したもの。

各所有者を以下のように表します。

これらのユーザーにr(読み取り)やw(書き込み)、x(実行)の権限を「=」で渡していくのです。

例としてはこちら。

chmod u=rwx,g=rx,o=x itc.txt

chmodコマンドが必要な理由

chmodコマンドが必要な理由は、以下のとおり。

例えばWebサーバー上でファイル権限を誰でも読み書き実行ができるようにしていると、不正アクセスの原因となる可能性があります。

企業内の共有フォルダで、意図しないデータが誤操作などにより消えてしまうことも考えられるでしょう。

【具体例】chmodコマンドで755を指定する方法

chmodコマンドで755を指定する方法はこちら。

chmod 755 [ファイル名]

具体的に、itc.txtに755を指定したいときは以下のようにします。

chmod 755 itc.txt

付与した権限が正しいかを見たい時は以下のようにしてください。

$ ls -la
合計 32
drwxrwxr-x  3 yulikepython yulikepython 4096  3月 11 22:00 .
drwxr-xr-x 16 yulikepython yulikepython 4096  3月 12 08:32 ..
-rwxr-xr-x  1 yulikepython yulikepython  177  3月 11 21:35 itc.txt

例えばWebサーバー上で、パーミッション755を与えるファイルやディレクトリは以下のようなものです。

【具体例】chmodコマンドで再帰的に権限を書き換える方法

chmodコマンドで再帰的に権限を書き換えるには、-Rオプションを使用します。

-Rオプションを使用することで、指定したディレクトリ以下の全てのファイルやディレクトリに対して、同じ権限を一括で設定できるのです。

chmod -R 755 /home/itcdir

chmodコマンドのオプション一覧を徹底解説

chmodコマンドのオプション一覧について解説していきます。

chmodコマンドのオプションを理解すれば、必要な権限を正確に設定できるようになり、セキュリティ上のリスクを最小限に抑えられます。

ファイルのモードを変更した場合に、変更内容を表示:-c, –changes

-cオプション(–changes)をつかうと変更内容をターミナル上で表示できます。

$ chmod -c 755 itc.txt
'itc.txt' のモードを 0700 (rwx------) から 0755 (rwxr-xr-x) へ変更しました

オプションがないとコメントは非表示で、変更を確認したい方は-cオプションを使いましょう。

エラーメッセージを表示しない:-f, –silent, –quiet

-fオプション(–silentもしくは–quiet)は、ファイルやディレクトリのアクセス権限を変更する際に、エラーメッセージを表示しないようにするオプションです。

-fオプションをつかうことで、エラーが発生しても、エラーメッセージを表示せずに処理を続行します。

ファイルのモードを変更するたびに、変更内容を表示:-v, –verbose

-vオプション(–verbose)をつかうと、実行内容を表示できます。

$ chmod -v 700 itc4.txt
'itc4.txt' のモードを 0777 (rwxrwxrwx) から 0700 (rwx------) へ変更しました

-cオプションとの違いは、モードを変更していない場合でも、メッセージが表示されること。

$ chmod -v 700 itc4.txt
'itc4.txt' のモードは 0700 (rwx------) として保留されました

ディレクトリ内のファイルやサブディレクトリに対して再帰的に操作する:-R, –recursive

-Rオプション(–recursive)は、ディレクトリ内のファイルやサブディレクトリすべての権限を変更するためのもの。

chmod -R 777 itcdir

RFILEで指定されたファイルのモードを、対象のファイルにコピー:–reference=RFILE

–reference=RFILEオプションは、指定したファイルのパーミッションを、別のファイルにコピーすることができるオプションです。

コピー元ファイル「itc_777.txt」の権限を、「itc_755.txt」へコピーしたい場合はこちらです。

chmod --reference=itc_777.txt itc_755.txt

–referenceの「–」は、ハイフン2つです。

まとめ:chmodコマンドでできることは意外と多い

当記事の内容をまとめます。

chmodコマンドは、Linuxサーバー上などで権限を書き換えられる非常に便利なコマンドです。

サーバーの設定がうまくいかないときなどは、この権限が原因なことがとても多いはず。

chmodコマンドをマスターして、トラブル解決を早め、セキュリティ性も高めましょう。

モバイルバージョンを終了