影の日記

時事、it、音楽、Linux、Fedora、CentOS

CentOS8 LAMP パート2

f:id:akakage7:20190404193518p:plain

httpdサーバーが起動できるようになったら、ユーザーページ(ユーザーアカント)でのホームページ作りを行っていきましょう。PCでの操作はWindowsにおいてもユーザー単位でおこなうことが基本ですね。よほどのことがないかぎりAdministratorでログインすることはないと思います。Linuxに置いてもユーザーアカウントによる操作を基本にしていきましょう。rootでの操作は、サーバーや基本設定の環境を整る時に利用することに限定して普段のネットアクセス、ホームページ作成、プログラミング開発等は、ユーザーアカウントで行うようにした方がいいかなと思ってます。

下記操作はrootアカウントでログインして行った方がスムーズかもしれません。なので慎重に行いましょう。編集エディターは、geditを使用してます。

httpd.conf + userdir.conf】

/etc/httpd/confにありますapachehttpd)の設定ファイルを編集しますので編集前にhttpd.bkupのように事前に元ファイルをバックアップしておきましょう。addHandler cgi-script .cgiのコメントを外します(#の記号を取り除くことを言います)。これはperlcgiプログラムを実行できるようにするためです。

f:id:akakage7:20191017213521p:plain

/etc/httpd/conf.dにあるuserdir.confではデフォルト(default初期設定のことです)でUserDir disabledが有効になっています(apacheがユーザーディレクトリーにアクセス出来ない設定)。なので#を付けて無効にします。UserSir public_htmlの#を外してapacheがアクセスできるようにします。public_htmlでssiが使えるようにoptionsを追加します。cgiが実行できるようにExecCGIを追加します。

httpd.confの変更が終了したら、設定を反映するようhttpdを再起動します。端末で操作します。

systemctl restart httpd

f:id:akakage7:20191017213605p:plain

【semanage】

ユーザーページでのホームページ設定の前にapacheのドキュメントルートの状態を把握しましょう。/var/wwwディレクトリーで「ls -lZ」コマンドを入力します。lsコマンドのオプション「Z(半角大文字)」は、selinuxのファイルラベルを表示するコマンドです。cgi-binディレクトリーは、「httpd_sys_script_exec_t」になってます。cgi実行ファイルは、このラベルでないとselinuxでは許可されません。また、ホームページを設置するディレクトリーであるhtmlディレクトリーのラベルは、「httpd_sys_content_t」になってます。

f:id:akakage7:20191018231412p:plain

下記の操作は端末で行います。rootアカウント又は一般アカウントの場合は、端末でsu -を入力しrootユーザーに切替えてください。suの後にハイフンでrootのカレント・ディレクトリーに移動します。

ホームページ及びphpを配置するためにSelinux(コンテキスト context)のラベルを永続的に変更できる設定にします。apacheSelinuxに阻まれるのを防ぐためです。ローカル環境でのホームページ作りやプログラミングが実行できるようにするために必要な処置かと思います。

semanage fcontext -a -t httpd_sys_content_t "/home/[^/]*/public_html(/.*)?"

perlCGIプログラムを配置して実行できるようにします。

semanage fcontext -a -t httpd_sys_script_exec_t "/home/[^/]*/public_html/cgi-bin(/.*)?"

Selinux Management (poclicycoreutils-gui)】

semanageで上記のコマンドを実施後、Selinuxに反映されているか確認します。Selinux Managementを起動して「ファイルのラベル付け」で「カスタム」をクリックします。semanageで行ったラベルの変更が反映されています。Selinux Managementは、rootアカウントでログインしないと起動できません。

f:id:akakage7:20191018230653p:plain

f:id:akakage7:20191017213630p:plain

f:id:akakage7:20191017213649p:plain

Selinux Managementでラベルを確認したら、論理値(Boolean ブーリアン)の編集をします。論理値をクリックします。apacheの動作に許認可を与えます。該当する所にチェックを入れます。

httpd_execmem PHP利用時

httpd_builtin_scripting PHP利用時

httpd_can_network_connect データベース利用時

httpd_can_network_connect_db データベース利用時

端末で行う場合の例
setsebool -P httpd_builtin_scripting on

f:id:akakage7:20191021165056p:plain

httpd_can_sendmail メール利用時

httpd_enable_cgi CGI利用時

httpd_enable_homedirs public_html利用時

httpd_ssi_exec SSI利用時

f:id:akakage7:20191021165117p:plain

【public_html】

ユーザーアカウントでの端末操作になりますが、suを使ってスーパーユーザーに切替しながら設定していきますので、慎重に進めていきましょう。これは仮にakakageと言うユーザーアカウントを作成し、進めます。lsコマンドは、ファイルやディレクトリーの状態を表示します。オプションで「-lZ」を付けて表示すると、ファイル・ディレクトリーのパーミンションやSelinuxのラベルを表示できます。

f:id:akakage7:20191018231138p:plain

ユーザーアカウントでのディレクトリーの状況が把握できましたら、apacheが読み込めるようにpublic_htmlのディレクトリーを作成します。「mkdir ディレクトリー名」でpublic_htmlのディレクトリーを作成します。

f:id:akakage7:20191018231201p:plain

「ls -lZ」コマンドで表示するとSelinuxのラベルがhttpd_user_content_tになってます。通常のhtmlファイルであれば表示できると思いますが、本格的なhtmlを編集していくとSelinuxから拒否される場合があるかもしれません。なので、apacheのドキュメントルートと同じSelinuxのラベルに変更します。ディレクトリーの永続的なSelinuxのラベル変更はsemanage fcontextで設定してあります。そこで個別にSelinuxのラベル変更を行います。

f:id:akakage7:20191018231252p:plain

ここはスーパーユーザーに変更して行います。public_htmlディレクトリーのSelinuxのラベル変更をchconコマンドで行います。最後の「-R」は、public_htmlのディレクトリー全体に反映させるオプションです。

chcon -t httpd_sys_content_t public_html -R

f:id:akakage7:20191018231303p:plain

public_htmlディレクトリーのパーミンションを変更します。rootで変更しましたが、ユーザーアカウントで変更できます。

chmod 755 public_html -R

f:id:akakage7:20191018231319p:plain

①スーパーユーザー(root)から「exit」してユーザーアカウント(akakage)に戻ります。

②public_htmlディレクトリーに移動します。

③mkdirでディレクトリー(image)を作成して「ls -lZ」コマンドで確認します。

④touchコマンドでindex.htmlファイル(空ファイル)を作成し「ls -lZ」コマンドで確認します。

Selinuxのラベルが「httpd_sys_content_t」に反映されているのを確認します。

f:id:akakage7:20191018231343p:plain

ユーザーアカウントディレクトリーの一つ上のディレクトリーに移動して「cd ../」ユーザーアカウントであるakakageのパーミンションを表示します。そしてapacheがユーザーディレクトリーにアクセスできるようchmodコマンドでパーミンションを変更します。

chmod 755 akakage

f:id:akakage7:20191018231235p:plain

f:id:akakage7:20191021165154p:plain

f:id:akakage7:20191021165216p:plain

☆☆☆☆☆まとめ☆☆☆☆☆

 【ユーザー(akakage)での作業】

public_htmlディレクトリーを作成する

mkdir public_html

public_htmlのパーミンションを変更する

chmod 755 public_html

ユーザーディレクトリー(akakage)のパーミンションを変更する

chmod 755 akakage

Apacheでは、suexecが効いているためCGIファイルのパーミションを変更する

chmod 700 akakage.cgi

【rootでの作業】

apacheの設定ファイルhttpd.confの編集

apacheの再起動 systemctl restart httpd

Selinuxのラベル変更

semanage fcontext -a -t httpd_sys_content_t "/home/[^/]*/public_html(/.*)?"

chcon -t httpd_sys_content_t public_html -R

Selinux Management (poclicycoreutils-gui)でブール値(ブーリアン)の設定

☆☆☆☆☆まとめ☆☆☆☆☆

以上ローカルでLAMP環境の簡単報告です。CentOS8はまだ、リリースされたばかりでFedoraに比べて個人的に必要なアプリが揃っていないと思ってます。今後のEpel8でアプリが充実していけば、強力なOSに発展していくのかなと希望してます。

Carpenters - Ticket To Ride

www.ishimada.com