=================== Linux capabilities =================== root権限を細かく分割して,特定の権限のみを与えるためのもの. root権限が必要な操作を含む場合,本来ならば当然root権限で実行する必要があるが, その実行は本来必要でない操作への権限(root権限なのでね)も持ってしまっているため, もし脆弱性があった場合非常に危険であるが, これを使うとその問題が避けられる 例 - CAP_DAC_OVERRIDE ファイルの read, write, execute パーミッションのチェックをバイパスする。 - CAP_DAC_READ_SEARCH ファイルの read とディレクトリの read と execute のパーミッションチェックをバイパスする。 - CAP_KILL シグナルを送るときの権限チェックをバイパスする。 - CAP_NET_BIND_SERVICE 特権ポートにソケットをバインドできる。 - CAP_SYS_TIME システムの時刻を設定できる。. File capabilities =================== 実行ファイルに capabilities を持たせる方法. 注意点として, この方法だと起動したユーザによらずプロセスがcapabilitiesを持つことになる. CAP_NET_BIND_SERVICEを与える例 :: $ sudo setcap 'cap_net_bind_service=+ep' [path to file] $ getcap [path to file] [path to file] = cap_net_bind_service+ep Ambient capabilities ====================== init(=systemd として良いのか?)から起動するようなプロセス(デーモン)に対して capabilitiesを持たせる方法. 参照 =========== http://matope.hatenablog.com/entry/2014/09/28/031155 https://nojima.hatenablog.com/entry/2016/12/03/000000 https://linuxjm.osdn.jp/html/LDP_man-pages/man7/capabilities.7.html https://source.android.com/devices/tech/config/ambient