2016-07-03 38 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