このsetuid
概念はますます役に立たなくなっており、まだ使用されている少数の場合に適切な権限と認証モデルに置き換えられているようです。例:
ping
使用能力に切り替わり、mount
交換中ですudisks
、- SSHの代わりに使用でき
su
ますsudo
。
私はこの単語を入力したシステムでビット設定を持つ18個のバイナリを見つけましたsuid
。どちらも代替不可能なようではありません。su
sg
pkexec
mount
それでは、suid
まだこのポジションが必要な仕事は何ですか?
ベストアンサー1
Pingがsetuidルートからsetcapに移動されましたnet_admin
。プログラムが予期しない動作を示している場合は、setuid ルートから setcap に移行することでリスクを軽減できます。ただし、基本的なメカニズムは同じです。つまり、プロセスはインスタンス化された実行可能ファイルのメタデータに基づいて追加の権限を受け取ります。この概念は古いものではありませんが、絶えず改善されています。
これは新しい現象ではありません。プログラムに付与される権限の数を減らすことは長期的な傾向です。 20年前には、root以外のユーザーのためのsetuid実行可能ファイルは一般的でしたが(オペレーティングシステムの権限モデルを変更せずに)、これらの実行可能ファイルは事実上消えました。最近では、追加のファイル権限へのアクセスを必要とする実行可能ファイルはsetuidではなくsetgidなので、そのファイルが破損しても、攻撃者はプログラムが保持しているよりも多くの権限を取得できません。 setuid実行可能ファイルのリスクは、漏洩した場合、攻撃者が実行可能ファイルの内容をトロイの木馬に置き換えて、プログラムを実行しているすべての人のアカウントを破損する可能性があることです。
また、プログラムがsetuidまたはsetgidを設定することを許可するのではなく、sudoを介してユーザーに実行する権限を与える長期的な傾向もあります。 Sudoの利点は、よりきめ細かな制御(プログラムを実行できる人やプログラムに渡すことができるパラメータ)、ネットワーク展開がより簡単であることです(インストール時に権限に注意する必要なしに構成/etc/sudoers
ファイルのみを配布するだけです)。 。 、プログラムのアップグレードと配布)とロギング。
マウントには、root以外のユーザーがパーティションをマウントできるようにするには、setuid rootが必要です。これは、実際にはpmount
setuid rootを必要とする他のプログラムやudiskなどのサービスベースのメカニズムに置き換えることができます。
実際にはsetuidルートでなければならないプログラムは2つだけです:su
とsudo
。 (および他の同様のプログラム。)すべての権限を付与できる必要があるため、システムで最高の権限を持っている必要があります。
SSHはsuとsudoを完全に置き換えるわけではありません。 SSH は特権上昇メカニズムとして使用できますが、すべての状況に適しているわけではありません。 SSHセッションのすべての内容はトンネルを通過します。これは常に望ましいとは限りません。 SSHチャネルを介してファイルディスクリプタや共有メモリを転送できないため、パフォーマンスが低下します(SSHはローカルで通信している場合でもデータを暗号化します)。また、SSHデーモンがクラッシュしたり、誤って設定されている場合は、システムを修復したいシステム管理者にとってSSHは役に立ちません。
¹またはsetcapですが、rootになるものとその権限で間接的に実行できること(setuid rootバイナリを使用してパーティションをマウントすること、または経由で何かをマウントするなど)sys_admin
の間には実質的な違いはありません。sys_admin
/etc
/bin