私は通常のユーザーからdhclientを実行するためにsetcapを使用して、やや残念な状況に直面しました。私が作業している環境のためにsudoersに追加することはオプションではありません。
私の試み:
sudo setcap 'CAP_NET_BIND_SERVICE,CAP_NET_RAW=+ep' /sbin/dhclient
その後、getcapを介して機能が実際に正しく設定されていることを確認しました。ただし、実行すると許可されていないジョブが発生します。次に、straceで実行してsocket(PF_NETLINK, SOCK_RAW, 0) = 4
いくつかの異なるシステムコールを表示し、PF_PACKETから読み取られたすべての内容はsocket(PF_PACKET, SOCK_RAW, 768) = -1 EPERM (Operation not permitted)
cap_net_rawだけが必要であることを示します。
Linux 3.16.0-77-generic #99~14.04.1-Ubuntu SMP Tue Jun 28 19:17:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux