借助 setuid 解决 Mac OS X 下普通用户启动 htop 不显示进程完整路径问题

htop 是一个常用的查看进程和系统资源使用的工具(类似 top),在 Mac 下可以通过 homebrew 安装 htop-osx(但是安装的这个版本是很多年前的0.8版本的 fork)。

但是 Mac 下的 htop 有个小问题,普通用户执行的时候不显示进程路径:

QQ20151017-0@2x

以 root 执行的时候显示则是正常的(Linux 下的 htop 并没有这个问题)

可以使用 setuid 解决这个问题:

简单说明一下两条命令的含义,第一条是将文件属主变成 root,第二句是增加 setuid 权限位,setuid 是 Unix 文件的隐藏权限位的一项,setuid 开启的时候任何用户执行时都将以文件拥有者的身份进行执行,sudo 就是使用了 setuid 的这个特性,setuid 是特殊权限位的第一位也就是对应二进制的4,4555即-r-sr-xr-x,这样普通用户执行 htop 的时候就会以 root 身份执行,可以从 ps 等命令观察到,更多关于特殊权限位的信息参见 鸟哥


本来我是想编译一个 github 上的新版本看看的,然而遇到了两个问题,一是 brew 里并没有可以安装的 libncursesw5-dev 包以至于需要启用 –disable-unicode 参数(感觉会少些功能),二是即是不管 libncursesw ,编译也会出错:QQ20151017-1@2x

感觉并不像依赖出了什么问题,在 Debian 7 下测试是一切正常的,(所以说我不喜欢编译安装东西······)


UPDATE 2015.11.2

github 上提了个 issue,现在这个编译错误已经修复

 

3条评论


    1. 所以我不喜欢 Gentoo ·····而且 portage 还算是比较方便了

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注