Linux操作の基本、ファイルやディレクトリ操作をコマンドでできるようになろう。
覚えておきたい必須コマンド30―その1・ファイルの基本操作
2001年05月31日 00時00分更新
ファイルやディレクトリのパーミッションを変更するには、chmodコマンドを用いる。
パーミッションは、読み取り、書き込み、実行の3組を所有者、グループ、その他のユーザーに対してそれ ぞれ設定する。この指定の方法には記号モードと数値モードの 2通りがある。
たとえば記号モードでは、次のように指定する。
USER$ chmod ugo+rwx fuga
最初のugoは、所有者(user)、グループ(group)、その他(other)に対しての操作であることを指定している。次のプラス記号で許可を与えている。その許可は、読み取り(read)、書き込み(write)、実行(execute)である。
許可をしないようにするにはプラスの代わりにマイナスを指定する。たとえば、その他のユーザー(other)に対して書き込み(write)できないようにするには、次のようにする。
USER$ chmod o-w fuga
数値モードは、最初は難しく感じるかもしれないが、慣れると非常に使いやすい。このモードでは、それぞれの許可の設定を以下に示す値の合計で指定する。
- 400 所有者の読み取り
- 200 所有者の書き込み
- 100 所有者の実行
- 40 グループの読み取り
- 20 グループの書き込み
- 10 グループの実行
- 4 その他の読み取り
- 2 その他の書き込み
- 1 その他の実行
たとえば、所有者とグループに対して読み取りと書き込み、その他のユーザーへは読み取りだけの許可となるようにするには、次のようにする。
USER$ chmod 664 fuga
所有者だけに読み取りと書き込み、グループとその他は読み取りだけにするには、644となる。所有者だけがフルコントロール、グループとその他は何もなしならば700だ。
ディレクトリに含まれるファイルのパーミッションをすべて変更したい場合は、Rオプションを指定する。
USER$ chmod -R go-w fuga
ただし、このときにファイルの実行フラグを取ろうとして、
USER$ chmod -R go-x fuga
のようにしてしまうと、サブディレクトリの実行許可もなくなってしまう。ディレクトリはそのままで、通常のファイルだけ実行許可を変更したい場合は、次のようにする。
USER$ find . -type f -exec chmod go-x {} \;
グループの変更は、chgrpコマンドで行う。ただし、新しく設定するグループのメンバーでなければならない。
自分が属しているグループはgroupsコマンドでわかる。
USER$ groups users root
この例でのユーザーであれば、グループをusersかrootに変更することが可能だ(画面1)。
USER$ ls -l linux.txt -r--r--r-- 1 ken-na users 15097 Mar 19 18:56 linux.txt USER$ chgrp root linux.txt USER$ ls -l linux.txt -r--r--r-- 1 ken-na root 15097 Mar 19 18:56 linux.txt
画面1 ファイルのグループを変更する
ディレクトリに含まれるファイルのグループをすべて変更したい場合は、chmodと同じようにRオプションを指定する。
ファイルの所有者の変更は、chownコマンドで行う。ただし、スーパーユーザーだけが変更できる。それ以外のユーザーは変更できないことに注意する(画面2)。
root# ls -l linux.txt -r--r--r-- 1 ken-na root 15097 Mar 19 18:56 linux.txt root# chown www linux.txt root# ls -l linux.txt -r--r--r-- 1 www root 15097 Mar 19 18:56 linux.txt
画面2 ファイルの所有者を変更する
chownもRオプションで再帰的に所有者を変更できる。