假设我以超级用户身份运行时,如何才能使所有内容变为现实?


10

有什么方法可以让我假设运行它们时是以特权管理员身份(又名root)运行它们吗?我知道这可能很危险,但我愿意以方便为名承担这种风险。


不要这样做。它将破坏您的系统(除了使计算机遭受攻击之外)。阅读unix.stackexchange.com/questions/1052/...
MarkovCh1

但是,如果您仍想以root用户身份运行特定的应用程序,请参见wiki.archlinux.org/index.php/Sudo
MarkovCh1 2012年

1
乔恩,我撤消了您的修改。即使您不打算这样做,问题/答案对于考虑此问题的其他任何人仍然有用。为了使此页面有用,应该保留该问题,否则新访客将看到“撤回的问题”,然后是他们看不到的问题的答案:)
Cesium 2012年

2
出于同样的原因也不应该被否决
马克·鲁尼

2
是的,这是一个很好的问题。唯一愚蠢的是没有在评论和答案中接受建议。+1
汤姆·布鲁斯曼

Answers:


21

通常,我会在回答中包含说明,但这是一个坏主意,我将带您到几个地方阅读有关如何执行此操作的信息。您可以从那里拿走。请注意,当您破坏系统时,可以在此处再次发布以寻求帮助,但是人们会笑着摇头,并提到了pebkac错误等。

首先,在Root / sudo上的Ubuntu 帮助页面。请注意三个明显的大警告。

这是一个Ubuntu论坛用户,他做了类似的事情并且无法修复他们的系统。

如果需要,请保留数据备份,并考虑交易安全性的便利性。重新安装时,也许放了一张旧的Dead Kennedys 专辑 ...


3

如果您只对以root身份运行的特定事物感兴趣,则setuid位是适当的功能。

通过设置该位,程序将在其所有者的权限下运行。因此,您可以使用一个程序,将其所有者更改为root,将其设置为setuid位,然后该程序将以root身份运行,而无需特殊干预。

Ubuntu中的某些程序默认情况下是setuid的-例如, ping

> ls -l `which ping`
-rwsr-xr-x 1 root root 35712 2011-05-03 11:43 /bin/ping

该程序需要以root身份运行,因为只有root才能打开1024以下的端口以进行侦听,这是侦听返回数据包所必需的。

如前所述,默认情况下允许程序具有root权限是危险的,并且通常只保留给简单的,经过良好审计的程序-任何可能由于外部输入而被利用的程序都将冒着使整个系统受到破坏的风险,而不是仅您的用户帐户可以访问的区域。


无关::叹气:Unix安全性:必须放弃整个系统才能打开侦听端口。那如何工作呢?没有人以Apache为根...
Billy ONeal 2012年

1
我相信Apache可以通过生成具有较少特权UID的子进程并仅启动一个将根端口打开80的主进程来处理它。子进程处理所有用户请求。我认为另一个常见的模式是,进程将以setuid root身份启动,然后在获取到需要root才能使用的资源后立即使用setuid更改为受限用户。unixwiz.net/techtips/chroot-practices.html
Adrian

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.