差分

移動先: 案内検索

ユーザ権限とアクセス制御

49 バイト除去, 2010年12月2日 (木) 06:43
/* 現在の権限管理 */
== 現在の権限管理 ==
古典的なUNIXはUIDとGIDだけで説明は済みますが、Linuxも含めBSD 4.3以降で3以降では、もっと複雑な設定ができます。は、もっと複雑な設定ができます。Linuxでは、少なくとも4つタイプのUIDと4 つのGIDのタイプを持っています。Linuxでは4つタイプのUIDと4つのGIDのタイプを持っています。
* ユーザID、グループIDの種類
* UID / GID : 今まで通りのUID / GID * RUID / RGID : 実UID / 実GID --- UIDやGIDと同じ役割 (RはReal) * EUID / EGID : 実効UID / 実効GID --- 権限があるかどうかをチェックする時に使う (EはEffective) * SUID / SGID : 保存UID / 保存GID --- 有効化・無効化を行うための保存 (SはSaved) * FSUID / FSGID : ファイルUID / ファイルGID --- Linux独自のファイルのアクセス権限のチェック
=== setuid ===
これらはプロセスが、どのような権限で動作するかを規定するものです。UNIX には実行ファイルの属性にこれらはプロセスが、どのような権限で動作するかを規定するものです。UNIXには実行ファイルの属性に(モードに)setuid bitを設定しておくと、その実行bitを設定しておくと、その実行ファイルはファイルの所有者の権限で動作します。ファイルはファイルの所有者の権限で動作します。setgid bitは実行ファイルsetgid bitは実行ファイルのグループの権限で動作します。のグループの権限で動作します。コマンドfindを使って探してみましょう。コマンドfindを使って探してみましょう。
最初の表示にある-rwsr-x-rxのsがsetuid bitの意味です。つまり、これbitの意味です。らのコマンドは所有者がrootであり、かつ、このコマンドを動かすとrootの権つまり、これらのコマンドは所有者がrootであり、かつ、限で動かすことができるという意味です。この実行時は、ruidは利用者、euidこのコマンドを動かすとrootの権限で動かすことができるという意味です。がrootとなり、root権限のファイルなどに書き込むことができるようになりまこの実行時は、ruidは利用者、euidがrootとなり、す。一般ユーザでも何でもできる権限を手に入れてしまうということで、このroot権限のファイルなどに書き込むことができるようになります。ようなプログラムに誤りがあると大きなセキュリティ上の問題になります。一般ユーザでも何でもできる権限を手に入れてしまうということで、このようなプログラムに誤りがあると大きなセキュリティ上の問題になります。
=== setgid ===
setgidは、set group id bitの意味です。そのファイルのグループIDと同じ権限で実行できます。bitの意味です。そのファイルのグループIDと同じ権限で実行できます。
$ ls -l `find /usr/bin -perm +g+s -print`
....
ruidがrootの時、つまりrootがファイルを実行した時は何でもできるので、ruidがrootの時、つまりrootがファイルを実行した時は何でもできるので、euidをプロセス内で制限なく変更できます。euidをプロセス内で制限なく変更できます。たとえばapacheは唯一1つrootでたとえばapacheは唯一1つrootでのプロセスがあり、のプロセスがあり、そこから生成し子プロセスがwwwそこから生成し子プロセスがwww-data(あるいは他の)data(あるいは他の)euidで動作します。euidで動作します。外部からのアクセスはすべてwww外部からのアクセスはすべてwww-dataのeuidで動いているdataのeuidで動いている子プロセスで動作しているので、子プロセスで動作しているので、万が一、外部からの入力によりapache誤った万が一、外部からの入力によりapache誤った動作をしても、動作をしても、その影響範囲を無制限にはしない(root権限ではない)ようにしています。その影響範囲を無制限にはしない(root権限ではない)ようにしています。
RUID/RGID、EUID/EGID、SUID/SGIDを上手に変更することによって、どのユーSGIDを上手に変更することによって、どのユーザ権限で、ザ権限で、あるいはどのグループ権限でプロセスを動かし、適切にファイルやあるいはどのグループ権限でプロセスを動かし、適切にファイルや資源にアクセスできるようになることで、資源にアクセスできるようになることで、セキュリティを保つことができるよセキュリティを保つことができるようになります。うになります。これらの値のセットにはルールがあるので、全部はかけないですが、典型的なものを書き出してみます。これらの値のセットにはルールがあるので、全部はかけないですが、典型的なものを書き出してみます。
* RUID / EUID / SUIDの設定ルール
* RUID の値を EUID にセットできる * EUID の値を RUID にセットできる * 実行時のEUIDがSUIDにコピーされていて、SUIDの値をEUIDにセットできる * rootはRUIDもEUIDも自由にセットできる 
このように実行時のユーザIDを変えることができ、また一般ユーザでも実行ファイルに権限が附加されていれば、
root権限でプロセスを動かすこともできるなどかなり複雑な権限のコントロールが可能です。
このように実行時のユーザIDを変えることができ、また一般ユーザでも実行ファ
イルに権限が附加されていれば、root権限でプロセスを動かすこともできるな
どかなり複雑な権限のコントロールが可能です。もちろん、Linuxがコントロー
ルが可能であることと、アプリケーションがきちんと矛盾なく利用できるよう
に設計できることとはまったく別のことです。アプリケーションの設計が正し
くなかったり、実装で間違えていると、セキュリティ侵害が発生することはい
うまでもありません。
もちろん、Linuxがコントロールが可能であることと、
アプリケーションがきちんと矛盾なく利用できるように設計できることとはまったく別のことです。
アプリケーションの設計が正しくなかったり、実装で間違えていると、セキュリティ侵害が発生することはいうまでもありません。
== パスワードファイル ==
匿名利用者