以非root用户身份运行python-iptables(iptc

6l7fqoea  于 2022-12-17  发布在  Python
关注(0)|答案(1)|浏览(229)

我正在尝试以非root用户身份运行python-iptables。
我的脚本是test.py:

import iptc
import os

uid = os.getuid()
print("Real user ID of the current process:", uid)

table = iptc.Table(iptc.Table.FILTER)
print("Table is:".format(table))

我试过:
1.将CAP_NET_ADMIN功能赋予/usr/bin/python2.7(结果为:$ getcap /usr/bin/python2.7 /usr/bin/python2.7 = cap_net_admin+eip),并按照中所述执行/usr/bin/python2.7 ./test.py:无根的PythonScapy嗅探
1.使用环境功能进行编译和运行,定义如下:https://gist.github.com/tomix86/32394a43be70c337cbf1e0c0a56cbd8d并执行./ambient -c '12' /usr/bin/python2.7 ./test.py
1.我还没有测试python-prctl,但我很快就计划如所述:无法为普通用户获取CAP_CHOWN和CAP_DAC_OVERRIDE
这些日志包括:

('Real user ID of the current process:', 1000)
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    table = iptc.Table(iptc.Table.FILTER)
  File "/usr/lib64/python2.7/site-packages/iptc/ip4tc.py", line 1566, in __new__
    obj._init(name, autocommit)
  File "/usr/lib64/python2.7/site-packages/iptc/ip4tc.py", line 1582, in _init
    self.refresh()
  File "/usr/lib64/python2.7/site-packages/iptc/ip4tc.py", line 1619, in refresh
    self.strerror()))
iptc.ip4tc.IPTCError: can't initialize filter: Permission denied (you must be root)

我的内核是:

$ uname -r
4.4.224-1.el7.elrepo.x86_64

我的python版本是:

Python 2.7.5

我的python-iptables版本是:

python-iptables            0.12.0

我可以以非root用户身份成功运行“iptables -L”,但无法以非root用户身份成功运行iptc python命令。
是否有其他方法可以给予我的python脚本功能,或者它与iptc代码有关?
它失败的原因是因为它需要额外的功能吗?

vwkv1x7d

vwkv1x7d1#

用sudo运行python或者在超级用户身份下运行这个python。因为iptables需要(sudo)超级用户身份。
例如:sudo python test.py

相关问题