Linuxパーミッションのはなし

らら
らら

はじめに

今回は、社内教育用にパーミッションの記載をしていきます。

FTPソフトfilezillaを例に記載していきます。

パーミッションとは

Linux、Unixで扱われるファイルやディレクトリのアクセス権の設定で

所有者、グループ、その他の単位でファイル、ディレクトリの書き込み、読み込み、実行の許可・不可を設定できます。

例 filezilla

permission 644

filezilla画面で①の箇所がパーミッションです。設定の画面も添付しています。

filezilla画面で②の箇所が所有者

filezilla画面で③の箇所がグループ

になります。

権限名 表記 8進数 説明
読み取り r 4 readの略。ファイルの読み取りが可能
書き込み w 2 writeの略。ファイルへの書き込みが可能
実行 x 1 executeの略。ファイルの実行が可能 プログラムやシェルスクリプトの実行

8進数を足せば4+2+1で7 という表記になり所有者 グループ その他 で数字を並べて755などと表記します。

所有者とは

FTPで例えれば、FTPの接続時、ユーザーIDがありますが、このIDと②の箇所が同じであれば

FTPで接続したとき、所有者となります。ここが異なる場合は、FTPで接続したユーザーはその他になります。

SSH等も同様です。

Linuxのルートユーザー(root)は、すべてのファイルにアクセスが可能となります。

このようにログインしたときのIDによってファイルのアクセス制限・実行権限が設定されます。

その他

所有者以外のアクセスを許可することになります。

グループとは

専用のサーバーでは、おおくは、ユーザーIDと同じものが設定されている場合があります。

パーミッションのグループとは、所有者と同じグループだった場合、許可するかしないか?の設定になります。

レンタルサーバー、pleskなどでは、グループに別のIDが割り当てされています。

レンタルサーバーでは、複数のサイトが1台のサーバーで管理され、アクセス権をこのグループで管理されているのもあります。

パーミッションのグループを許可した場合、このグループが同じもので設定されている場合、お隣さんも設定した内容でアクセスできます。サーバによって705,750の違いになります。

所有者 グループ

user1 site1

user2 site2

user3 site3

user4 site4

user5 site4

複数の仮想サイトが構築されているサーバーの場合、③の箇所が別のものになっている場合、グループのパーミッションの設定には注意が必要です。

FTPではじめてファイルをアップした場合、644が割り当てされます。(注)サーバによって異なります。

644では、

読み込み可能 所有者、グループ、その他

書き込み可能 所有者のみとなります。

FTPでは、所有者でログインすればFTPで書き込み・読み込みの両方が可能です。

所有者以外でログインした場合、書き込みはできませんので、FTPでアップロードはできません。

WEBサーバーの権限

apacheなどでCGIを介したスプリクト言語では、権限がWEBサーバーの権限となります。

所有者・グループともにapacheという表示なります。(注)サーバの設定によって異なります。

通常のユーザー権限とは、異なります。

このapacheも、apacheというユーザーIDでアクセスされるので、パーミッションのその他で設定します

perlなど実行権限の必要なスプリクトでは

755を設定することで、実行権限を与えます。(サーバー設定によって異なります。705,700,750など)

専用サーバでアカウントグループが1つの場合 755などもあります。

読み込み可能:所有者、グループ、その他

書き込み可能:所有者のみとなります。

実行:所有者、グループ、その他

permission 755

WEBサーバーに書き込み権限を与えるにはその他に書き込み可能を設定する必要があります。

これは、CGI経由でファイルをアップロードしたり、CGI経由でデータファイルの書き込み、キャッシュファイルの書き込みなどが含まれます。phpなどはCGI経由でない場合もあります。

パッケージソフトなどで自動アップデートするものに関しては、パーミッションが適切にされていない場合、アップデートできません。またそれが脆弱性にもなります。

ものによってはソフトにFTPアカウントを登録して実行するのもありますが、その箇所に脆弱性があった場合、不要なものがアップされる可能性があります。

グループに書き込み権限を与える場合には、サーバー管理者など確認が必要です。

サーバによっては実行権限も不可しないと書き込みができないサーバーもあるので管理者確認が必要です。

書き込み権限もサーバー設定によって異なり

707,700,770などあります、基本はその他、グループに書き込み設定するイメージになります。

専用サーバでアカウントグループが1つの場合 777などもあります。レンタルサーバなどでは危ないですよ。

レンタルサーバーでは、ヘルプサイトでパーミッションの説明があるのでそこで確認を行ってください。

CGIはCommon Gateway Interfaceの略でapacheなどプログラムを動作させるためのインターフェイスです

現在は、mod_perl、mod_php経由でという表記になります。

関連記事