2016-07-03 36 views
5

我正在安装Unity。 Unity安装程序说它必须以root身份运行,这是因为Chromium Embedded Framework必须以root身份运行。为什么必须以root身份运行Chromium嵌入式框架?为什么必须以root身份运行Chromium Embedded Framework? (Unity安装程序)

Unity安装程序指向我here,但该页面未提及根权限。

这里是控制台输出,为后人:

[email protected]:unity(0)\ ./unity-editor-installer-5.4.0b23+20160628.sh 
This installer must be run as root. 

以及相关的代码片段从安装程序:

# chrome-sandbox requires this: https://code.google.com/p/chromium/wiki/LinuxSUIDSandbox 
chown root "${EXTRACT_SUBDIR}/Editor/chrome-sandbox" 
chmod 4755 "${EXTRACT_SUBDIR}/Editor/chrome-sandbox" 

编辑7月15日:发现this thread。有人可以帮助确认chrome-sandbox不再需要root用户和SUID吗?

我按these instructions建设,但是当我运行cros_sdk时仍然要求输入root密码。

回答

0

Chromium Embedded Framework不需要以root身份运行。 Root权限只需要在chrome-sandbox可执行文件上设置permissions/chmod。 Linux上的安装程序通常需要root权限,这并不奇怪。

+0

大多数应用程序可以作为普通用户编译和运行。 Unity安装程序只是将Unity提取到一个子目录中。为什么chrome-sandbox需要由root拥有并且设置了SUID? – jcarpenter2

2

为了确保每个人都使用与Chromium一起构建的相同的确切环境和工具,所有建筑都在chroot内完成。这是的chroot自己的小世界:它包含了自己的编译器,它的自己的工具(它自己的bash副本,它自己的sudo的复印件)等

它采用chrootprctl和其他几个系统调用可以返回EPERM error如果进程没有足够的权限。

EPERM error

因此安装程序要运行是以root身份运行的沙箱上设置SUID bash脚本。他们希望以root身份登录,因为它给予文件所有者的permissions以及所有者UID(用户ID)和GID(组ID)。通常在Unix/Linux中,当程序运行时,它继承了登录用户的访问权限。

Chromium OS Developer Guide

+1

感谢您的信息!获取root访问权限是为了限制权限,但我仍然不明白。任何时候都不应该要求提升特权。命令'fakechroot'可以用来代替'chroot'。函数'prctl'可以做几件事情,只有一些需要root权限。 – jcarpenter2

+0

我很抱歉,赏金没有被授予,这个答案是很好的研究。 – jcarpenter2