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

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

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

假设我们进行了用户测试,然后:

test@test$ apt-get update

但我不想使用 sudo 也不想修改 sudoers 文件,仅使用 setuid 位可以吗?

答案1

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


  1. 将这些添加到 /etc/sudoers 的末尾

    USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/apt-get
    USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/shutdown
    
  2. 将这些添加到您的 ~/.bashrc

    alias shutdown='sudo shutdown'
    alias apt-get='sudo apt-get'
    
  3. 重新加载当前会话的启动配置。

    $ source ~/.bashrc
    
  4. 现在,您可以以普通用户身份运行命令,而不会提示输入 root/sudo 密码(因此,完全不需要知道密码)。

    $ apt-get update
    $ apt-get upgrade
    $ shutdown -h now
    

答案2

简短回答:你不能执行任意管理命令,无需执行任意管理命令

  • 须藤,或
  • 是根。

长答案:您必须具有NOPASSWDin/etc/sudoers或以 root 身份登录。看https://askubuntu.com/questions/147241/execute-sudo-without-password

visudo

然后添加一行

username ALL=(ALL) NOPASSWD: ALL

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

chown root:wheel /usr/binary
chmod u+s /usr/binary

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

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

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

相关内容