我的 .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 用户的。我遇到过这个问题,一旦我设置了正确的权限,它就会正常工作