使用 sudo 的权限被拒绝

使用 sudo 的权限被拒绝

我的 .bashrc 文件中有一个别名,它运行一个可执行 python 文件,如下所示:

alias my-command="sudo -u apache /path/to/file.py"

当我运行时,my-command它会提示我输入 sudo 密码,然后运行 ​​.py 文件。

但是,python 脚本会写入只有 apache 才有权限写入的日志文件。当我运行my-command它时Permission denied,它会提示尝试写入该文件。

当我sudo -u apache /path/to/file.py直接运行时,脚本运行良好。

我在这里做错了什么?将我的别名更改为:

my-command="/path/to/file.py"

然后运行:

sudo -u apache my-command

答案1

问题与相对路径有关。我my-command从我的主目录运行别名。我的 Python 脚本正在写入相对于工作目录的文件。当我直接运行命令(没有别名)时,我从 Python 脚本的位置运行它,所以那是工作目录,因此脚本有权写入文件。

因此,当我从正确的目录运行别名命令时,一切都按预期工作。

答案2

如果您希望该别名有效,请确保用户和组具有运行该文件的正确权限 - 您还需要确保同一个用户正在尝试运行该别名,例如,您不想成为 foo 用户,而您的 .bashrc 是针对 bar 用户的。我遇到过这个问题,一旦我设置了正确的权限,它就会正常工作

相关内容