是否可以将 setuid 位分配给 sudo 以便以普通用户身份执行任何命令?
假设我们进行了用户测试,然后:
test@test$ apt-get update
但我不想使用 sudo 也不想修改 sudoers 文件,仅使用 setuid 位可以吗?
答案1
如果你的帐户有sudo
权限,那么就没有必要搞乱 suid 位。以下假设 Bash 作为您的交互式 shell,因此您可能需要根据您使用的内容修改步骤 2 和 3。
将这些添加到 /etc/sudoers 的末尾
USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/apt-get USERNAME HOST_NAME = (root) NOPASSWD: /usr/bin/shutdown
将这些添加到您的 ~/.bashrc
alias shutdown='sudo shutdown' alias apt-get='sudo apt-get'
重新加载当前会话的启动配置。
$ source ~/.bashrc
现在,您可以以普通用户身份运行命令,而不会提示输入 root/sudo 密码(因此,完全不需要知道密码)。
$ apt-get update $ apt-get upgrade $ shutdown -h now
答案2
简短回答:你不能执行任意管理命令,无需执行任意管理命令
- 须藤,或
- 是根。
长答案:您必须具有NOPASSWD
in/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 之前,我需要将后者复制到前者。