怎么查看进程是不是有root privilege ?

可以用ps 命令看。

ps elf | grep root

$ ps -elf | grep root
4 S root         1     0  0  80   0 -  6046 -      08:54 ?        00:00:02 /sbin/init
1 S root         2     0  0  80   0 -     0 -      08:54 ?        00:00:00 [kthreadd]
1 S root         3     2  0  80   0 -     0 -      08:54 ?        00:00:00 [ksoftirqd/0]

列出的是有root权限的进程。

也可以查看 proc 信息

$ cat /proc/2036/status | grep -E "(^uid|^gid)" -i
Uid:	0	0	0	0
Gid:	0	0	0	0

Uid 这一行前两个0分别为real user id和effective user id.

当一个user执行一个进程的时候,这个进程的权限就是执行它的 user或者group的权限,称之为 effective user id.

但如果可执行文件的SUID设置了,那进程的effective user id就等于这个可执行文件 owner的 UID.

进程的real user id就是发起这个进程的user的 ID。

举个例子:

$ ls -l 300
-rwxrwxr-x 1 root root 8464 Jul 16 00:44 300

文件 300 onwer是 root,但是当前登录到系统的 user id 是100. 这时执行  300:

$ ./300 &
[1] 29885

p$ cat /proc/29885/status | grep -E -i "(^uid)" 
Uid:	1000	1000	1000	1000

可以看到 effective usr id 是当前的 user id,而不是文件的 owner.

设置SUID:

$ sudo chmod u+s 300
$ ls -l 300
-rwsrwxr-x 1 root root 8464 Jul 16 00:44 300

$ cat /proc/$(pidof 300)/status | grep -E -i "(^uid)" 
Uid:	1000	0	0	0

可以看到此时real effective user id变成了 root.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值