如何在没有 sudo 的情况下以普通用户身份执行任何命令?

use*_*629 3 linux permissions sudo files

是否可以将粘性位分配给 sudo 以便以普通用户身份执行任何命令?

假设我们有用户测试,然后:

test@test$ apt-get update
Run Code Online (Sandbox Code Playgroud)

但我不想使用 sudo 也不想修改 sudoers 文件,这可能只使用粘性位吗?

Arc*_*mar 12

简短回答:你不能在没有任何一个的情况下执行任意管理命令

  • 一个须藤,或
  • 是根。

龙答:你必须拥有NOPASSWD/etc/sudoers,或以root身份登录。请参阅https://askubuntu.com/questions/147241/execute-sudo-without-password

visudo
Run Code Online (Sandbox Code Playgroud)

然后添加一行

username ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)

根据要求,如果您想以 root 身份运行特定的二进制文件,您可以使用

chown root:wheel /usr/binary
chmod u+s /usr/binary
Run Code Online (Sandbox Code Playgroud)

但是,如果您想在没有 sudo 的情况下以 root 身份运行的程序是 shell(或 python、awk、perl),则不能。

当心陷阱,在我的主要 ubuntu 上/usr/bin/shutdown有一个指向/sbin/systemctl.

在应用上面的 chmod/chown 之前,我需要将后者复制到前者。

  • @Peschke,但你仍然需要使用“sudo poweroff”、“sudo restart”。OP 想去掉“sudo”部分。 (2认同)

Nag*_*shi 10

如果您的帐户有sudo权限,那么就没有必要弄乱粘滞位。以下假设 Bash 作为您的交互式 shell,因此您可能需要根据您使用的内容修改步骤 2 和 3。


  1. 将这些添加到 /etc/sudoers 的末尾
USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/apt-get
USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/shutdown
Run Code Online (Sandbox Code Playgroud)
  1. 将这些添加到您的 ~/.bashrc
alias shutdown='sudo shutdown'
alias apt-get='sudo apt-get'
Run Code Online (Sandbox Code Playgroud)
  1. 重新加载当前会话的启动配置。
$ source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
  1. 现在,您可以以普通用户身份运行这些命令,而不会被提示输入 root/sudo 密码(因此,完全不需要知道密码)。
$ apt-get update
$ apt-get upgrade
$ shutdown -h now
Run Code Online (Sandbox Code Playgroud)