我正在使用一个程序通过子进程模块发出一个tc命令,但是tc正在输出RTNETLINK answers: Operation not permitted
为了解决这个问题,我给了python带有epi
标志的CAP_NET_ADMIN
功能,但是我仍然不能发出tc命令。你知道吗
$ getcap /usr/bin/python3.5
$ /usr/bin/python3.5 test-capabilities.py
CompletedProcess(args=['tc', 'qdisc', 'add', 'dev', 'eth0', 'root', 'pfifo'], returncode=2, stdout=b'', stderr=b'RTNETLINK answers: Operation not permitted\n')
$ sudo setcap cap_net_admin+eip /usr/bin/python3.5
$ /usr/bin/python3.5 test-capabilities.py
CompletedProcess(args=['tc', 'qdisc', 'add', 'dev', 'eth0', 'root', 'pfifo'], returncode=2, stdout=b'', stderr=b'RTNETLINK answers: Operation not permitted\n')
$ sudo /usr/bin/python3.5 test-capabilities.py
CompletedProcess(args=['tc', 'qdisc', 'add', 'dev', 'eth0', 'root', 'pfifo'], returncode=2, stdout=b'', stderr=b'RTNETLINK answers: File exists\n')
如果CAP_NET_ADMIN
允许进程修改网络接口,并且setcap
中给出的+i
标志指示子进程应该继承给可执行文件的功能,那么为什么我仍然得到操作不允许的错误呢。我希望得到文件exists错误,就像我在上面通过sudo运行python时所做的那样。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐