(最終更新月:2023年3月)
✔このような方へ向けて書かれた記事となります
「ファイルのアクセス権限を変更したい」
「chmod コマンドの使い方がわからないのだろうか?」
「Linuxでのファイル操作について知りたい」
✔当記事を通じてお伝えすること
- chmodコマンドの基本的な使い方
- chmodコマンドで変更できるファイルのパーミッションの種類
- chmodコマンドで変更できるファイルのパーミッションの数字表記の意味
当記事では、chmodコマンドの基本についてはもちろん、初心者にもわかりやすくファイルやディレクトリのパーミッションについて詳しく解説しています。
ぜひ最後までご覧ください。
✔読むより見て、聞きたい方は
chmodコマンドで知っておくべきこと
chmodコマンドで知っておくべきことについて解説していきます。
Unix系のオペレーティングシステムでファイルやディレクトリのアクセス権限を変更できるので、つかう頻度の多いコマンドのひとつです。
- chmodコマンドとは?
- chmodコマンドの基本的な書き方
- chmodコマンドで設定するモードの書き方
- chmodコマンドが必要な理由
- 【具体例】chmodコマンドで755を指定する方法
- 【具体例】chmodコマンドで再帰的に権限を書き換える方法
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で、読み・書き・実行の数字を足し算して出来上がっています。
- 実行:1
- 書き込み:2
- 読み取り:4
読み・書き・実行すべてできる場合は、4+2+1で7となるのです。
パーミッション(権限)を記号で表す
記号による方法は、そのコマンドの中で、「誰に」「何を」与えるのかを記号で表したもの。
各所有者を以下のように表します。
- 所有者:u
- グループ:g
- その他ユーザー:o
- すべてのユーザー:a
これらのユーザーに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を与えるファイルやディレクトリは以下のようなものです。
- ウェブサイトのルートディレクトリ
- HTML、CSS、JavaScriptなどの静的ファイル
- CGIスクリプトやPHPスクリプトなどの動的ファイル
- 画像や動画などのメディアファイル
【具体例】chmodコマンドで再帰的に権限を書き換える方法
chmodコマンドで再帰的に権限を書き換えるには、-Rオプションを使用します。
-Rオプションを使用することで、指定したディレクトリ以下の全てのファイルやディレクトリに対して、同じ権限を一括で設定できるのです。
chmod -R 755 /home/itcdir
chmodコマンドのオプション一覧を徹底解説
chmodコマンドのオプション一覧について解説していきます。
chmodコマンドのオプションを理解すれば、必要な権限を正確に設定できるようになり、セキュリティ上のリスクを最小限に抑えられます。
- ファイルのモードを変更したい場合に、変更内容を表示:-c, –changes
- エラーメッセージを表示しない:-f, –silent, –quiet
- ファイルのモードを変更するたびに、変更内容を表示:-v, –verbose
- ディレクトリ内のファイルやサブディレクトリに対して再帰的に操作する:-R, –recursive
- RFILEで指定されたファイルのモードを、対象のファイルにコピー:-reference=RFILE
ファイルのモードを変更した場合に、変更内容を表示:-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コマンドは、ファイルやディレクトリの権限を書き換えるもの
- chmodコマンドを使えばセキュリティが高まる
- chmodコマンドでオプションを覚えると、作業効率が上がる
chmodコマンドは、Linuxサーバー上などで権限を書き換えられる非常に便利なコマンドです。
サーバーの設定がうまくいかないときなどは、この権限が原因なことがとても多いはず。
chmodコマンドをマスターして、トラブル解決を早め、セキュリティ性も高めましょう。