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 |
--x | 1 |
-w- | 2 |
-wx | 3 |
r-- | 4 |
r-x | 5 |
rw- | 6 |
rwx | 7 |
例えば、[-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
以上です。「シンボリックモード」と「絶対モード」のどちらも使えるように、いろいろモードを変更してみましょう。慣れてしまえば、簡単ですよ!
関連コマンド
ファイル/ディレクトリ の人気記事
- Linuxコマンド【 chown 】ファイルの所有者やグループを変更する
- Linuxコマンド【 gzip 】ファイルを圧縮・展開する
- Linuxコマンド【 rsync 】高速にファイルを同期・転送する(バックアップ)
- Linuxコマンド【 zip 】ファイルを圧縮する
- ファイルの解凍・圧縮 - Linuxコマンド一覧(.zip .gz .Z .bz2 tar.gz .tgz tar.Z .taz .tar.bz2 .tbz2)
- cksum - ファイルのCRCチェックサムとサイズを表示 - Linuxコマンド
- Linuxコマンド【 diff 】2つのファイルの差分を出力する
- Linuxコマンド【 ls 】ファイルとディレクトリのリストを表示する
- Linuxコマンド【 du 】ファイルのディスク使用量を表示する
- unzip - アーカイブを展開 - Linuxコマンド