2009-02-26 54 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

相关问题