我知道我们可以使用命令以超级用户/其他用户身份执行命令/脚本。但是否存在实用程序本身不可用/被用户删除的sudo
可能性。如果是这样,除了 之外还有什么替代方案?此外, do和具有相同的用途?sudo
sudo
su
sudo
su
答案1
“sudo” 允许您以任何用户身份启动任何程序。它是“setuid root”,因为程序本身需要 root 权限才能执行此操作。sudo 的强大之处在于您可以轻松配置谁可以做什么。您可以允许用户使用 sudo 执行 nmap(并且只能执行 nmap)。
'su' 允许您以任何用户身份启动 shell。启动 shell 时,您显然可以启动任何其他程序。因此,这更危险;在管理良好的系统上,su
访问权限通常被禁用,但sudo
可能对不同的程序可用。
使用上述两个程序的原因是为了问责。Sudo 会记录所有发出的请求。因此,管理员可以非常轻松地跟踪用户使用 root 权限执行的操作。如果您授予对 shell 的访问权限,则用户可以为所欲为(这是一个“黑洞”)。(当然,内核级的高级日志记录会阻止这种情况)。
当然,这些程序也可以标记为setuid
。这会在执行二进制文件时将权限更改为其所有者。如果您设法激活setuid
上的位,例如,将/bin/bash
的所有者设置/bin/bash
为root
,则每次执行 时,您都将是 root /bin/bash
。
最后,物理访问机器将允许您做任何您想做的事情。您可以从闪存驱动器启动并访问本地文件系统。您甚至可以将引导加载程序配置为使用不同的进程,init
该进程会立即以单用户模式启动 shell(无需输入密码)。
答案2
似乎没有人回答过除了 su 之外是否存在 sudo 替代品的问题,因此您可能有兴趣知道 sudo 网站实际上维护着一个 sudo 替代品列表:
该列表包括开源和商业软件。以下是目前列出的开源 sudo 替代方案:
-
- 现已解散?参考:SUS:用于分配 Unix 超级用户权限的对象参考模型
话虽如此,我从未使用过这些替代方案,也从未在任何其他情况下见过或听说过它们。而且似乎至少其中一些是实验性的、已失效的或不受支持的。我得到的印象是,sudo
和su
是镇上唯一真正的游戏。
答案3
以 root 身份登录(如果您的 tty 允许)或重新启动计算机并在命令行上使用 init=/bin/bash 登录以恢复所需的功能。
我指出只有 root 可以删除 sudo。
sudo 和 su 的用途相似但不同。“sudo”允许您使用其他人的权限执行某些操作,而“su”允许您“成为”该用户并让您像他们一样行事。
答案4
如果机器已经openssh-server
安装,那么替代方案sudo
可能是:
ssh root@localhost ..command.. ..goes.. ..here..
如果它还没有被禁用那么就有su
你提到的:
su - root -c "..command.. ..goes.. ..here.."