Wiresharkというパケットキャプチャのソフトがある。一般ユーザだとキャプチャーするインターフェースを選択する際にエラーがでてキャプチャーできないため、これまではsudoやgksuコマンドを使ってスーパーユーザー(root権限)で実行していた。
先日Ubuntuを10.10から11.04にupgradeしたところ、スーパーユーザーでWiresharkを起動すると、以下のエラーが出るようになった。
Lua: Error during loading:
[string "/usr/share/wireshark/init.lua"]:45: dofile has been disabled
メッセージにある”init.lua”の45行目を見てみると、以下のようになっており、スーパーユーザーで起動するとエラーがでるようになっている。たぶんupgradeにより変更になったのだろう。
40 -- disable potentialy harmful lua functions when running superuser
41 if running_superuser then
42 local disabled_lib = {}
43 setmetatable(disabled_lib,{ __index = function() error("this package has been disabled") end } );
44
45 dofile = function() error("dofile has been disabled") end
Wiresharkはキャプチャ時に”/usr/bin/dumpcap”というコマンドを使っているので、dumpcapに対して以下の
ケーバビリティを許可すればよいらしい。
- CAP_NET_ADMIN
- 各種のネットワーク関連の操作を実行する。
- CAP_NET_RAW
- RAW ソケットと PACKET ソケットを使用する。
具体的には、以下のように実行すればよいことがわかった。
$ sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
これで、エラーもでなくなった。
最終更新:2012年01月14日 23:57