Linuxでは、root以外のユーザーが実行しているプロセスに特権を高める機能を割り当てることができます。
rootユーザーが実行するプロセスには利用可能なすべての機能がありますが、場合によってはこれらのプロセスから一部の機能を手動または自動で削除できますか?
ベストアンサー1
はい、能力のアイデアは、ユーザーID自体が特別な能力を付与しないことです。 UID 0プロセスは不要な機能を排除することもできます。 UID 0(たとえば、/etc/shadow
または)/etc/ssh/sshd_config
が所有するファイルへのアクセスは維持され続けるため、別のUIDに切り替えるのが賢明かもしれません。
capsh
必要に応じて機能を削除できることを使用してテストできます。最後の部分はシェルスクリプトとして実行され、chown
ファイル所有者変更機能(CAP_CHOWN
)が削除されたために失敗することがわかります。
# capsh --drop=cap_chown -- -c 'id; touch foo; chown nobody foo'
uid=0(root) gid=0(root) groups=0(root)
chown: changing ownership of 'foo': Operation not permitted
これFunction(7) マニュアルページシステムには、機能に拘束されることなく永久に削除される特定の状況をうまく処理できない可能性があるsetuidバイナリに対するいくつかの保護機能があると述べました。 「機能的に愚かなバイナリの安全チェック」を参照してください。
もちろん、同じマニュアルページには、関数に関する他の有用な情報も含まれています。