[chmod]ディレクトリやファイルの権限変更の基本的な使い方とオプション〜linuxコマンド

chmodコマンドのアイキャッチ画像 コマンド一覧

chmodコマンドタイトル

linuxを使い始めて間もない方が、コマンドを実行しようとした時、「許可がありません」ってエラーメッセージが出て、作業が止まってしまうことが、かなりの頻度で発生するはずです。

パソコン1台、自分一人での作業中に、こんなエラー表示が出ることなんて想定外だと思います。例えばファイル「test1」をディレクトリ「var」に移動しようとしてみます。このときのコマンドは、

$ mv test1 /var

となるのですが(mvはディレクトリやファイルを移動するコマンドです)、Enterを押して実行しようとすると、

moveコマンドで許可がない場合の画像

というエラー表示が出る時があります。

自分のパソコンで作業しているのに何だこれ???ってなりますよね。そうなればテキスト本を読んだり、ネットで検索して調べるのですが、とにかく手間がかかります。。。。

ここでは、「許可がありません」ってエラーメッセージが現れたら、サクッと攻略してサクサク作業を勧められるように、権限の変更について解説していきます。

前置きが長くなりましたが、さっそく「chmod」コマンドの使い方を解説していきます。

chmodコマンドの基本的な使い方

具体的な「chmod」コマンドの使い方の説明に入る前に、ディレクトリやファイルの権限はどうやったらわかるの???ってことをサクッと説明します。

権限=パーミッション(permission)の確認

まず最初に権限を変更したいディレクトリやファイルが、どのような設定になっているか確認します。

ファイル等を確認するするには「ls」コマンドとファイルの詳細を表示する「 -l」オプションを使用します。例えば「home」ディレクトリの「test1」ファイルを見てみます。コマンド画面で、

$ ls -l test1

と入力したら、以下のように表示されました。

lsコマンドの結果

この「test1」ファイルは、所有者がroot、グループ名がroot、

所有者権限が「rw-」なのでrが読み取り可能、wが書き込み可能、-が権限を表す記号なので、実行はできないとなります。グループ権限も同じく「rw-」だから読み書き可能で実行権限なし、他人は「r--」なので読み取りのみ可能、となります。

それではこれらの権限をどのように変更させるか具体的に解説していきます。

chmodによる基本的な権限変更の方法

chmodの基本書式

権限を変更する場合の「chmod」コマンドの基本的書式は、

$ chmod [変更対象][変更方法][変更内容] [変更するファイル名]

となります。アクセス権限を変更する場合は、 大抵はsudo を「chmod」コマンドの前に付ける必要がありますので注意が必要です。

例えば、上記の「test1」ファイルは、

lsコマンドで権限を確認

となっていました。所有者はrootで権限は「rw-」となっているので、読み書き可能で実行権限なしでしたね。それでは例えば所有者rootに実行の権限「x」を付けてみます。

$ sudo chmod u+x test1

chmodコマンドで実行権限を付ける

となります。所有者がrootなので最初にsudoを付けています。では、「ls」コマンドとファイルの詳細を表示する「 -l」オプションを使用して、どのように権限が変わったか見てみます。

lsコマンドで確認

変更前は「rw-」だったのがchmodコマンドを実行したあとは「rwx」に変わっているのがわかると思います。読み書きのみ可能だった「test1」ファイルに新たに実行可能の権限「x」が追加されました

さて、上で出てきた「rwx」や「+」、「u」が何を表すか分かりやすいように一覧表にしてみます

権限変更で使用する記号一覧

それでは、「chmod」コマンドの基本的書式を見ながら、それぞれの記号の意味を解説していきます。

権限変更時の基本書式は、

$ chmod [変更対象][変更方法][変更内容] [変更するファイル名]

でしたね。まず、[変更対象]を表す記号を見ていきます。

変更対象と意味を表した画像

「u」は所有者(user)、「g」はグループ(group)、「o」は他人(other)、「a」は全て(all)を表します。

次に[変更方法]を表す記号を見ていきます。

変更方法と意味を表した画像

  • 「=」は[変更対象]を指定した権限にする事
  • 「+」は[変更対象]に指定した権限を与える事
  • 「−」は[変更対象]から指定した権限を取り除く事

の意味を表します。変更方法の記号は数の足し算、引き算と同じ感覚でできるのでイメージがつきやすいと思います。

最後に[変更内容]を表す記号です。

変更内容と意味を表した画像

「r」は読み取り(read)、「w」は書き取り(write)、「x」は実行(execrution)を表します。

権限変更で使用する記号を使用する際の具体例(基本編)

それでは実際に権限変更で使用する記号を用いて具体例を解説していきます。まずはシンプルな変更例を書きます。

  • 所有者に読み取り権限を追加したい     u+r    $ chmod u+r [変更するファイル名]
  • 所有者に書き込み権限を追加したい     u+w  $ chmod u+w [変更するファイル名]
  • 所有者に実行権限を追加したい                 u+x      $ chmod u+x [変更するファイル名]
  • 所有者から書き込み権限を取り除きたい    u-w      $ chmod u-w [変更するファイル名]
  • 所有者から実行権限を取り除きたい           u-x       $ chmod u-x [変更するファイル名]

※所有者のみの例題でしたが、グループの場合は単純に「u」を「g」に置き換えてあげればOKです。

基本編では[変更対象]、[変更内容]の指定が一つでしたが、複数同時に変更できます。次の応用編で複数変更の方法を解説します。

権限変更で使用する記号を使用する際の具体例(応用編)

基本編では、[変更対象]、[変更内容]の指定が一つづつのシンプルな変更方法の例題でしたが、これでは手間がかかってしまいます。「chmod」コマンドで権限変更をする場合は、複数の項目を同時に指定して実行できるので是非、覚えてみて下さい。

  • 所有者に読み取り書き込み・権限を追加したい

u+rw    $ chmod u+rw [変更するファイル名]

  • 所有者に書き込み・実行権限を追加したい

u+wx     $ chmod u+wx [変更するファイル名]

  • 所有者とグループに書き込み・実行権限を追加したい

ug+wx      $ chmod ug+wx [変更するファイル名]

  • 所有者から書き込み・実行権限を取り除きたい

u-wx      $ chmod u-wx [変更するファイル名]

  • 所有者とグループからから実行権限を取り除きたい

ug-x       $ chmod ug-x [変更するファイル名]

  • 所有者に書き込み・実行権限を追加してグループから実行権限を取り除きたい

u+wx,g-x       $ chmod u+wx,g-x [変更するファイル名]

となります。所有者やグループにそれぞれ個別に権限を指定する場合は、間に「,」を入力します。

では、実際にコマンド画面を使用して試してみます。

コマンド画面での権限変更例

まず「ls」コマンドとファイルの詳細を表示する「 -l」オプションを使用して、現在の設定を確認します。それでは再び「test1」ファイルを見てみます。

lsコマンドで権限を確認

① 所有者、グループに全ての権限「rwx」を与える。

    $ chmod ug+rwx test1

全ての権限を与えるコマンド

lsコマンドで設定を確認

②所有者、グループから実行の権限「x」を取り除く。

   $ chmod ug-x test1

実行権限を取り除くコマンド

lsコマンドで結果を確認

③所有者、グループ、他人に一旦全ての権限「rwx」を与えて、グループから実行の権限「x」を取り除き、更に他人から書き込みと実行の権限「wx」を取り除く。

$ chmod a+rwx,g-x,o-wx test1

書き込みと実行権限を取り除くコマンド

 

lsコマンドで設定を確認

 

コメント

タイトルとURLをコピーしました