Linuxコマンド【 chmod 】ファイルモードを変更する

当ページのリンクには広告が含まれています。

スポンサーリンク

chmodコマンドは、ファイルやディレクトリのアクセス制御のモードを変更するコマンドです。

cdmodコマンド

書式

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

オプション

-cモード変更の詳細を表示します。
-fエラーメッセージを非表示にします。
-Rファイルやディレクトリのモードを再帰的に変更します。

ファイルやディレクトリのモードを変更する方法は、「シンボリックモード」と「絶対モード」の2つがあります。以下ではこれらの使用方法を例示しながら、chmodコマンドについて解説します。

シンボリックモード

シンボリックモードの解説に入る前に、-l オプションをつけて「lsコマンド」を実行したときに表示される[rwx]について解説します。

lsコマンドの実行結果を見てみましょう。

$ ls -la
total 36
drwxr-xr-x 3 karuma karuma 4096 May 29 15:52 .
drwxr-xr-x 3 root   root   4096 May  6 11:14 ..
-rw------- 1 karuma karuma 1988 May 29 18:09 .bash_history
-rw-r--r-- 1 karuma karuma  220 May  6 11:14 .bash_logout
-rw-r--r-- 1 karuma karuma 3184 May  6 11:14 .bashrc
-rw-r--r-- 1 karuma karuma  464 May 29 15:17 id_rsa.pub
-rw------- 1 karuma karuma   51 May 29 18:09 .lesshst
-rw-r--r-- 1 karuma karuma  675 May  6 11:14 .profile
drwx------ 2 karuma karuma 4096 May 29 15:52 .ssh

ファイルやディレクトリの所有者、グループ、サイズ、更新日などが表示されていますが、注目して欲しいのは左端の変な記号[drwxr-xr-x]です。ファイルやディレクトリごとに表示されている[drwxr-xr-x]といった記号は、アクセス制御のモードを表します。

1文字目

1文字目は、ファイルタイプを表します。ファイルの場合は(-)、ディレクトの場合は、アルファベットの(d)が表示されます。

dディレクトリ
cキャラクタデバイス
sソケット
-ファイル

2〜10文字目

2文字目〜10文字目は3文字区切り(rwx rwx rwx)で、ユーザー制御、グループ制御、その他のユーザー制御を表します。rwxのアクセス制御は以下のテーブルのようになります。

rファイルやディレクトリの読み出し可
wファイルやディレクトリの書き込み可
xファイルの実行可

例えば、ファイルのアクセス制御が[-rw-r--r--]の場合、このファイルを“ユーザーは読み書き可”、“グループとその他のユーザーは読み込みのみ可”ということになります。

さて、ファイルやディレクトリのアクセス制御が理解できたら、いよいよ本題です。実際にファイルのアクセス制御のモードを変更してみましょう。

シンボリックモードでは、[ugoa][+-=]と先ほど解説した[rwx]記号で、モードを変更します。

uユーザー制御を指定します。
gグループ制御を指定します。
oその他のユーザーを指定します。
a全てのユーザーとグループを指定します。ugoと同じ意味です。
+指定したモードを追加します。
-指定したモードを削除します。
=指定したモードのみを設定します。指定しなかった場合は削除されます。

ファイルを作成し、lsコマンドでアクセス制御をみてみましょう。

$ touch mode.txt
$ ls -l mode.txt 
-rw-r--r-- 1 karuma karuma 0 Jun  4 13:55 mode.txt

ユーザー制御が[rw-]なので「読み書き可」、グループ制御とその他のユーザー制御が[r--]なので「読み込みのみ可」ですね。

グループとその他のユーザーも書き込みできるようにしてみます。

$ chmod go+w mode.txt
$ ls -l mode.txt 
-rw-rw-rw- 1 karuma karuma 0 Jun  4 13:55 mode.txt

モードが変更されましたね。次はグループの書き込みを削除します。

$ chmod g-w mode.txt
$ ls -l mode.txt 
-rw-r--rw- 1 karuma karuma 0 Jun  4 13:55 mode.txt

全てのユーザーとグループに実行権限(x)を追加します。

$ chmod a+x mode.txt 
$ ls -l mode.txt 
-rwxr-xrwx 1 karuma karuma   0 Jun  4 13:55 mode.txt

シンボリックモードでは以上のようにモードを変更します。次は「絶対モード」です。

絶対モード

絶対モードでは、3桁(もしくは4桁)の8進数でモードを指定します。

---0
--x1
-w-2
-wx3
r--4
r-x5
rw-6
rwx7

例えば、[-rw-r-----]を8進数で表すと[640]になります(6がユーザー制御、4がグループ制御、0がその他のユーザー制御)。それでは、「絶対モード」でモードを変更してみましょう。

[777]へ変更します。

$ ls -l mode.txt 
-rw-r--r-- 1 karuma karuma 0 Jun  4 14:23 mode.txt
$ chmod 777 mode.txt 
$ ls -l mode.txt 
-rwxrwxrwx 1 karuma karuma 0 Jun  4 14:23 mode.txt

[400]へ変更します。

$ chmod 400 mode.txt 
$ ls -l mode.txt 
-r-------- 1 karuma karuma   0 Jun  4 14:23 mode.txt

以上です。「シンボリックモード」と「絶対モード」のどちらも使えるように、いろいろモードを変更してみましょう。慣れてしまえば、簡単ですよ!

関連コマンド

chown, ls, umask

ファイル/ディレクトリ の人気記事

  1. Linuxコマンド【 chown 】ファイルの所有者やグループを変更する
  2. Linuxコマンド【 gzip 】ファイルを圧縮・展開する
  3. Linuxコマンド【 rsync 】高速にファイルを同期・転送する(バックアップ)
  4. Linuxコマンド【 du 】ファイルのディスク使用量を表示する
  5. Linuxコマンド【 zip 】ファイルを圧縮する
  6. Linuxコマンド【 ls 】ファイルとディレクトリのリストを表示する
  7. Linuxコマンド【 df 】ファイルシステムのディスク容量を表示する
  8. ファイルの解凍・圧縮 - Linuxコマンド一覧(.zip .gz .Z .bz2 tar.gz .tgz tar.Z .taz .tar.bz2 .tbz2)
  9. cksum - ファイルのCRCチェックサムとサイズを表示 - Linuxコマンド
  10. Linuxコマンド【 diff 】2つのファイルの差分を出力する

関連記事(一部広告含む)