gpt4 book ai didi

linux - 如何在 bash 脚本中切换到和退出 root

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:35 24 4
gpt4 key购买 nike

所以我知道我可以跑

$ sudo script 

以根用户身份运行脚本。

在这个脚本中,我需要以 root 身份运行一些命令来删除某些目录,但我不能以 root 身份运行一些其他命令(如果以 root 身份运行,bower 命令会抛出错误)

现在我有一个工作脚本,它使用 sudo -u 来逃避 root 但它真的很恶心:

sudo rm -rf ./node_modules ./bower_components

sudo npm cache clean
sudo npm install

sudo -u user bower cache clean
sudo -u user bower install

有没有更简洁的方法来做到这一点?

根据@Etan Reisner 的评论进行编辑

如果我将脚本更改为

sudo rm -rf ./node_modules ./bower_components

sudo npm cache clean

sudo npm install

bower cache clean
bower install

然后在没有 sudo 的情况下运行脚本它失败并出现错误

bower ESUDO         Cannot be run with sudo

我不明白为什么,但在脚本中使用任何 sudo 命令似乎都以 root 身份运行 bower 命令。

最佳答案

不要使用 sudo 运行脚本。使用 sudo 运行您需要成为 root 的命令行,然后运行您希望成为另一个用户的行,而无需预先添加 sudo

更好的是,将需要 root 权限的行放入第二个“外部”脚本中,并使用非 root 用户运行的“内部”脚本中的 sudo 调用该脚本。并确保该脚本中没有不需要以根用户身份运行的内容

您甚至可能想检查您是否在“外部”或“调用”脚本的开头是根用户,并且您在“内部”或“调用”脚本的开头是根用户。如果这些条件失败,则发出错误消息并返回错误代码。

关于linux - 如何在 bash 脚本中切换到和退出 root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28750418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com