sni*_*ies 3 root osx-snow-leopard user ps macos
我正在运行 OS X 10.6.1 。当我以组工作人员的普通用户身份登录并执行
ps ux
Run Code Online (Sandbox Code Playgroud)
它列出了我的 ps ux 命令由 root 运行:
snies 181 0.0 0.3 2774328 12500 ?? S 6:00PM 0:20.96 /System/Library...
root 1673 0.0 0.0 2434788 508 s001 R+ 8:16AM 0:00.00 ps ux
snies 177 0.0 0.0 2457208 984 ?? Ss 6:00PM 0:00.52 /sbin/launchd
snies 1638 0.0 0.0 2435468 1064 s001 S 8:13AM 0:00.03 -bash
Run Code Online (Sandbox Code Playgroud)
这是正常行为吗?如果是这样,为什么?请注意,该用户不是管理员帐户,无法执行 sudo。
Chr*_*sen 10
对于 Mac OS X 来说是正常的。它曾经在几乎所有 Unix-oid 系统上都是正常的。它在没有sudo的情况下以 root 身份运行,因为ps二进制文件设置为以 root 身份运行(例如在我的 10.4 系统上):
% ls -l $(which ps)
-rwsr-xr-x 1 root wheel 31932 Mar 20 2005 /bin/ps
Run Code Online (Sandbox Code Playgroud)
(s代替user-owner一x栏意味着它是set-uid(和user-executable),所有者是root;这意味着无论谁运行它,它都会以root身份运行)
传统上(在 Mac OS X 系统上仍然如此),它必须以 root 身份运行,因为它需要的信息只能通过 root 可访问的设备(例如 /dev/kmem)或仅限 root 的系统调用获得。这是可以的,因为(除非实现中存在错误)ps程序的编写方式不会让调用者获得他们不应该获得的信息。
其他系统有其他机制可以访问ps需要的信息,因此不需要 set-uid ps二进制文件。值得注意的是,Linux 系统(和其他系统)上的/proc 虚拟文件系统可以以同样细粒度的权限发布非常细粒度的内核信息。这样的模型足以允许非特权ps获得所需的一切,而不允许访问内核信息的更敏感位。
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |