capability については認識は合っていると思います。
root 権限を全権与えるのではなく、権限を細かく分割し、必要な権限だけ与える仕組み。
例えば、一般ユーザーが実行しようとするコマンドが root 権限を必要とする場合、従来は setuid で全権与えていたけれど、capability を利用して一部の権限(例えば、ネットワーク関連の権限)だけ与えることで対応できます。
(従来)
# ls -l /bin/ping
-rwsr-xr-x. 1 root root 38200 Jul 24 02:55 /bin/ping //setuid が付いている
(capability を利用すると)
# ls -l /bin/ping
-rwxr-xr-x. 1 root root 44896 Nov 21 04:12 /bin/ping //setuid は付いていない
# getcap /bin/ping
/bin/ping = cap_net_admin,cap_net_raw+p
AppArmor はまったく知らないのですが、SELinux と同じレイヤのセキュリティ機構で、Mandatory Access Control (MAC: 強制アクセス制御)の実装の 1つです。
MAC に対して、従来のアクセス制御は Discretionary Access Control (DAC: 任意アクセス制御)と呼ばれるもので、プロセスの実行ユーザー、ファイル/ディレクトリのオーナー、パーミッションでアクセスを許可/拒否するものです。
DAC では、あるプロセスが起動すると、その実行ユーザー権限で許可されている操作はすべて行なうことができますが、MAC ではこの権限を絞り込み、必要な操作のみ許可します。
例えば、/usr/sbin/httpd は /etc/httpd/conf/httpd.conf は読むことができるけれど、/etc/passwd は読めない、などが思いつきます。
root 権限だけでなく、一般ユーザー権限も対象です。
「プロセス→ファイル」だけでなく、「プロセス→ネットワーク」なども対象となるかもしれません。
この辺の権限の分け方や仕組みは実装(AppArmor, SELinux, TOMOYO Linux, LIDS など)によって異なると思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/21 02:04
2016/01/21 09:34