『標準テキスト CentOS 7 構築・運用・管理パーフェクトガイド』を一通り読んでみたがよくわからないので、ググってみたところ『いますぐ実践! Linux システム管理/Vol.183』というサイトがヒットした。
Linuxのシステムコールと密接に絡んでいるらしく、コマンドヒッターの私には少々つらい。(>_<)
両者を読み進めながら理解に励んでみる。
ケーパビリティを操作するためのコマンド
■getap
ケイパビリティの表示
■setcap
ケイパビリティの設定
それから、uname -rでカーネルのバージョンが調べられるらしい。
$ uname -r 3.10.0-514.26.2.el7.x86_64
ケーパビリティの理解とはまったく関係ないが、こういった小粒のコマンドを覚えると自分が成長した気がする。
ちなみに、Ubuntu 16.04デスクトップでこのコマンドを撃ちこんだら、
$ uname -r 4.4.0-93-generic
と出た。
さて、本題に入ろう。
理解メモ
■ざっくりとした理解
rootプロセスが持っている権限を小分けにして非rootプロセスに与え、非rootプロセスでもrootプロセスみたいな(超アバウト)ことをできるようにするための機能。
■もっとざっくりとした理解
ケーパビリティを付与したり削除したりすると、一般ユーザーとrootユーザーとでコマンドがアクセスできるファイルを違えることができる。
(例)
rootユーザーはls /rootを実行することができるが、一般ユーザーはls /rootを実行しても/rootにアクセスすることができないようにする。
プロセスに与えられる権限は、実行ユーザーIDによって決まる。
ケイパビリティは、スレッド単位で与えることが出来る。
CentOS 7には、37種類のケイパビリティがある。
■ケーパビリティセットには、プロセスに与えるものとファイルに与えるものがある。
Permitted
Inheritable
Effective
実効ユーザーがrootのプロセスは、すべてのケーパビリティを持っている。
実効ユーザーがrootでないプロセスは、ケーパビリティをひとつも持っていない。
ケーパビリティ:37ビットのビット列の各ビットのこと
ケーパビリティセット:ケーパビリティをひとまとめにしたもの。要するに32ビットのビットデータ。