首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在消防监狱中列出开放的互联网连接?

如何在消防监狱中列出开放的互联网连接?
EN

Unix & Linux用户
提问于 2021-10-14 06:49:27
回答 2查看 151关注 0票数 0

我正在用火狱来沙箱火狐。当我使用lsof -i时,没有显示连接。Firejail对进程执行名称空间隔离,所以我这样做。

ps aux | grep firefox | awk ' { print $2} ' | while read p ; do nsenter -t $p lsof -i ; done

输入每个命名空间并输入lsof -i。我也尝试过nsenter -t -n lsof -i,但是什么也没有出现。但是当我把它当成根的时候,这个就会起作用了。用户难道不能列出打开的套接字连接吗?

EN

回答 2

Unix & Linux用户

发布于 2021-10-14 07:48:48

这个ps | grep | awk管道是丑陋的,因为它是古老的(这是非常古老)。

顺便说一句,grep将与它自己的pid....which相匹配,这就是为什么大多数变体使用一些技巧来排除grep的pid。通常是像ps aux | grep command | grep -v grep这样可怕的东西。其中最好的是使用一个括号表达式来表示grep的正则表达式。更好的版本意识到,将grep导入awk几乎总是毫无意义,不是必需的,甚至是不必要的,因为awk可以进行正则表达式匹配,并最终得到类似于ps aux | awk '/[c]ommand/ {print $2}'的东西)。

无论如何,不要用那些可怕的胡说八道。它本应在90年代死去,但它的僵尸却不断地被复活或重新发明。

pgreppsh (无标头)、-C (匹配cmdlist)和-o (输出格式设置)选项一起使用。这就是它们的用途。

例如:

代码语言:javascript
复制
pgrep -f firefox | xargs -I {} nsenter -n -t {} lsof -i

代码语言:javascript
复制
ps h -C firefox -o pid | xargs -I {} nsenter -n -t {} lsof -i

或者,如果没有xargs

代码语言:javascript
复制
for pid in $(pgrep -f firefox) ; do
  nsenter -n -t "$pid" lsof -i
done

这远远不是完美的,但这是一个更好的起点,你正在做的事情。

顺便说一句,pgrep可以列出名称空间中的所有PID。还有lsns,用于检查和提取有关名称空间的各种细节。甚至ps也有列出与PID关联的各种名称空间的选项。如果您想要在没有自己的these....especially二进制文件或映射到系统的lsof和/或/usr/bin/目录的名称空间中列出网络连接,那么您可能应该阅读所有lsof的手册页。

不幸的是,在未来的版本中,lsof本身似乎没有任何内置的命名空间support....maybe。

票数 0
EN

Unix & Linux用户

发布于 2021-10-16 09:12:56

事实证明,firefox似乎为运行中的firefox进程和派生的firefox进程创建了另一个沙箱。因此,如果用户在命令行中使用firefox启动防火墙,则将显示当前用户的lsns。

但是,如果在相同的命令行(针对所有firefox进程的grep命令行)中,并将nsenter输入到网络命名空间中,lsof -i将失败,因为:

nsenter: cannot open /proc/8958/ns/net: Permission denied

作为root,lsns显示每个名称空间的firefox进程和相关的pids。如果输入所有名称空间和lsof -i,就会得到某些pids的firefox输出。

当我ls /proc/ pid,其中pid uid是用户并已经生成lsof -i输出时,文件都是由root而不是用户拥有的,这就是为什么lsof -i在所有firefox进程上作为用户执行时不能工作的原因。

很难说这是否是预期的行为,因此,任何投入都将受到赞赏。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/673163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档