LinuxOSではファイルやディレクトリに対し、読み取りや書き込みを禁止にしたり、他のユーザーからのアクセスを禁止にしたりするために、「パーミッション」を設定する「chmod」コマンドを使用します。
「chmod」コマンドの使い方(Linux)
まず、以下のように対象ファイル「test01.txt」をlsコマンドを用いてパーミッションを確認します。
$ ls -l total 0 -rw-r--r-- 1 root testgp 0 10月 17 00:26 test01.txt
パーミッションの状態と解説は以下を参考にしてください。
パーミッションの状態は以下の対象となります。
- オーナー
- 所属グループ
- その他
さらに対象ごとに以下のような許可条件があります。
- 読み込み(r)
- 書き込み(w)
- 実行(x)
上記のように許可されている場合は各許可条件(r・w・x)が表示され、許可されていない場合は(-)が表示されます。
各許可条件について
各許可条件についての説明は以下となります。
読み込み(r) | ファイルの内容を表示できる条件 cat、lessコマンドなどを使用し表示できるか |
書き込み(w) | ファイルをエディタなどで使用し編集可能か |
実行(x) | 対象のファイルを操作・実行できるか |
上記、「test01.txt」ファイルにおいて以下のパーミッション設定となります。
- オーナー:読み込み・書き込みを許可
- グループ:読み込みのみ
- その他:読み込みのみ
「chmod」コマンドを使用してファイルのパーミッションを変更する
対象ファイルの現在のパーミッションを変更するには、「chmod」コマンドを使用します。
以下で、ファイルの所属グループに書き込み権限を許可します。
chmodコマンドにおける、オーナー、所属グループ、その他の対象オプションは以下となります。
- オーナー:「u」
- 所属グループ:「g」
- その他:「o」
- 全対象:「a」
また、現在のパーミッションに追加する場合は「+」、削除する場合は「-」、指定した条件のみにする場合は「=」を使用します。
以下で、ファイル「test01.txt」の所属グループに書き込み権限を付与します。
現状、所属グループには書き込み権限がありません。
$ ls -l total 0 -rw-r--r-- 1 root testgp 0 10月 31 07:51 test01.txt
以下でコマンド実行後、所属グループに書き込み権限が付与されたことが確認できます。
$ chmod g+w test01.txt $ ls -l total 0 -rw-rw-r-- 1 root testgp 0 10月 31 07:51 test01.txt
次に所属グループから書き込み権限を削除します。
「-」オプションを使用することで所属グループの書き込み権限さ削除されたことが確認できます。
$ chmod g-w test01.txt $ ls -l total 0 -rw-r--r-- 1 root testgp 0 10月 31 07:51 test01.txt
次は所属グループで書き込み権限のみを指定します。
「=」オプションを使用することで所属グループに書き込み権限のみ許可されたことが確認できます。
$ chmod g=w test01.txt $ ls -l total 0 -rw--w-r-- 1 root testgp 0 10月 31 07:51 test01.txt
「chmod」コマンドで8進数を用いたパーミッション設定
「chmod」コマンドによるパーミッションのモード設定には8進数を使用する方法があります。
以下では、8進数を数字を利用した各モード設定の表となります。
8進数 | rwx |
0 | — |
1 | –x |
2 | -w- |
3 | -wx |
4 | r– |
5 | r-x |
6 | rw- |
7 | rwx |
上記、モード設定から「test01.txt」ファイルのパーミッションの変更をします。
以下ではオーナーのみ書き込み・読み込みを設定(600)した例となります。
$ chmod 600 test01.txt $ ls -l total 0 -rw------- 1 root root 0 10月 31 07:51 test01.txt
オーナーのみ書き込み・読み込み許可(6)、所属グループ、その他は全ての権限を削除(0)した結果となります。
ディレクトリのパーミッション変更
ディレクトリのパーミッション変更は以下の操作を制限することができます。
- 対象ディレクトリへの移動
- 対象ディレクトリ内でのファイルの参照や作成
以下ではディレクトリのパーミッションの設定を実施した例となります。
「test01」ディレクトリのデフォルトのパーミッションの状態は以下となります。
$ ls -l total 4 drwxr-xr-x 2 root root 4096 10月 31 08:15 test01
所属グループに書き込み権限を追加し、「w」が付与されたことが確認できます。
$ chmod g+w test01 $ ls -l total 4 drwxrwxr-x 2 root root 4096 10月 31 08:15 test01
8進数を利用して、オーナーのみ読み込み・書き込み・実行権限を与えます。
$ chmod 700 test01 $ ls -l total 4 drwx------ 2 root root 4096 10月 31 08:15 test01
所属グループ、その他の権限が削除されたことが確認できます。
「chmod」コマンドオプション
「chmod」コマンドのオプションは以下の通りとなります。
$ chmod --help 使用法: chmod [OPTION]... MODE[,MODE]... FILE... または: chmod [OPTION]... OCTAL-MODE FILE... または: chmod [OPTION]... --reference=RFILE FILE... Change the mode of each FILE to MODE. With --reference, change the mode of each FILE to that of RFILE. -c, --changes verbose と似ているが、変更があるもののみ出力する -f, --silent, --quiet ほとんどのエラーメッセージを抑止する -v, --verbose 各ファイルを処理する毎に診断メッセージを表示する --no-preserve-root '/' を特別扱いしない (既定) --preserve-root '/' に対する再帰的な操作を失敗させる --reference=RFILE MODE 値を指定する代わりに RFILE の MODE を使用する -R, --recursive ファイルとディレクトリを再帰的に変更する --help この使い方を表示して終了する --version バージョン情報を表示して終了する 各 MODE は '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+' の形式です. GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Report chmod translation bugs to <https://translationproject.org/team/> Full documentation at: <https://www.gnu.org/software/coreutils/chmod> or available locally via: info '(coreutils) chmod invocation'
「chmod」コマンドの使い方は以上となります。
エンジニアのオンライン学習
エンジニアにおすすめのオンライン教材比較 | |
ITエンジニアが自宅で学習ができるオンラインスクール比較 | |