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
と、ここまでは、ちょっとLinuxやUNIXをやったことのある人には、結構常識なのです。
実は、パーミッションには、上記のカラム以外に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カラムはファイルの種別を表します。