質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

1974閲覧

linux apparmorとcapabilityの違いが判りません

mint.cherry

総合スコア284

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2016/01/19 04:59

編集2016/01/19 09:42

ある程度は調べてました。
私の解釈
capability:root権限を最小化したグループ。非特権ユーザーに特権の一部を与えたいときにroot特権最小化したcapabilityを使用する。

apparmor:管理者(root?)に対しプロセスに制限をかける。

違いが判りません。同じようなものなのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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/20 03:44

編集2016/01/20 03:47
TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mint.cherry

2016/01/21 02:04

taichiさんいつも回答ありがとうございます。 capabilityでの解釈はあっていたようですね。 ちなみに従来のやり方(setuid)ではすべての権限を与えてしまうことから、もしそのプロセスに脆弱性が見られたときに最小限の被害に抑えようとして考えられたのがcapabilityと考えていいのでしょうか? apparmorの解釈については少し違っているようでした。 機能としてはこのような考えでいいのでしょうか? ・すべての権限を与えるDAC=setuid ・root権限の一部(必要なものだけ)を与えるMAC=capability apparmor設定で各プロセスごとにcapabilityを設定できるところがありました。 (ubuntu15.10 /etc/apparmor.d/) libvirtなどlxcなどcapabilityの設定ができました。
TaichiYanagiya

2016/01/21 09:34

> 最小限の被害に抑えようと おそらくそうだと思います。 AppArmor についてはよく知らないのですが、DAC で許可されているファイルアクセス、ネットワークアクセスなどを制限する方向に動作するのが MAC だと思います。 なので、「capability を与える」のではなく、もともと setuid または capability が許可されているコマンドについて、「さらに capability を制限する」ということだと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問