どんな事でもお気軽にお問い合わせください
0120-803-656
24時間受付いたします

【初心者向け】パーミッションの簡単解説


システムソリューション部の中川です。
先日、パーミッションに関する問い合わせがあったので
今回の記事では自分なりに情報を調べてまとめてみました。

パーミッションとは

Linux上のディレクトリやファイルには、その所有権が決められています。
ディレクトリやファイルを操作するための権限がパーミッションです。
アクセス権とも言いますが、本記事ではパーミッションで統一していきます。
パーミッションは次のように、権限・対象ユーザー・表記が決められています。

権限 権限の文字表記 権限の数字表記 ユーザー
読み込み権限 r 4 所有ユーザー
書き込み権限 w 2 所有グループに所属するユーザー
実行権限 x 1 その他のユーザー
権限なし - 0

パーミッション確認

実際にパーミッションを確認していきます。
対象のディレクトリ・ファイルに対し、ls -lを実行すれば確認できます。
例として、/home/lpic/index.htmlファイルを確認してみます。

ls -l /home/lpic/index.html
total 8
-rw------ 1 lpic linux   16 Jan 14 01:16 index.html
drwx------ 2 lpic linux 4096 Jan 14 01:17 test

権限の意味を解説していきます。

ls -l /home/lpic/index.html
-rw------ 1 lpic linux 16 Jan 14 01:16 /home/lpic/index.html

lsコマンドの実行結果のうち、一番左の項目がパーミッションにあたります。
標準では全10文字で、1文字目を除いた部分でユーザーごとの権限が表示されます。

所有ユーザー(lpic)の権限=rw-
⇒catコマンドなどでファイルを表示したり、viコマンドで内容を編集することができます。

所有グループ(linux)の権限=---
⇒ファイル表示や編集、アクセスはできません。

その他のユーザーの権限=---
⇒ファイル表示や編集、アクセスはできません。

次に/home/lpic/testディレクトリの場合を見ていきます。
ディレクトリ単体を調べるには、lsコマンドに-ldオプションを付けます。

ls -ld /home/lpic/test
drwx------ 2 lpic linux 4096 Jan 14 01:17 test

対象がディレクトリのため、パーミッションの先頭文字が「d」と表示されます。
testディレクトリのパーミッションの意味は次のとおりです。

所有ユーザー(lpic)の権限=rwx
⇒ディレクトリ内のファイル一覧表示、ファイル作成、ディレクトリ内ファイルにアクセスができます。

所有グループ(linux)の権限=---
⇒ディレクトリ内のファイル一覧表示、ファイル作成・削除、ファイルにアクセスはできません。

その他のユーザーの権限=---
⇒ディレクトリ内のファイル一覧表示、ファイル作成・削除、ファイルにアクセスはできません。

所有ユーザーで操作する

実際に権限があるユーザーで操作してみます。

読み込み権限があるlpicユーザーで、indexファイルをcatします。

[lpic@loclhost ~ ]$ cat /home/lpic/index.html
Thu Jan 18 11:08:57 JST 2018 

読み込み権限があるlpicユーザーで、testディレクトリを一覧表示します。

[lpic@loclhost ~ ]$ ls -ld /home/lpic/test/
drwx------ 2 lpic linux 4096 Jan 14 01:17 /home/lpic/test/ 

読み込み権限があるlpicユーザーで、testディレクトリに移動します。

[lpic@loclhost ~ ]$ cd /home/lpic/test/
[lpic@loclhost test ]$ 

⇒いずれの実行結果も成功しました!

非所有ユーザーで操作する

次に権限がないユーザーで実行してみるとどうなるかを見ていきます。
読み込み権限がないlpic2ユーザーで、indexファイルをcatします。

[lpic2@loclhost ~ ]$ cat /home/lpic/index.html
cat: /home/lpic/index.html: Permission denied

書き込み権限がないlpic2ユーザーで、testディレクトリを一覧表示します。

[lpic2@loclhost ~ ]$ ls -ld /home/lpic/test/
ls: cannot access /home/lpic/test/: Permission denied

実行権限がないlpic2ユーザーで、testディレクトリに移動します。

[lpic2@loclhost ~ ]$ cd /home/lpic/test/
bash: cd: /home/lpic/test/: Permission denied

⇒権限がないので、「Permission denied(アクセス拒否)」と返ってきます。

所有ユーザーと所有グループ以外で操作するには

lpic2ユーザーがを操作できるようにするための方法には、いくつか方法があります。
・対象のディレクトリ・ファイルの所有者を変更する。
・所有グループのパーミッションを変更した上で、所有グループにlpic2ユーザーを追加する。
・対象のディレクトリ・ファイルのパーミッションを変更する。等

こういった作業する場合は、対象環境のパーミッションを変更して対応することが多いです。

実際に実行してみます。
まず、index.htmlファイルを操作できるユーザーでchmodコマンドを実行します。
注意することは、対象ファイルの上位ディレクトリ(今回は/home/lpic)にも
その他ユーザーに権限を付与しないと操作できません。

[lpic@loclhost ~ ]$ chmod 707 /home/lpic/
[lpic@loclhost ~ ]$ chmod 706 /home/lpic/index.html 

chmodコマンドは、パーミッションを変更できるコマンドです。
-Rオプションを付けると、対象ディレクトリ配下のファイルも一緒に変更を反映できますが
実行権限まで付与しないので、今回はその都度変更しました。

変更後のパーミッションを見てみます。

[lpic@loclhost ~ ]$ ls -l /home/lpic/
total 8
-rw----rw- 1 lpic linux   29 Jan 18 11:08 index.html
drw----rw- 2 lpic linux 4096 Jan 14 01:17 test 

lpic2ユーザーとしてindex.htmlをcatします。

[lpic2@loclhost ~ ]$ cat /home/lpic/index.html
Thu Jan 18 11:08:57 JST 2018 

今回はファイルの内容が表示できました。
正しく権限変更が出来たということになります。

最後に

権限を正しく付与しないと、考えられる影響の例として
ブラウザ上で公開するファイルに一般(その他)ユーザーに読み込み権限がない場合には
アクセスしても「Forbidden(403エラー)」を返す、なんてことも考えられます。

とはいえ、設定ファイル等の重要なファイルを
誰でも編集・実行できるような設定は、セキュリティ面から考慮しても良くありません。

サーバを運用する上で、ファイルごとに適した権限を設定することで
より安全・最適なサイト作りに近づきます。
お客様が目指すサイト、もしくは安定したサーバ稼働を提供する手段の一つとして
パーミッションに関しても理解を深めていきたいです。

次の記事では、今回の記事に関連した内容で
セットUIDとセットGID、スティッキービットについてまとめたいと思います。


お問い合わせ 採用情報 エンジニアブログ
ISO27001認証
Contact PageTop
株式会社ビヨンド

© beyond Co., Ltd. All rights reserved.