Root

如何以非 root 使用者身份執行 Root 別名?

  • March 12, 2018

我在跑步

Linux 4.4.0-116-generic Ubuntu + KDE ( x86_64 GNU/Linux )

我想執行一個名為ksession終止特定會話的別名。同時我希望只有我可以執行這個別名,沒有其他人可以執行。所以,我在目錄.bashrc下找到了文件,/root並在其中添加了一個別名ksession,然後嘗試執行source命令但沒有成功並出現以下錯誤:

amit@C0deDaedalus:~$ source /root/.bashrc
bash: /root/.bashrc: Permission denied

amit@C0deDaedalus:~$ sudo source /root/.bashrc
sudo: source: command not found
  1. 有沒有辦法讓source該文件成為非 root 使用者?
  2. 我想以非 root 使用者身份執行別名。我可以像這樣用 sudo 執行它嗎?
$ sudo ksession

我試過了,但失敗並出現錯誤:

amit@c0deDaedalus:~$ sudo ksession
sudo: ksession: command not found
  1. 如果沒有,是否有任何解決方法可以從非 root 使用者執行 root 別名?

Root 不需要別名。如果你想要一些私人的東西,那麼不要開始改變其他使用者帳戶中的東西(在這種情況下是根使用者)。

只需編寫ksession為 shell 腳本並sudo在需要時在腳本中使用。將腳本放在私有目錄中,例如$HOME/bin,並確保該目錄是您的一部分$PATH並且該腳本是可執行的。

或者,將其編寫為 shell 函式並將其放入~/.bashrc文件中。該功能可sudo在需要時使用。

或者,將其寫為別名並將其放入您的~/.bashrc文件中。需要時可以使用別名sudo


您的sudo source ...命令不起作用,因為source它是bash內置命令並且sudo需要外部命令。

即使它起作用了,別名也不會在呼叫 shell 中被啟動,因為呼叫的命令sudo正在它自己的子 shell 中執行。

引用自:https://unix.stackexchange.com/questions/429680