IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

はじめてのLinux

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第12回 Linuxのファイル操作に慣れよう ファイルやディレクトリのパーミッションを設定しよう (濱田康貴) 2023年3月

みなさんこんにちは。株式会社パイプラインの濱田です。前回はLinuxにおけるファイルやディレクトリの権限について概要を説明いたしました。今回は、ファイルやディレクトリの権限変更コマンドを、実例を交えて取り上げていきたいと思います。

パーミッション変更の大前提

ファイルやディレクトリのパーミッションを変更するコマンドは「chmod」コマンドです。chmodコマンド自体はrootユーザーでも一般ユーザーでも実行することが可能ですが、以下の条件のいずれかに合致していることが必要です。

  1. 変更対象のファイルやディレクトリのオーナーが自分自身であること
  2. rootユーザーで実行するかsudoをつけて実行すること

ファイルのパーミッションを確認するには、lsコマンドに「-l」オプションをつけて実行することで確認することができます。ファイル「hogehoge.txt」のパーミッションを確認してみましょう。


ls -l ${HOME}/hogehoge.txt

コマンドの実行結果は以下の通りです。


-rw-r--r-- 1 nullpopopo nullpopopo 31230 Feb 14 18:55 /home/nullpopopo/hogehoge.txt

パーミッションを表示するフィールドのうち、ユーザーを示す箇所が「rw」となっていますので、ファイルのオーナーであるnullpopopoユーザーはhogehoge.txtを読むことも書き込みを行うこともできます。2番め グループを示すフィールドと3番め 他ユーザーを示すフィールドが「r」となっていますので、 /home/nullpopopo/hogehoge.txt は

  • ファイルのオーナー nullpopopo は読み書き可能である
  • グループ nullpopopo に属するユーザーは読み込みのみ可能である(変更不可)
  • ファイルのオーナーでもなくグループnullpopopoに属していないユーザーは読み込みのみ可
となります。

ファイルのパーミッションを変更してみよう

ファイルやディレクトリのパーミッションを変更するにはchmodコマンドを用います。コマンドの構文は


chmod <オプション> <モード> <ファイル名またはディレクトリ名>

となり、権限はモードで指定します。ファイルのオーナーにのみ読み書きの権限を与え、グループと他ユーザーには読み書きの権限を与えたくない場合は、以下のように設定します。


chmod 600 ${HOME}/hogehoge.txt

それではlsコマンドで確認してみましょう。


ls -l ${HOME}/hogehoge.txt

以下のように、ファイルのオーナーにのみ読み(r)書き(w)の権限が付与されており、グループと他ユーザーには一切の権限が与えられていないことがわかります。


-rw------- 1 nullpopopo nullpopopo 31230 Feb 14 18:55 /home/nullpopopo/hogehoge.txt

再度、グループと他ユーザーに読み込みの権限を付与します。


chmod 644 ${HOME}/hogehoge.txt

もう一度lsコマンドで確認しましょう。


ls -l ${HOME}/hogehoge.txt

以下のように出力されているはずです。


-rw-r--r-- 1 nullpopopo nullpopopo 31230 Feb 14 18:55 /home/nullpopopo/hogehoge.txt

chmodコマンドによるパーミッションの変更は数字のほかにもアルファベットで指定することが可能です。解説の前に、実例を示します。まずはユーザー、グループ、他ユーザー全員から読み書き実行すべての権限を剥奪します。


chmod ugo-rwx ${HOME}/hogehoge.txt

どのようなパーミッションになったか、lsコマンドで確認しましょう。


ls -l ${HOME}/hogehoge.txt

lsコマンドの出力結果は以下の通りです。


---------- 1 nullpopopo nullpopopo 31230 Feb 14 18:55 /home/nullpopopo/hogehoge.txt

これは、chmod 000 ${HOME}/hogehoge.txt を実行したのと同じです。(u)ser、(g)roup、(o)therから(r)ead、(w)rite、e(x)ecuteの権限を引いた、と理解するとよいでしょう。反対に、権限を付与する場合は「-」を「+」にして実行します。まずはユーザーに読み書きの権限を付与します。


chmod u+rw ${HOME}/hogehoge.txt

lsコマンドの出力結果は以下の通りです。


-rw------- 1 nullpopopo nullpopopo 31230 Feb 14 18:55 /home/nullpopopo/hogehoge.txt

ここで「ユーザーに読み書きの権限を、グループには読み込みのみの権限を与えるが他ユーザーには一切の権限を与えない」というパーミッションにしたい場合は、「u+rw」「g+r」「o-rwx」のモード指定をカンマで繋いであげます。


chmod u+rw,g+r,o-rwx ${HOME}/hogehoge.txt

lsコマンドの出力結果は以下の通りです。


-rw-r----- 1 nullpopopo nullpopopo 31230 Feb 14 18:55 /home/nullpopopo/hogehoge.txt

モードをアルファベットで指定する方法は、あるディレクトリ以下をリカーシブ(再帰的)に変更する「-R」オプションと組み合わせると便利です。この手法については、次回のオーナー変更コマンド「chown」とあわせて解説します。もう1点注意すべき点があるとするならば、あまり複雑なパーミッション設定をしようとするとカンマ区切りが多くなってしまうので、それならモードを数字で指定したほうが直感的という考え方もあります。
CTC教育サービスではLinuxをはじめ多数の研修コースが用意されています。ご自身の興味や業務の必要性にあったコースを受講してみてはいかがでしょうか。
https://www.school.ctc-g.co.jp/category/

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes