GNU Linux特殊権限-setuid、setgid、stick bit

2210 ワード

/*********************************************************************
 * Author  : Samson
 * Date    : 01/06/2015
 * Test platform:
 *              3.13.0-24-generic
 *              GNU bash, 4.3.11(1)-release 
 * *******************************************************************/

ファイル権限のメカニズムはLinuxシステムの大きな特色であり、Linuxを初心者にとって読み取り可能(r)、書き込み可能(w)、実行可能(x)という基本的な権限である.1つのファイルの権限は10ビットあり、3つのグループに分けて表されます.最初のビットは、ファイルのタイプを表すグループです.
-:一般ファイルdを表す:ディレクトリファイルlを表す:リンクファイルbを表す:ブロックデバイスcを表す:文字デバイスpを表す:パイプsを表す:ソケットを表すがLinuxには3つの比較的特殊な権限があり、それぞれ:setuid,setgid,stick bitが1つの実行可能なファイルである場合、実行時、一般的にこのファイルはそのファイルを呼び出すユーザーが持つ権限しか持たない.setuid、setgidは、このような設定を変更することができる.setuid:実行段階においてファイルの所有者の権限を持つように設定.典型的なファイルは/usr/bin/passwdです.一般ユーザがファイルを実行する場合、実行中にroot権限を取得することができ、ユーザのパスワードを変更することができる.setgid:この権限はディレクトリにのみ有効です.ディレクトリがこのビットに設定後、ユーザがこのディレクトリの下で作成したファイルは、そのディレクトリが属するグループと同じグループを有する.sticky bit:このビットは削除防止ビットと理解できる.1つのファイルがあるユーザによって削除できるかどうかは、主にそのファイルが属するグループがそのユーザに対して書き込み権限を持っているかどうかにかかっている.書き込み権限がない場合は、このディレクトリの下のすべてのファイルを削除することはできません.また、新しいファイルを追加することはできません.ユーザがファイルを追加することができるが、同時にファイルを削除できないことを望む場合、ファイルに対してsticky bitビットを使用することができる.このビットを設定と、ユーザがディレクトリに書き込み権限を持っていても、そのファイルを削除することはできない.これらのフラグを操作する方法について説明します.これらのフラグを操作するのは、ファイル権限を操作するコマンドと同じです.chmodです.操作には2つの方法があり、1)chmod u+s temp--tempファイルにsetuidフラグを付ける.chmod g+s tempdir--tempdirディレクトリにsetgidフラグを付けるchmod o+t temp--tempファイルにstickyフラグを付ける2)は8進法を採用する.一般文書には666,777,644などの3組の8進数でフラグを置く.これらの特殊なフラグを設定と、このセットの数字に8進数のセットが追加される.例えば4666,2777等である.この8進数のセットの3桁の意味は、abc a-setuidビット、このビットが1の場合はsetuid 4 xxx b-setgidビットの設定、このビットが1の場合はsetgid 2 xxx c-stickyビットの設定、このビットが1の場合はsticky 1 xxxの設定が完了したことを示すls-lで見ることができる.これらのフラグがあると、元の実行フラグの位置に表示する.例えばrwsrw-r--setuidフラグrwxrwsrw-setgidフラグrwxrw-rwtはstickyフラグがファイルにどのように特殊な権限を設定するかを示します:chmod u+s xxx#setuid権限chmod g+s xxx#setgid権限chmod o+t xxx#設定stick bit権限、ディレクトリchmod 4775 xxx#設定setuid権限chmod 2775 xxx#設定setgid権限chmod 1775 xxx#設定stick bit権限、ディレクトリ
では、元の実行フラグxはどこへ行ったのでしょうか.システムは、本来そのビットにxがある場合、これらの特殊なフラグを小文字(s,s,t)として表示するように規定する.それ以外の場合は、大文字(S,S,T)として表示されます.
Ref:
http://en.wikipedia.org/wiki/Setuid
http://en.wikipedia.org/wiki/Sticky_bit