2009-02-26 51 views
0

我在bash上爲Linux上的應用程序編寫安裝腳本。從root帳戶(Linux)Bash腳本和用戶主頁

該腳本將一些文件複製到/ usr/bin和/ usr/share中,因此它需要由root用戶執行,並且在$ HOME dir中爲配置文件創建一個隱藏目錄。

這是問題:如果一個普通用戶想要安裝該程序,他需要是root用戶。但是如果他是root的話,那麼$ HOME目錄將是/ root /而不是/ home/username。

回答

10

...此外,如果UserA安裝軟件,但UserB運行它,UserB將不具有/home/UserB下的隱藏目錄。此外,/home/UserA下的隱藏目錄將由root擁有,而不是userA。

因此,您需要讓應用程序創建隱藏的目錄,而不是安裝程序。

另一種可能的選擇是不安裝在系統目錄中;一個可能的替代位置是/usr/local。但是,即使這可能需要root權限。考慮它是否可以安裝在其他地方,以及它如何定位其材料。

但是,要求安裝root權限並不是世界的盡頭 - 對於某些人來說這是一種麻煩,但並不是完全無序。但要求每個使用root權限的用戶都是亂七八糟的 - 如果每個使用它的人都需要運行安裝程序,那就太糟糕了。

最後一點(現在):如果您使用sudo,即使您獲得root權限,也不會更改$ HOME的值。但是,要求使用您的應用程序的所有人擁有sudo權限也不是好事。

+0

您可以創建一個用於運行該命令的新組,並將sudo設置爲僅允許該組僅運行該命令。 查看visudo – 2009-02-26 15:23:44

+0

因此,他可以簡單地要求用戶使用sudo進行安裝,以便它有權複製/ usr/bin中的文件,但仍具有正確的$ HOME值? – Wookai 2009-02-26 15:23:55

0

必須使用$HOME?也許你可以提示輸入用戶名,然後安裝到~$username

相關問題