作为非 root 用户,如何运行 Root 别名?

作为非 root 用户,如何运行 Root 别名?

我在跑步

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
    
  3. 如果没有,是否有任何解决方法可以从非 root 用户运行 root 别名?

答案1

root 不需要别名。如果您想要私密的东西,那么不要开始更改其他用户帐户(在本例中为 root 帐户)中的内容。

只需编写ksession为 shell 脚本并sudo在需要时在脚本中使用即可。例如,将脚本放在私有目录中$HOME/bin,并确保该目录是您的目录的一部分$PATH并且该脚本是可执行的。

或者,将其编写为 shell 函数并将其放入文件中~/.bashrc。该功能可以sudo在需要的时候使用。

或者,将其写为别名并将其放入您的~/.bashrc文件中。sudo需要时可以使用别名。


您的sudo source ...命令不起作用,因为source它是bash内置命令并且sudo需要外部命令。

即使它有效,别名也不会在调用 shell 中激活,因为sudo调用的命令正在其自己的子 shell 中运行。

答案2

您可以在 /etc/profile.d/ 中创建一个脚本来为所有用户创建别名:

在 /etc/profile.d 中创建一个名为 00-aliases.sh (或任何其他奇特名称)的文件:

nano /etc/profile.d/00-aliases.sh 将别名放入此文件中。例子:

alias foo='bar --baz' alias baz='foo --bar' 保存文件

重新启动所有打开的终端以应用更改。享受

相关内容