如何查看linux进程权限
如何查看linux进程权限详细介绍
在 Linux 系统中,查看进程权限可以通过多种工具和方法,从进程的用户身份、资源访问权限到能力(Capabilities)等方面进行分析。以下是具体步骤和常用命令:
一、查看进程的基本用户和组权限
1.
通过 ps 命令查看进程所属用户
bash
进程名或PIDaux 进程名或PID
- 关键列:
UID/USER:进程的实际用户 ID(运行进程的用户)。PID:进程 ID。PPID:父进程 ID(可追溯启动来源)。
示例:
bash
sshd
表示 sshd 进程以 root 用户运行。
2.
通过 /proc/<PID>/status 查看详细用户信息
每个进程在 /proc 目录下有专属文件夹,其中 status 文件包含进程的用户和组信息:
bash
/proc/PID/status
- 关键字段:
Uid:实际用户 ID(Real UID)、有效用户 ID(Effective UID)、保存的设置用户 ID(Saved UID)。Gid:实际组 ID(Real GID)、有效组 ID(Effective GID)、保存的设置组 ID(Saved GID)。
示例:
bash
/proc/987/status Uid
二、查看进程的文件和资源访问权限
1.
通过 lsof 查看进程打开的文件及权限
lsof 可列出进程打开的所有文件、目录、网络连接等,并显示访问权限:
bash
PID
- 关键列:
FD:文件描述符(如cwd表示当前工作目录,txt表示可执行文件,mem表示内存映射文件)。TYPE:文件类型(如REG普通文件,DIR目录,IPv4网络连接)。MODE:访问权限(如r读,w写,u读写,0r只读打开等)。NAME:文件路径或网络地址。
示例:
bash
2.
通过 /proc/<PID>/fd 查看文件描述符
该目录下的文件是进程打开文件的符号链接,可直接查看路径:
bash
/proc/PID/fd
- 直接访问链接可查看文件内容(如
cat /proc/<PID>/fd/3)。
三、查看进程的能力(Capabilities)
Linux 的 能力(Capabilities) 机制允许进程拥有超越普通用户的特权(如绑定端口 < 1024),可通过以下方式查看:
1.
通过 getcap 查看二进制文件的能力(针对启动文件)
bash
getcap 程序名
2.
通过 /proc/<PID>/status 查看进程运行时的能力
bash
/proc/PID/status
- 关键字段:
CapEff:有效能力(Effective Capabilities,进程当前使用的能力)。CapPrm:允许的能力(Permitted Capabilities,进程可使用的能力集合)。
四、查看进程的资源限制(Limits)
进程的资源限制(如打开文件数、内存大小等)可通过以下命令查看:
bash
/proc/PID/limits
五、通过 systemd 查看服务进程权限(若使用 systemd)
如果进程是通过 systemd 启动的服务(如 .service 文件),可查看其配置中的权限设置:
bash
systemctl status 服务名systemctl 服务名
总结:常用命令速查表
| 需求 | 命令 | ||
|---|---|---|---|
| 查看进程所属用户 | `ps -ef | grep <进程名>或ps aux |
grep <进程名>` |
| 查看详细用户 / 组信息 | `cat /proc/<PID>/status | grep -E 'Uid | Gid'` |
| 查看打开的文件及权限 | lsof -p <PID> |
||
| 查看进程能力 | `cat /proc/<PID>/status | grep -i 'cap'或getcap $(which < 程序名>)` |
|
| 查看资源限制 | cat /proc/<PID>/limits |
||
| 查看 systemd 服务权限 | systemctl cat <服务名> |
通过以上方法,可全面了解进程的用户身份、文件访问权限、系统能力及资源限制,从而排查权限相关问题(如进程无法访问文件、绑定端口失败等)。