sudo X和以root身份运行X有什么区别?

我的问题是询问我想了解的具体观察。

我只是尝试在R中安装rJava包并且失败了,即使我按照手册的建议开头安装:

sudo R CMD javareconf 

然后我发现了这个评论 :

使用sudo并以root身份运行并不完全相同。 – Jon7

像我一样绝望,我尝试了:

 sudo su R CMD javareconf 

令我惊讶的是,我突然可以安装该软件包。


对于lenghty介绍很抱歉,但我想给你一个上下文来阻止这里的答案。 这个问题的目的并不是针对所描述的观察 – 而是针对Ubuntu上的那些“事物”。

我的问题是:这怎么可能? sudo X和runnding X作为root有什么区别?

这有点过于宽泛,无法解释它会以一个链接结束,例如你链接到你的问题,但我会尝试更充实的东西,也许它会给你一些答案。

sudo (“替代用户do”)允许系统管理员委派权限,使某些用户(或用户组)能够以root或其他用户身份运行某些(或所有)命令,同时提供命令及其命令的审计跟踪参数。

Sudo是以root身份运行命令的su的替代品。 与su不同, su启动了一个允许所有进一步命令root访问的root shell,而sudo则将临时权限提升授予单个命令。 通过仅在需要时启用root权限, sudo用法可降低被调用命令中的拼写错误或错误会破坏系统的可能性。 Sudo也可以用来像其他用户一样运行命令; 另外, sudo记录所有命令和失败的安全审核访问尝试。

有关Root Sudo更多详细信息,请参阅官方Ubuntu文档

本教程取自原始主页:

IMG: Sudo in a Nutshell

Sudo(su“do”)允许系统管理员为某些用户(或用户组)提供以root身份运行某些(或所有)命令的能力,同时记录所有命令和参数。 Sudo基于每个命令运行,它不是shell的替代品。 其function包括:

  • 能够限制用户可以基于每个主机运行的命令。
  • Sudo对每个命令进行了大量记录,提供了清楚的审计跟踪,了解谁做了什么。 当与syslogd(系统日志守护程序)串联使用时,sudo可以将所有命令记录到中央主机(以及本地主机)。 在CU,所有管理员都使用sudo代替root shell来利用此日志记录。
  • Sudo使用时间戳文件来实现“票务”系统。 当用户调用sudo并输入密码时,会为他们授予5分钟的票证(此超时可在编译时配置)。 每个后续的sudo命令都会将该故障单再更新5分钟。 这避免了将root shell留在其他人可以实际到达键盘的问题。 用户还可以轻松删除其票证文件,这对于放入.logout文件很有用。
  • Sudo的配置文件sudoers文件的设置方式可以在许多机器上使用相同的sudoers文件。 这允许集中管理,同时保持灵活性,以便在每个主机的基础上定义用户的权限。 请参阅下面的示例sudoers文件以获取真实示例。

UNIX root帐户全有或全无。

在计算中,超级用户是用于系统管理的特殊用户帐户。 根据操作系统(OS),此帐户的实际名称可能是root,administrator,admin或supervisor。 在某些情况下,帐户的实际名称不是决定因素; 例如,在类Unix系统上,用户标识符(UID)为零的用户是超级用户,无论该帐户的名称如何,在实现基于角色的安全模型的系统中,任何具有超级用户角色的用户(或其同义词)可以执行超级用户帐户的所有操作。 最小特权原则建议大多数用户和应用程序在普通帐户下运行以执行其工作,因为超级用户帐户能够进行不受限制的,可能不利的系统范围更改。 (一个)

(a)来自https://en.wikipedia.org/wiki/Superuser