小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

LinuxのACLであるパーミッションについて

Windowsでは、ACLと云うファイルやフォルダ(ディレクトリ)のアクセスコントロールがあります。
Linuxでは、ファイルやディレクトリのアクセスコントロールを『パーミッション』と総称されているみたいです。


パーミッションは、まず、オーナー・グループ・アザーの3者がいて、各々、読み込み・書き込み・実行の3つを許可します。


たとえば、『ls -l』コマンドを実行すると以下のようになります。

-rwxr-xr-x  1 koike mkpasswd     268 Apr 12 15:24 test.exe
  • オーナーはkoikeで、-rwxr-xr-xの2カラム〜4カラムまでの『rwx』が対応します。
  • グループはmkpasswdで、-rwxr-xr-xの5カラム〜7カラムまでの『r-x』が対応します。
  • アザーは、オーナーとグループとroot以外のすべてのユーザで、-rwxr-xr-xの8カラム〜10カラムまでの『r-x』が対応します。
  • 『rwx』の『r』は読み込み権有りで、『w』は書き込み権有りで、『x』は実行権有りです。ちなみに『-』は権限無しです。


このように、オーナー・グループ・アザー別の読み込み権・書き込み権・実行権の設定ができるのがLinuxパーミッションなのです。


つまり、2カラム目から10カラム目までの9カラムを3カラムづつ、オーナー・グループ・アザーに振り分けられ、
その各々の3カラムは、各々読み込み権・書き込み権・実行権の順になり、許可指定がなければ『-』になり、あれば各々『r』『w』『x』になるのです。


そして、3カラムづづを16進数で表し、たとえば『rwxr-xr-x』は、『755』で表します。
たとえば、アザーには実行させてくない場合は、以下のコマンドでアザーの実行権を落とします。

$ chmod 754 test.exe
$ ls -l
-rwxr-xr--  1 koike mkpasswd     268 Apr 12 15:24 test.exe

と、ここまでは、ちょっとLinuxUNIXをやったことのある人には、結構常識なのです。


実は、パーミッションには、上記のカラム以外に3カラムのおまけがあるのです。
それは、以下のsetuidとsetgidとスティッキービットの3カラムです。

  • setuidは、アザーでもあたかもオーナーとして実行できる許可指定です。
  • setgidは、アザーでもあたかもグループとして実行できる許可指定です。
  • スティッキービットは、アザーでも書き込めるけど,オーナーだけしか削除ができない許可指定です。


setuidやsetgidは、例えばroot権限で実行するコマンドを、setuidやsetgidを付加して、アザーでも実行ができるようにします。


スティッキービットは、アザーでも書き込みができるけど、削除やパーミッション変更ができないようにします。


しかしこの3カラムは、『ls -l』で見るように『-rwxr-xr-x』では、表示する場所がありません。
なので、setuidやsetgidは各々オーナーとグループの『x』のところが『s』なり、スティッキービットはアザーの『x』のところが『t』となります。

-rwsr-xr-x  1 koike mkpasswd     268 Apr 12 15:24 test.exe
-rwxr-sr-x  1 koike mkpasswd     268 Apr 12 15:24 test2.exe
drwxrwxrwt  2 koike mkpasswd       0 Apr 12 15:24 tmp


尚、setuidやsetgidは、セキュリティの問題上、スクリプトに付加することはできません。
また、スティッキービットはディレクトリに付加します。


ちなみに、lsコマンド表示の1カラムはファイルの種別を表します。