システム開発 - AWS Webサーバーのアクセス権の設定

 

前回のAWS WebサーバーへPHPとApacheのインストールでは、SSHでWebサーバーに接続し、php8.0とWebサーバーソフトのApacheをインストールしました。

今回は、Webサイトデータを保存する「/var/www」以下のディレクトリとファイルのアクセス権を変更していきます。

環境

Amazon Linux 2

Webサーバーのアクセス権の変更

Apacheが、Webサーバー内のWebサイトのルートディレクトリ(/var/www)にあるディレクトリとファイルを操作できるようにしていきます。

今後、accessログ、phpエラーログなど、各種ログファイルを書き込んだり、WordPressをインストールした場合などに必要となってきます。

手順は下記の通りです。

  • ec2-userをapacheグループに追加
  • /var/wwwディレクトリ以下のディレクトリとファイルの所有者とグループの変更
  • /var/www内のディレクトリとファイルのパーミッションの設定

ec2-userをapacheグループに追加

まずは、ec2-userユーザーが所属しているグループを確認します。

[ec2-user@ip-10-0-10-127 ~]$ groups
ec2-user adm wheel systemd-journal
[ec2-user@ip-10-0-10-127 ~]$ cat

現在所属しているグループには、「ec2-user」「adm」「wheel」「systemd-journal」の4つがあります。

次に、現在存在するグループを表示します。

[ec2-user@ip-10-0-10-127 ~]$ cat /etc/group
・・・
adm:x:4:ec2-user
・・・
wheel:x:10:ec2-user
・・・
systemd-journal:x:190:ec2-user
・・・
ec2-user:x:1000:
apache:x:48:
・・・
// 上記と同じ結果になる
[ec2-user@ip-10-0-10-127 ~]$ getent group
・・・
[ec2-user@ip-10-0-10-127 ~]$ 

catコマンドは、ファイルの中身を確認したい場合に利用されるコマンドです。

今回はetcディレクトリ内のgroupファイルを表示させ、いくつか聞き覚えのあるグループ名だけ残しました。カンマ区切りで4つ情報があります。

  1. グループ名
  2. 「x」か暗号化されたパスワード
  3. グループID(GID)
  4. サブグループとして所属しているユーザー。複数ある場合にはカンマ区切り

現在、ec2-userは、メイングループとしてec2-userにあり、サブグループとして4つのグループに所属していることがわかります。

それでは、ec2-userユーザーをapacheグループに追加します。

[ec2-user@ip-10-0-10-127 ~]$ sudo usermod -a -G apache ec2-user
[ec2-user@ip-10-0-10-127 ~]$ getent group
・・・
adm:x:4:ec2-user
・・・
wheel:x:10:ec2-user
・・・
systemd-journal:x:190:ec2-user
・・・
ec2-user:x:1000:
apache:x:48:ec2-user
・・・
[ec2-user@ip-10-0-10-127 ~]$ 

グループ一覧では、「apache:x:48:ec2-user」と表示され、ec2-userユーザーは、サブグループとしてapacheグループに所属しているように見えます。

[ec2-user@ip-10-0-10-127 ~]$ groups
ec2-user adm wheel systemd-journal
[ec2-user@ip-10-0-10-127 ~]$ 

しかし、自身の所属グループを確認したところ、表示されません。

そこで一度ログアウトして、再度アクセスし、パーミッションを更新してapache グループを含めます。

ログアウトは「exit」と入力してもいいですし、Rloginであれば「ファイル」→「接続を閉じる」でも問題ありません。

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-10-127 ~]$ groups
ec2-user adm wheel apache systemd-journal
[ec2-user@ip-10-0-10-127 ~]$ 

無事、apacheグループがが含まれました。

/var/wwwディレクトリ以下のディレクトリとファイルの所有者とグループの変更

まず、/var/wwwの現在の「所有者/グループ」を確認します。

[ec2-user@ip-10-0-10-127 ~]$ cd /var
[ec2-user@ip-10-0-10-127 var]$ ls -l
total 8
・・・
drwxr-xr-x  4 root root   33 Nov  7 14:34 www
・・・
[ec2-user@ip-10-0-10-127 var]$ 

現在の「所有者/グループ」は「root / root」となっており、rootユーザーのみが操作できる設定となっています。

そこで、/var/www ディレクトリの所有者をec2-userユーザー、グループをapacheグループに変更します。

[ec2-user@ip-10-0-10-127 var]$ sudo chown -R ec2-user:apache /var/www
[ec2-user@ip-10-0-10-127 var]$ ls -l
total 8
・・・
drwxr-xr-x  4 ec2-user apache   33 Nov  7 14:34 www
・・・
[ec2-user@ip-10-0-10-127 var]$ 

chownコマンドは、対象のディレクトリの「所有者/グループ」を変更するコマンドで、所有者を「ec2-user」、グループを「apache」に設定しました。

-Rオプションは、再帰的に全てのファイル及びフォルダに対し行うというオプションですので、現在/var/www以下の全ファイル及びフォルダの「所有者:グループ」は「ec2-user:apache」となりました。

[ec2-user@ip-10-0-10-127 var]$ cd www
[ec2-user@ip-10-0-10-127 www]$ ls -l
total 0
drwxr-xr-x 2 ec2-user apache 6 Jun 30 20:02 cgi-bin
drwxr-xr-x 2 ec2-user apache 6 Jun 30 20:02 html
[ec2-user@ip-10-0-10-127 www]$ 

wwwフォルダ内のフォルダも変更されています。

/var/www内のファイルを及びフォルダのパーミッションの設定

現在のwwwフォルダのパーミッションを確認します。

[ec2-user@ip-10-0-10-127 ~]$ cd /var
[ec2-user@ip-10-0-10-127 var]$ ls -l
total 8
・・・
drwxr-xr-x  4 ec2-user apache   33 Nov  7 14:34 www
・・・
[ec2-user@ip-10-0-10-127 var]$ 

現在の設定は「rwxr-xr-x」でいわゆる755の設定となっています。

左から、所有者:グループ:その他に対するr:閲覧(4)、w:書込(2)、x:実行(1)許可を合計した数字です。r(4)+w(2)+x(1)のすべてが行える数字は7で、r(4)+x(1)であれば5となります。

ここでは、所有者はすべて行えますが、グループとその他は、閲覧と実行しか行えません。

ここで、/var/wwwディレクトリ自身のグループの権限を全件に変え、さらに当ディレクトリ以下は、グループの権限で操作できるように変更します。

[ec2-user@ip-10-0-10-127 cgi-bin]$ sudo chmod 2775 /var/www
[ec2-user@ip-10-0-10-127 var]$ ls -l
total 8
・・・
drwxrwsr-x  4 ec2-user apache   33 Nov  7 14:34 www
・・・
[ec2-user@ip-10-0-10-127 var]$ 

chmodコマンドは、指定したディレクトリ又はファイルのパーミッションを変更するコマンドです。
指定する数字は、3桁の場合と4桁の場合があります。

この場合、4桁を使用していますが、数字の右3桁の775なので、初期設定から、グループにも書込権限が追加されたことを表します。

また、1桁目の数字は下記をあらわします。

0:特に影響なし
1:スティッキービット ・・・ 所有者以外消せないが誰でも書き込めるディレクトリにできる。rootにあるtmpディレクトリなど。ディレクトリのみに有効
2:SGID ・・・ そのファイル又はディレクトリの所属グループの権限で操作できる
3:SUID ・・・ そのファイル又はディレクトリの所有者の権限で操作できる

今回は「2」を指定しているのでapacheグループに所属するユーザー全てがapacheグループの権限で操作できるようになりました。

次に/var/www以下のディレクトリのパーミッションを2775に設定します。
下記は実行前の状況です

drwxr-xr-x 2 ec2-user apache 6 Jun 30 20:02 cgi-bin
drwxr-xr-x 2 ec2-user apache 6 Jun 30 20:02 html
[ec2-user@ip-10-0-10-127 var]$ find /var/www -type d -exec sudo chmod 2775 {} \;
[ec2-user@ip-10-0-10-127 var]$ cd www
[ec2-user@ip-10-0-10-127 www]$ ls -l
total 0
drwxrwsr-x 2 ec2-user apache 6 Jun 30 20:02 cgi-bin
drwxrwsr-x 2 ec2-user apache 6 Jun 30 20:02 html
[ec2-user@ip-10-0-10-127 www]$ 

全てのディレクトリに、グループにも書き込み権限が追加されました。また、一桁目が「2」なので、上記では確認できませんがapacheグループの所属ユーザーは、全てapacheグループの権限で操作できるようになりました。

findコマンドは、本来ファイルなどを検索するコマンドです。ここでは、/var/wwwフォルダ内で、対象をディレクトリのみ(-type d)としています。

-execオプションで、検索結果全て({})に対して、パーミッションを2775に変更するchmodコマンドを実行しました。最後の「\;」は、chmodコマンドの終わりを表す「;」(セミコロン)を半角¥マークでエスケープしています(お約束ごとです)。

同様にファイルも変更する必要がありますが、デフォルトではファイルが存在せず、今後作成されるディレクトリはパーミッションが2775、ファイルは0664で、「所有者:グループ」は「ec2-user:apache」となりますので、特に設定の必要はありませんが、念のため記載しておきます。

[ec2-user@ip-10-0-10-127 var]$ find /var/www -type f -exec sudo chmod 0664 {} \;
[ec2-user@ip-10-0-10-127 var]$ 

対象をファイルのみ(-type f)として、パーミッション0664としています。

まとめ

以上で、下記の実行により、Webサイトのデータを置く場所である/var/wwwのアクセス権の変更ができました。

  • ec2-userをapacheグループに追加
  • /var/wwwディレクトリ以下のディレクトリとファイルの所有者とグループの変更
  • /var/www内のディレクトリとファイルのパーミッションの設定

次回はWebサーバーの詳細な設定を行っていきます。

次回:AWS Webサーバーの詳細な設定

一覧:AWS サーバー立ち上げ設定まとめ

参考

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateWebServer.html

文責:フライング・ハイ・ワークス代表 松田 治人(まつだ はるひと)
会社では、Laravelを中心としたエンジニアとして働いており、これまでに50本以上のLaravelによるWebアプリケーションの構築や東京でホームページ制作をしています。
エンジニアとして弊社で働きたい方、お仕事のご相談など、お待ちしております。

WEBサイト制作のお問い合わせ、お見積り依頼、ご質問は
こちらのお問い合わせフォームよりお願いいたします

メールお問い合わせはこちら

フライング・ハイ・ワークスの紹介

フライング・ハイ・ワークスは、東京のホームページ制作・Web制作会社・システム開発会社です。東京都及びその近郊(首都圏)を中心として、SEO対策を意識したPC及びスマホのサイトをワンソース(レスポンシブ対応)で制作します。

実績

デザイナーチームは、グラフィックデザインやイラストの制作も得意としており、著作権を意識しない素材の提供が可能です。システム・コーディングチームでは、Laravelなどを使用したスクラッチからのオリジナルシステム開発を始め、WordPressのカスタマイズを得意としております。

また、SEOやランディングページ(LP)、広告向けバナーなどを他社様でやっていた作業の引継ぎでも問題ありません。制作実績は多数ございますので、お客様に合わせたご提案が可能です。

500点以上のフライング・ハイ・ワークスの制作実績ページをご覧ください!

東京のホームページ制作・Web制作のお問い合わせ、お見積り依頼、相談、質問は
こちらのお問い合わせフォームよりお願いいたします

メールお問い合わせはこちら