在 shell 中拥有权限,但在脚本中没有权限(除非我使用 sudo)

在 shell 中拥有权限,但在脚本中没有权限(除非我使用 sudo)

我有一个非常基本的困惑。如何sudo运作?

我注意到,当我运行脚本时它失败了,因为它尝试在具有以下权限的目录中写入文件:

$ ls -l thedir
drwxr--r-- usr grp

但是当我运行脚本时sudo -u usr它就起作用了。

如果我能够使用 sudo 成功运行脚本,为什么脚本首先会失败?

我的意思是,如果我有足够的权限以该用户身份运行,我想我应该能够首先成功运行脚本。

答案1

仅仅因为您有能力充当另一个用户,这并不会给您当前的用户相同的权限。权限不会根据当前用户帐户充当另一个用户的能力级联到当前用户。sudosu允许您“成为”或“充当”另一个用户。换句话说,当您使用 sudo 时,您实际上暂时成为了该用户。

root即使您以sudo或其他用户身份登录计算机su,作为该用户,您将具有所有相同的限制(和权限),因为对于系统而言,您是该用户,而不是root

答案2

我认为第一件事是弄清楚脚本是否像你一样运行。

#!/bin/bash
whoami

调用它的方式与调用您正在处理的脚本(例如 cronjob)的方式相同。如果脚本以另一个用户身份运行,这可能会给您提供线索。

相关内容