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コマンド【 zip 】ファイルを圧縮する
  5. ファイルの解凍・圧縮 - Linuxコマンド一覧(.zip .gz .Z .bz2 tar.gz .tgz tar.Z .taz .tar.bz2 .tbz2)
  6. cksum - ファイルのCRCチェックサムとサイズを表示 - Linuxコマンド
  7. Linuxコマンド【 diff 】2つのファイルの差分を出力する
  8. Linuxコマンド【 ls 】ファイルとディレクトリのリストを表示する
  9. Linuxコマンド【 du 】ファイルのディスク使用量を表示する
  10. unzip - アーカイブを展開 - Linuxコマンド

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