来自 root 帐户的 Bash 脚本和用户主目录 (Linux)

发布于 2024-07-14 09:33:39 字数 214 浏览 7 评论 0原文

我正在 bash 中为 Linux 上的应用程序编写安装脚本。

该脚本将一些文件复制到/usr/bin和/usr/share中,因此需要由root用户执行,并且它在$HOME目录下创建一个隐藏目录用于存放配置文件。

问题是:如果普通用户想要安装该程序,他需要是 root。 但如果他是 root,$HOME 目录将是 /root/ 而不是 /home/username。

I'm writing an install script in bash for an application on Linux.

This script copies some files into /usr/bin and /usr/share, so it needs to be executed by a root user, furthermore it makes an hidden directory in the $HOME dir for configuration files.

Here is the problem: if a normal user wants to install the program, he needs to be root. But if he is root, the $HOME directory will be /root/ instead of /home/username.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

音盲 2024-07-21 09:33:39

...而且,如果 UserA 安装该软件,但 UserB 运行该软件,则 UserB 在 /home/UserB 下不会有隐藏目录。 另外,/home/UserA 下的隐藏目录将归 root 而不是 userA 所有。

因此,您需要让应用程序创建隐藏目录,而不是安装程序。

另一种可能的选择是不安装在系统目录中; 一个可能的替代位置是/usr/local。 然而,即使这样也可能需要 root 权限。 想想它是否可以安装在其他地方,以及如何找到它的材料。

然而,需要root权限来安装并不是世界末日——对某些人来说有点麻烦,但也不是完全不正常。 但要求每个使用它的人都拥有root权限是不合常理的——如果每个使用它的人都需要运行安装程序,那就糟糕了。

最后一点(目前):如果您使用 sudo,它不会更改 $HOME 的值,即使您获得 root 权限也是如此。 但是,要求使用您的应用程序的每个人都拥有 sudo 权限也不是一件好事。

...and, further, if UserA installs the software, but UserB runs it, UserB won't have the hidden directory under /home/UserB. Also, the hidden directory under /home/UserA will be owned by root, not userA.

So, you need to have the application create the hidden directory, not the installer.

Another possible option is not to install in the system directories; one possible alternative location is /usr/local. However, even that can require root privileges. Think about whether it can be installed in other places, and how it could locate its materials.

However, requiring root privileges to install is not the end of the world - a nuisance for some, but not completely out of order. But requiring everyone who uses to have root privileges is way out of order - and if everyone who uses it needs to run the installer, that is bad.

Final point (for now): if you use sudo, it does not change the value of $HOME, even as you acquire root privileges. However, requiring everyone who uses your application to have sudo privileges is not a good thing either.

忆悲凉 2024-07-21 09:33:39

必须使用$HOME吗? 也许您可以提示输入用户名并安装到 ~$username

Must you use $HOME? Maybe you could prompt for the username and install to ~$username instead?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文