CプログラムがIPをroot以外のユーザーに設定できるようにする

CプログラムがIPをroot以外のユーザーに設定できるようにする

root 以外のユーザーが実行中です。このCプログラム - 以下に関連付けられていますIPアドレス、ネットマスクを設定し、インターフェイスを設定する必要があり、次を返します。SIOCSIFFLAGS: Permission denied

rootとしてログインして、root以外のユーザーがIPを設定するこのプログラムを実行できるようにする方法はありますか?

答え1

少なくともLinuxでは、次のものを使用できます。能力プログラムがルート権限を持っているかのように限られた一連の作業を実行できるようにします。

関連機能は次のとおりです。

CAP_NET_ADMIN
    Perform various network-related operations:
    * interface configuration;
    * administration of IP firewall, masquerading, and accounting;
    [...]

次のコマンドを使用して機能を設定できますsetcap

setcap cap_net_admin+ep /path/to/my_ifconfig

もちろん、別のオプションは setuid root( chmod u+s) プログラムを使うことです。これにより、次のことができます。何もないルートはそれを行うことができます。これは明らかに危険ですが、Linuxだけでなく他のシステムでも機能するはずです。

netadminsグループのメンバーだけがファイルを実行できるようにするなど、一般的なファイル権限ビットを使用して、追加の権限でファイルを実行できるユーザーを制限できます。

chown root.netadmins /path/to/my_ifconfig
chmod 0710 /path/to/my_ifconfig

関連情報