次のページ 前のページ 目次へ

13. PPP とルート権限

PPP ではカーネルのルーティングテーブルの変更といったネットワークデバイ スを設定する必要があるため、ルート権限が必要になります。

ルート以外のユーザが PPP 接続を設定する場合、pppd プログラムはルートに setuid しておく必要があります。

-r-sr-xr-x   1 root     root        95225 Jul 11 00:27 /usr/sbin/pppd

/usr/sbin/pppd がこのような設定になっていない場合、ルートになって

chmod u+s /usr/sbin/pppd
とします。

こうしておけば、ルート以外の一般ユーザが pppd のバイナリを実行しても、 pppd はルート権限で動くようにになり、一般ユーザでもネットワークインター フェイスやカーネルのルーティングテーブルを設定するために必要な権限で pppd を実行することが可能になります。

ルートに setuid されたプログラムは潜在的なセキュリティホールになりがち なので、ルートに setuid する場合は特に注意してください。pppd を含めた ルートに setuid することが必須のプログラムはセキュリティには十分注意を 払って書かれているので、pppd を使う場合、setuid の問題はまず大丈夫でしょ う(しかし保証はありません)

誰でも PPP 接続を開始できるようにするか否かといったシステムの使い方に 合わせて、ppp-on/off スクリプトの読み出しや実行の許可属性を設定してく ださい。あなた一人しかその PC を使わない場合、a+rx でいいでしょう。

しかし、PPP 接続を開始できる人を制限したい場合(例えば、あなたの子供も あなたの Linux マシンにアカウントを持っているけれど、彼らにはインター ネットへ接続させたくない場合)、PPP 接続用のグループを作って(/etc/group を修正して)

このように設定しても、一般ユーザはソフトウェア的には PPP 接続を切れま せん。ppp-off スクリプトにはルート権限が必要です。しかしなが ら、モデムの電源は誰でも切れます!

私が家で使っているマシンでは pppd を root に setuid していません。 PPP を開始するために、私だけが知っているパスワードを使ってルー トになって実行しています。こうしておけば息子たちがインターネットに勝手 に接続することはできません。


次のページ 前のページ 目次へ