我有一个特定进程的 PID 正在监听我的 OS X 上的一些端口,我需要知道这个进程监听了哪些端口。我该怎么做?
我知道我可以lsof用来知道哪个进程正在监听某个端口,但我需要执行一个逆操作。
谢谢你。
UPD
OS X 使用 BSD utils,所以我有 BSDnetstat而不是 Linux netstat。Linuxnetstat有-p显示 PID 的选项,BSDnetstat使用-p指定端口并且没有显示 PID 的选项。
我刚刚在我的 VPS 上安装了 Fedora 22 并试图做一些小事——在每次 ssh 登录时通过 pam_exec 运行我的告密者脚本。但是我遇到了意想不到的困难:pam_exec 失败,退出代码为 13。
我在 /etc/pam.d/sshd 的末尾添加了习惯行:
session optional pam_exec.so seteuid /usr/local/bin/loginformer.py
Run Code Online (Sandbox Code Playgroud)
当然 loginformer.py 有执行标志:
$ ls -l /usr/local/bin/loginformer.py
-rwxr-xr-x. 1 root root 4254 Jun 8 09:35 /usr/local/bin/loginformer.py
Run Code Online (Sandbox Code Playgroud)
但这里是痛苦的摘录journalctl -lb SYSLOG_FACILITY=10:
Jun 08 11:58:49 fedora22 sshd[671]: pam_exec(sshd:session): execve(/usr/local/bin/loginformer.py,...) failed: Permission denied
Jun 08 11:58:49 fedora22 sshd[663]: pam_exec(sshd:session): /usr/local/bin/loginformer.py failed: exit code 13
Run Code Online (Sandbox Code Playgroud)
我不确定发生了什么,因为它始终适用于我的 ArchLinux。我认为这可能是一些 SELinux 限制,但我不确定。
我做错了什么?
更新
好吧,我尝试深入了解 SELinux 并明白我应该更改脚本的 SELinux 上下文。
现在它的 SELinux 上下文看起来是这样的:
$ ls -Z /usr/local/bin/loginformer.py …Run Code Online (Sandbox Code Playgroud)