我正在我的计算机上测试名为packetgen
的库。问题不在于图书馆本身。我试图将一个数据包注入网络中只是为了进行简单的测试。但是,当我注入它时,它会引发错误:
Traceback (most recent call last):
3: from packet.rb:5:in `<main>'
2: from /home/COM-COM/.rvm/gems/ruby-2.5.1/gems/packetgen-2.8.6/lib /packetgen/packet.rb:240:in `to_w'
1: from /home/COM-COM/.rvm/gems/ruby-2.5.1/gems/packetgen-2.8.6/lib/ packetgen/header/eth.rb:95:in `to_w'
/home/COM_COM/.rvm/gems/ruby-2.5.1/gems/packetgen-2.8.6/lib/packetgen /header/eth.rb:95:in `open_live': wlp2s0: You don't have permission to capture on that device (socket: Operation not permitted) (RuntimeError)
我需要超级用户特权才能捕获或注入网络上的数据包,但是如果我运行sudo 'ruby packet.rb'
会引发错误,并且会出现其他错误,因为我的计算机版本的ruby上没有安装packetgen
。我运行的红宝石版本与计算机的RVM(Ruby Version Mananger)的预装版本不同。有没有人可以解决此问题或无需sudo来运行此程序的方法?谢谢!
答案 0 :(得分:1)
RVM具有sudo集成,请参见here。
默认情况下,当使用sudo时,当前的shell环境不是 传递给它创建的会话,但RVM已经允许 使用rvmsudo可以更轻松地访问sudo调用。但是,sudo的默认值 非常严格,您可能最终会收到密码提示 设置为使用sudo NOPASSWD指令的命令。