【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

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

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

パーミッションとは

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、スティッキービットについてまとめたいと思います。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
5,662
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

中川咲季奈

2016年に新卒として入社しました。最近サーバの基礎知識を学ぶのが楽しいです。