はてなあたまさんのブログです。

WEB開発勉強中でーす

Server-Side Includes, SSI(サーバーサイドインクルード)

サーバーサイドインクルードとは

webページ内で、他のファイルの内容を読み込んで
投入すること。
コード管理を楽にできる。
用途:全てのページに共通的に入る内容または
全体的なコードの最適化のため使用する。

server.executeとよく比べられる機能。

形式:
相対経路の場合はfile属性を使う。
..は上位経路、
.は自分を意味。
ex) < !--#include file ="../dev/test.php"-->
絶対敬老の場合はHOME directoryを基準にて
サブファルダーの全ての経路を並べる。
ex) < !--#include file ="dev/test.php"-->

――――――――――― HTTP

あるリソースがSSIを含めていることに設定されているとサーバーはそのリソースのコンテンツを
クライアントに送信する前に処理する。
サーバーはコンテンツが組み込んでいる変数とスクリプトになれる
特別なパターンがあるか(主にHTMLに含まれている。)検査を受けられる。
その「特別なパターン」は変数値か実行できるスクリプト
OUTPUT値に置換される。

-> これは動的コンテンツを作りやすい方法らしい!

1-3.Linuxのセキュリティー/グループ

1-3.Linuxのセキュリティー

   グループ。

   Linuxでグループとは「ファイル共有」と言えます!


Linuxが新しいファイルを作る時には

ファイル権限をuid, gidで与えました。

例えば、test.txtというファイルがあるとしましょう!

一般ユーザーアカウントである「Aさん」が、test.txtにアクセルするためには

①ファイルを変更するか

②defaultグループを第3者も含めることができるようにするべきでした。

めっちゃくちゃ複雑で面倒ですね。

それでよくつかわれているのが「SUIDとSGID」というコマンドです。

このコマンドを使うことにして実行時、実行権限が作成者のものになり

ファイルが実行されるので、ものすごく楽になります!!!!


① SUID= set user id

-> ユーザーがファイルを直接実行する時、そのファイルは作成者(=所有者ですね)の

名前に実行するようにさせてくれるものです。

SUIDがonの状態では、どのアカウントでファイルを実行させても

ファイルは作成者(=所有者ですね)の権限で実行されます。

・・なぜですか?と聞かれると権限問題にあって

シェルスクリプトかファイルかプログラムなどなど・・の作成者(=所有者)ではなければ

データベースに繋げれないとかの権限設定がありますので

そのような「面倒さ」を解消するために

このような遠回しなやり方を使っているようです。


② SGID= set group id

こっちもSUIDのように。

SGIDがonの状態では、どのアカウントでファイルを実行させても

ファイルは作成者のグループ(=所有者ですね)の権限で実行されます!

*このオプションを活性化させると共有directoryが所有しているように

作れます。

ex) mkdirとtouchみたいなdirectoryがSGIDがonになっているとしましょ!!!

そのdirectoryに入ると所有者のグループ名が例え・・・「sy」ですね???

ですが! 現在、ログインしているユーザーのグループは「hatena」だとしましょ!

そうすると、今ログインしているユーザがどのようなこと(コマンドとか?)をしても

そのフォルダ―の所有者のグループに実行されます。

因みに、SGIDがonに設定されているフォルダ―の「サブフォルダ」まで

全部設定されますので、注意が必要です!!!


3.stick bit

プロセスが終わっても、ファイルがメモリーの中に残るようにするFLAGです。

あまり使われてないようです。

1-2.Linuxのセキュリティー/権限(umaskについて)

**1-2.Linuxのセキュリティー

   権限(umaskについて)


umaskとはコマンドの1つでdefaultの権限が設定されているところです。

default値は「0022」で、

Linuxコマンドプロンプトに「umask」を打つと

STDOUT としてdefault値が表示されます。


 0022とは

0:sticky bitで0の場合は何も設定されてません。

1は設定されている。

4は SUIDでset user idですが、この値が設定されます。

0: octal mode → defaultファイル権限決定

2: octal mode → defaultファイル権限決定

2: octal mode → defaultファイル権限決定

*ファイル‘の権限を計算する時には

ファイル権限:666 フォルダ―権限:777

ex) 0022 (2桁目からdefault umask設定)

touch sds -> 666 - 022 ,

octal modeでdefaultファイル権限 : 644 , rw-r--r--

0026 ->666-026 640 rw-r-----

0026->777-026 751 rwxr-x--x

 *ファイル権限

(1) octal mode

-> read/write/exeモード

ex)

     r--  4

     -w- 2

     --x  1

     rwx 7

     rw-  6

     r--  100        ->   2^2 x 1 + 2^1 x 0 + 2^0 x 0 =  4

     rwx -> 111 -> 7

     r-x  101   ->   5 

(2)symbolic mode

->3つで分けて分析してみます。

まず、例文のコマンドをもとに説明していきます。

ex)

コマンド : cdmod o+r newfile.txt


まず、symbolicモードの1番目のコマンドの説明から

させていただきます。

ここでsymbolicモードコマンドというと 「o+r」の部分ですね!!

o (others): 誰のためのファイルモードなのか。

-> 一応、 ファイルモードの種類は4つがあります。

 ****u(user)

 ****g(group)

 ****o(others=外部ユーザー)

 ****a(all)

ここで  a(all)と o(others)の違いは・・・

まず、o(others)からいきましょう!

 chmod o+x (2番目がモードパラメータ) test.txt

 ->test.txtに対して実行権限が追加されると意味です。

Octalモードだったら rw-rw-rw- => rw-rw-rwx 感じですね!

次は a(all) です。

chmod (ここは略したオプションを追加可能) a+x (2番目がモードパラメータ) test.txt

☆ 略したオプション : -R(recursive、複数の場合使用)などがあります!☆

Octalモードだったら rw-rw-rw- => rwx-rwx-rwx 感じですね!

つまり、作成者とグループのユーザーを含む全てのユーザーか

もしくは外部ユーザーのみが該当するかの問題です。


ここからは2番目のモードパラメータの説明です。

symbolic modeはファイルの権限をどうするか・・を表すモードです。

例え、2番目のモードパラメータが

”+”だったら権限を与えることで

”-”だったら与えた権限を解除するという意味になります。

”=”だったらファイル権限を設定することです!


最後に3番目のモードパラメータの説明です!

o+r の「r」の部分ですね。

r : どのようなpermissionに関することか❓

Octalモードと一緒で

read, w(write), x(execute)で選択することが出来ます。

他の例のコマンドとしては・・・!

ex)

cdmod u-x newfile.txt

Octalモードで解析してみると

-rwxrw-r-- -> -rw-rw-r--  になります。

作成者の実行権限を解除すると意味ですね。

1.Linuxのセキュリティー

1.Linuxのセキュリティー

:sparkles:

Linuxはセキュリティーのため、ユーザーアカウントの権限レベルで分けている。

つまり、Linuxの全てのものはユーザーアカウントの権限レベルによって変わるといることです。

まず、Linuxのユーザーアカウントを生成する時与えてもらえるuser IDがあります。

user IDは略してUIDだと呼ばれ、全ての文字が数字になります。

普通のuser IDのようにユニークな特性を持っています。

Linuxにログインする時には「 LOGIN NAME 」を使います。

LOGIN NAME はアルファベットや数字を使うことが出来ます。

2.Linuxのユーザーアカウント管理

Linuxはユーザーアカウントを管理する時、 特別なファイル・ユーティリティーを使います。

*etcにはシステム設定ファイルが集まっています。*

(1) /etc/passwd

(2)/etc/shadow


まず、

(1) /etc/passwd から。

→基本的にtxtファイルで修正可能です。

VIMで書き直すことが出来ますが、それは結構よくない行為らしいです。

何故かというとetc/passwdに依存しているプログラムが多いためです。

(システムやルートアカウントを含め、色々なプログラムから依存されているため 間違えてエラーになった場合には・・・

OSを再インストールしないといけない状況と出くわしてしまう可能性が高いです。)

ですので、 /etc/passwdはuseraddみたいなコマンドを使い修正するべき・・・かもです。

つまり,何も考えず,ついVIMで修正すると文字どおりに大惨事 が起ることになるということです。

ex)useraddの使い方。

他のshellに変更することの例

useradd -D(default) -s(shell) /bin/tsch (path)   ー>tshellに変更したい場合 userddd -D (パラメータなく打つと、変更したオプションを確認可能)

*/etc/passwdの中身とは* →passwdには全ての各ユーザーに関する情報が書いてあります。

(1)LOGIN NAME

(2)パスワード(xだけ書いています) *パスワードはここで管理してません。*

(3)UID

(4)GID(GROUP ID)

(5)ユーザーアカウントについて説明。

(6)各ユーザーアカウントのHOME DIRECTORY。

(各ユーザーアカウントは異なるHOME DIRECTORYをもらいます。)

*TIP?? HOME DIRECTORYに移動する方法。*

1) CD 2) CD 3) CD $HOME ($を使うのはLinuxの変数です。)

(7)default shellに関する情報。

→各ユーザーアカウントがdefaultに使うshellのフルパスが入ってます。

→もし、bash shellだったら、(/bin/bash)になります。

*/binフォルダ―にはユーティリティープログラムさん達のところです。*

→→bashとはLinuxコマンドをもらうやつです。 それを知るためにはOS SYSTEM構造も知る必要があります。

*hardware -> kernel -> software (kernelはsoftwareです。hardwareを制御する)

kenelの役割→hardwareを制御することです。

→ユーザーとhardwareを連結してくれるやつ。

呼び方は色々あり、shell(=bash)、bash shell 、born again shellなどなどありますね。


(2)/etc/shadow

→パスワードを管理していることろ。 セキュリティー上、ルートアカウントのみアクセス可能です。




その他のもの色々。

*root user account →Linuxシステム管理者。 →必ずUIDは「0」です。

*system account →ユーザーアカウントに属していますが、実際のユーザーが使わず

OSをうまく作動できるようにするユーティリティー

→root user accountが実行させるのではなくコンピューターの

アカウントシステムが実行させます。

理由としては

OSを1つのユーザーが全部実行させるのはセキュリティーに悪いです。

そのため、system accountやuser accountを分け、実行しています。

もちろんのことですが

system accountもaccount事に与えられた権限、リソース、アクセス権限・・が

全部異なります。

Ex) ApacheApacheのみ近づくことが出来る。

system accountはUIDが500未満に構成されています。

500からは一般ユーザーアカウント!

Linuxのバージョンにより501からユーザーアカウントになっている

ものもあります。