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

現状でも警告メッセージを無視すれば使えるのだが、わざわざ警告するからには、一般ユーザで実行する方法があるはずだと考え、調べてみた。
以下のWebページが見つかった。
http://www005.upp.so-net.ne.jp/develop-tom/deb/wireshark-deb.html

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