パーミションなどを設定する!chmodコマンドの詳細まとめ【Linuxコマンド集】

  • このエントリーをはてなブックマークに追加
  • Pocket
chmod

chmodはファイルやフォルダのパーミッション、アクセス権限を設定するLinuxコマンドだ。

パーミッションはLinuxサーバーを設定していれば必ず意識しなければならないものだ。

このページではchmodコマンドの詳細をお伝えする。また、chmodの操作方法を通してパーミッションに関してもまとめた。

パーミッションについて

パーミッションとは、Linuxを含むUnixで扱われるファイルやディレクトリのアクセス権の設定のことだ。

ファイルやディレクトリは扱う所有者、グループ、その他の3種類毎に、実行できるか、書き込み変更ができるか、読み込みができるか3種類のアクセスが可能か設定できる。

例えば、あるディレクトリの実行ファイルtest.shは、実行は所有者にしかできない。内容の変更は所有者とグループにはできる。その他のユーザーにはすべてのアクセスを禁止するというように、1つのファイルやディレクトリに関して複数の設定ができる。

設定値

設定値は所有者、グループ、その他の順にそれぞれ0から7の整数で表わされる。

それぞれの数字は、以下の設定値を加算して求める。

実行ができる=4

書き込み、変更ができる=2

読み込みができる=1

例えば、所有者にすべての権限、グループには書き込み変更と読み込み、その他ユーザーには読み込みのみというアクセス権限は

731

となる。

実践ファイルの作成

今回は、流れに沿って実践できるように構成した。コマンドもすべて用意している。

はじめに次のコマンドで必要なファイルを作成しよう。

パーミッションの確認

作成したファイルの現在のパーミッションを確認してみよう。

現在のパーミッションは-lオプションを付けたlsコマンドで見ることができる。

$ ls -l work

dataフォルダの表示内容を確認してみよう。

パーミションの確認

一番左の項目がdrwxrwxr-xとなっている。

左の1文字がファイルかディレクトリかシンボリックリンクかを表わしている。

次の3文字が所有者のアクセス権限だ。

rが読み取り可能、wが書き込み可能、xが実行可能ということで、所有者はdataフォルダに対してはすべての権限を与えられている。

次の3文字がグループユーザーのアクセス権限でこれもすべての権限が与えられている。

最後の3文字がその他ユーザーのアクセス権限だ。

rが読み取り可能、wが書き込み可能、-は権限なしなので、読み書きはできるが、実行はできないという設定だ。

シェルファイル

test01.shは、testと言う文字を画面出力するシェルファイルで実行することができる。

シェルファイルの拡張子は慣例的にshだ。

シェルファイルの実行は、./に続けてファイル名を入力する。

$ ./ファイル名

では実際にworkフォルダ内のtest01.shを実行してみよう。

$ ./work/test01.sh

シェルの実行

許可がありませんというメッセージが表示され、実行できなかった。

今、所有者としてtest01.shにアクセスしているが、test01.shの所有者のアクセス権限は読み取りと書き込みだけが可能で実行可能ではないからだ。

Chmodコマンドの基本

前置きが長くなったが、Chmodコマンドについてお伝えしていく。

chmodコマンドの基本

ではtest01.shをchmodコマンドで実行可能に変更してみよう。

パーミッションを変更するコマンドは次の通りだ。

$ chmod アクセス権限 ファイル名

workフォルダ内のtest01.shのアクセス権限をすべての利用者がすべての権限を持つように設定する場合は、次の通りだ。

$ chmod 777 work/test01.sh

test01.shにすべての利用者に対してすべての権限を与えた。

確認してみよう。

$ ls -l work/test01.sh

アクセス権限がrwxrwxrwxとなり、すべての利用者がすべての権限を持っていることがわかった。

では、実際に実行してみよう。

$ ./work/test01.sh

chmod

 testという文字が表示され、実行された。

chmodコマンドで利用者とアクセス権限を指定する方法

アクセス権限を660だったものを777などの数値指定をすると、その他ユーザーに読み取りのみの権限を付けたかった場合、実行と書き込みの権限まで付いてしまう。

今設定している値から次の書式で必要な箇所だけ変更することができる。

$ chmod ユーザー 追加か解除か アクセス権限 ファイル名

ユーザーは、所有者がu、グループがg、その他ユーザーはo、すべてのユーザーはaで設定する。

続いて追加の場合は+、解除の場合は-、その値にしたい場合は=を記述する。

最後のアクセス権限は、実行許可ならx、書き込み許可ならw、読み取り許可ならrを設定する。

workフォルダ内のtest01.shに現在のアクセス権限のその他ユーザーの権限から実行権限を解除したい場合は次の通りである。

$ chmod o-x work/test01.sh

確認してみよう。

$ ls -l work/test01.sh

chmod 権限別

アクセス権限がrwxrwxrw-となり、その他ユーザーの実行権限が解除されていることがわかった。

アクセス権限は、重複して記述できる。

例えば、すべての権限を追加した上で、グループには実行権限を解除、その他ユーザーの実行と書き込み権限を解除したい場合は、次のように指定する。

$ chmod a=xwr,g-x,o-xw work/test01.sh

確認してみよう。

$ ls -l work/test01.sh

chmodコマンド5

アクセス権限がrwxrw-r--となり、すべての権限が許可された上で、グループには実行権限を解除、その他ユーザーの実行と書き込み権限を解除されていることがわかった。

chmodコマンドの便利なオプションたち

コマンドの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション-v ,--verbose

コマンド実行の診断結果を表示する

オプション-c ,--changes

コマンドの実行結果、変更があった場合のみ、結果を表示する

オプション-R ,--recursive

複数ファイルに対して設定する場合、ディレクトリ内も設定対象とする

-vオプション(--verbose):コマンド実行の診断結果を表示する

-vオプション(--verboseオプション)はchmodコマンドの結果を表示するコマンドだ。

パーミッションが正常に変更されたかが確認できる。

$ chmod -v アクセス権 ファイル名

workフォルダ内のtest01.shのアクセス権限をすべての利用者がすべての権限を持つように設定し、結果を表示する場合は、次の通りだ。

$ chmod -v 777 work/test01.sh

chmod6

どのように変更されたかが表示される。

もう一度同じコマンドを実行してみよう。

$ chmod -v 777 work/test01.sh

chmod7

変更がない場合は、保留されましたと表示される。

-cオプション(--changes):コマンドの実行結果、変更があった場合のみ、結果を表示する

-cオプション(--changesオプション)は-vオプション同様、chmodコマンドの結果を表示するコマンドだ。ただし、コマンド実行の結果、変更がなければ結果は表示しない。

$ chmod -c アクセス権 ファイル名

workフォルダ内のtest01.shのアクセス権限を管理者とその他ユーザーがすべての権限を持つように設定し、結果を表示、しかし変更がない場合は結果を表示しないと設定する場合は、次の通りだ。

$ chmod -c 707 work/test01.sh

chmod8

どのように変更されたかが表示される。

もう一度同じコマンドを実行してみよう。

$ chmod -c 707 work/test01.sh

chmod9

変更がない場合は、結果は表示されない。

-Rオプション(--recursive):複数ファイルに対して設定する場合、ディレクトリ内も設定対象とする

chmodコマンドは、ファイル名にワイルドカードを指定することで複数ファイルに対してパーミッションを設定することができる。

-Rオプション(--recursiveオプション)は、複数ファイルにパーミッションを設定する場合、ディレクトリ内も設定対象とする。

$ chmod -R アクセス権 ファイル名

まず、-Rオプション(--recursiveオプション)を設定せずに-vオプション(--verboseオプション)を使ってどのファイルが変更されているか確認してみよう。

workフォルダ内ファイルとディレクトリを対象とし、確認を行いながらパーミッションを設定するコマンドは次の通りだ。

$ chmod -v 755 work/*

chmod10

ディレクトリdataとtest01.shの1ファイルのみが対象となった。

今度は、ディレクトリの中も含めて変更する。

$ chmod -vR 755 work/*

chmod11

ディレクトリdataとtest01.shの他にもディレクトリdataの中の2ファイルも対象となった。

関連項目

最後にchmodコマンドに関連して、基本的なファイルの権限の変更のコマンドも紹介しておく。

chgrp

ファイルやフォルダのアクセスできるグループを設定する。

chown

ファイルやフォルダの所有者を設定する。

まとめ

chmodコマンドはLinuxを使う上で、かなり早めに覚えなければいけないコマンドだろう。詳細含めてまとめてみたが、いかがだっただろうか? 

Webにサービスを公開する、複数人でサーバーを管理するときなどには、知らなくてはエンジニアとして生きていけないコマンドだ。

ぜひ、オプションなども含めて、覚えてしまおう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメント

コメントを残す

*