Permissions

使用 sudo 拒絕權限

  • March 26, 2014

我的 .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

這個問題與相對路徑有關。my-command我正在從我的主目錄執行別名。我的 python 腳本正在寫入相對於工作目錄的文件。當我直接執行命令(沒有別名)時,我是從 python 腳本的位置執行它,所以那是工作目錄,所以腳本有權寫入文件。

因此,當我從正確的目錄執行 alias 命令時,一切都按預期工作。

如果您希望該別名起作用,請確保使用者和組具有執行該文件的正確權限 - 您還需要確保同一使用者正在嘗試執行別名,例如您不想成為 foo使用者和您的 .bashrc 用於 bar 使用者。一旦我設置了對我有用的正確權限,我就遇到了這個問題

引用自:https://serverfault.com/questions/584663