我的问题是询问我想要了解的一个具体观察。
我刚刚尝试在 R 中安装 rJava 包,尽管我按照建议进行了安装,但还是失败了通过手册和:
sudo R CMD javareconf
然后我遇到了此评论:
使用 sudo 和以 root 身份运行并不完全相同。– Jon7
尽管我非常绝望,但我还是尝试了:
sudo su
R CMD javareconf
令我惊讶的是,我突然可以安装该软件包了。
抱歉介绍得太长,但我想给你一个背景,以避免出现这样的答案这里. 问题才不是专门针对所描述的观察 - 而不是 Ubuntu 上的那些“事物”。
我的问题是:这怎么可能? sudo X 和以 root 身份运行 X 有什么区别?
答案1
这个解释有点太宽泛了,它会以结论结束,就像你链接到你的问题的链接一样,但我会尝试一些更充实的东西,也许它会给你一些答案。
sudo
(“替代用户执行”)允许系统管理员委派权限,给予某些用户(或用户组)以另一个用户身份运行某些(或全部)命令的能力,root
同时提供命令及其参数的审计跟踪。
Sudo
su
是以 身份运行命令的替代方法root
。与 不同su
, 它会启动一个root
允许所有后续命令root
访问的 shell,sudo
而是将临时特权升级授予单个命令。通过root
仅在需要时启用特权,sudo
使用可以降低调用命令中的拼写错误或错误破坏系统的可能性。Sudo
还可用于以其他用户身份运行命令;此外,sudo
记录所有命令和失败的访问尝试以供安全审计。
更多详细信息Root Sudo
请访问Ubuntu 官方文档
答案2
这教程取自原始主页:
Sudo 简介
Sudo (su“do”) 允许系统管理员授予某些用户(或用户组)以 root 身份运行部分(或全部)命令的能力,同时记录所有命令和参数。Sudo 以每个命令为基础运行,它不是 shell 的替代品。其功能包括:
- 限制用户在每个主机上可以运行的命令的能力。
- Sudo 会大量记录每条命令,提供清晰的审计线索,记录谁做了什么。当与系统日志守护程序 syslogd 一起使用时,sudo 可以将所有命令记录到中央主机(以及本地主机)。在 CU,所有管理员都使用 sudo 代替 root shell 来利用此日志记录。
- Sudo 使用时间戳文件来实现“票证”系统。当用户调用 sudo 并输入密码时,他们会被授予 5 分钟的票证(此超时时间可在编译时配置)。每个后续 sudo 命令都会将票证更新 5 分钟。这避免了将 root shell 留在其他人可以实际接触到您的键盘的地方的问题。用户还可以通过一种简单的方法删除他们的票证文件,这适用于将其放置在 .logout 文件中。
- Sudo 的配置文件 sudoers 文件以这样的方式设置,即可以在多台机器上使用同一个 sudoers 文件。这允许集中管理,同时保持按主机定义用户权限的灵活性。请参阅下面的示例 sudoers 文件,了解真实示例。
根
UNIX 根帐户是全有或全无。
在计算中,超级用户是用于系统管理的特殊用户帐户。根据操作系统 (OS),此帐户的实际名称可能是 root、administrator、admin 或 supervisor。在某些情况下,帐户的实际名称不是决定因素;例如,在类 Unix 系统中,用户标识符 (UID) 为零的用户是超级用户,无论该帐户的名称是什么;在实施基于角色的安全模型的系统中,任何具有超级用户角色(或其同义词)的用户都可以执行超级用户帐户的所有操作。最小特权原则建议大多数用户和应用程序在普通帐户下运行以执行其工作,因为超级用户帐户能够进行不受限制的、可能不利的系统范围的更改。(a)