![SUDO 和更改为 root 有什么区别](https://linux22.com/image/1049516/SUDO%20%E5%92%8C%E6%9B%B4%E6%94%B9%E4%B8%BA%20root%20%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%20.png)
如果我发出
sudo /bin/bash`
[sudo] password for mark:
cmp -bl /dev/blah1 /dev/blah2
并使用
sudo cmp -bl /dev/blah1 /dev/blah2
然后以 root 身份登录?
我看不出有什么不同,如果发出多个命令行,那么rooting
在我看来,在命令行中键入 sudo 前缀似乎是合乎逻辑的选择。
我曾看到sudo -i
过用于登录到 root 的方法,这种方法以前可以工作,但是上周却出现了错误。
**编辑**
我以 root 身份登录,发出命令
mark@mark-zotac:~$ sudo cmp -bl /dev/sda "/media/mark/Seagate Expansion Drive/SSD/ssd.img"
[sudo] password for mark:
mark@mark-zotac:~$
它运行了,大约花了 30 分钟,但产生了zero
与nothing
输出相同的结果。我没有看到任何失败或成功的迹象...那么我如何知道比较结果是否成功?
答案1
以下内容直接摘自有关 root sudo 的社区 wiki 页面。
sudo
允许用户以 root 身份运行而无需 root 登录;使用它sudo
比以 root 身份登录更安全。
的优点和缺点
使用的好处
sudo
Ubuntu 默认禁用 root 登录有许多好处,其中包括:
- 安装程序需要询问的问题较少。
- 用户不必记住偶尔使用的额外密码(即 root 密码)。如果他们记住了,他们很可能会忘记它(或不安全地记录它,让任何人都能轻易破解他们的系统)。
- 它默认避免了“我可以做任何事情”的交互式登录。在发生任何重大更改之前,系统会提示您输入密码,这应该让您考虑所做之事的后果。
- sudo 添加运行命令的日志条目(在 中
/var/log/auth.log
)。如果搞砸了,您可以返回并查看运行了哪些命令。- 在服务器上,每个试图强行入侵的黑客都知道它有一个名为 root 的帐户,并会首先尝试该帐户。他们不知道的是其他用户的用户名是什么。由于 root 帐户密码被锁定,这种攻击基本上毫无意义,因为首先没有密码可以破解或猜测。
- 通过添加和删除组中的用户,可以轻松转移管理员权限。当您使用单个 root 密码时,取消用户授权的唯一方法是更改 root 密码。
sudo
可以设置更细粒度的安全策略。- 不需要与需要在系统上执行某种管理任务的每个人共享 root 帐户密码(请参阅上一个项目符号)。
- 身份验证会在短暂的时间后自动过期(可以设置为所需的最短时间或 0);因此,如果您以 root 身份运行命令后离开终端
sudo
,则不会无限期地打开 root 终端。使用 sudo 的缺点
虽然对于桌面来说使用 sudo 的好处很多,但仍存在一些需要注意的问题:
重定向使用 sudo 运行的命令的输出需要不同的方法。例如,考虑
sudo ls > /root/somefile
将不起作用,因为设置重定向的 shell 会尝试写入该文件,而不是以 root 权限运行的命令。您可以使用ls | sudo tee -a /root/somefile
追加,或
ls | sudo tee /root/somefile
覆盖内容。您还可以将整个命令传递给在 sudo 下运行的 shell 进程,以便使用 root 权限写入文件,例如
sudo sh -c "ls > /root/somefile"
- 在许多办公环境中,系统上唯一的本地用户是 root。所有其他用户都使用 NSS 技术(如 nss-ldap)导入。要设置工作站,或在发生网络故障时修复它,
nss-ldap
需要 root。除非破解,否则这往往会使系统无法使用。这里需要一个额外的本地用户或启用的 root 密码。本地用户帐户应该在本地磁盘上有其 $HOME,不是在 NFS(或任何其他联网文件系统)上,以及不引用 NFS 挂载上的任何文件的.profile
/ 。这通常是 root 的情况,但如果添加非 root 救援帐户,则必须手动采取这些预防措施。但是,使用本地用户的优点是可以轻松跟踪命令,如上文优点中所述。.bashrc
sudo
关于 root 登录的误解
不是
sudo
比 更不安全吗su
?基本安全模型相同,因此这两个系统的主要弱点相同。任何使用
su
或的用户sudo
都必须被视为特权用户。如果该用户的帐户被攻击者攻破,攻击者还可以在用户下次这样做时获得 root 权限。用户帐户是此链中的薄弱环节,因此必须像保护 root 一样小心保护。从更深层次上讲,
sudo
提供了一些鼓励不同工作习惯的功能,这些功能可以对系统的安全性产生积极影响。sudo
通常用于仅执行单个命令,而su
通常用于打开 shell 并执行多个命令。该sudo
方法降低了 root shell 无限期打开的可能性,并鼓励用户尽量减少对 root 权限的使用。我无法进入单用户模式!
Ubuntu 中的 sulogin 程序已修补,以处理锁定 root 密码的默认情况。
我无需输入密码即可从控制台获取 root shell!
您必须输入您的密码。
控制台用户可以访问引导加载程序,并且可以在引导过程中以各种方式获得管理权限。例如,通过指定备用 init(8) 程序。Linux 系统通常不会配置为在控制台上是安全的,需要执行其他步骤(例如,设置 root 密码、引导加载程序密码和 BIOS 密码)才能实现安全。请注意,控制台用户通常可以物理访问机器,因此也可以以其他方式对其进行操作。
关于 sudo 和 shell 的特别说明
Ubuntu 的设计者不建议或支持以下任何方法。
请不要向其他人建议此操作,除非您本人可以全天候为用户提供支持(如果他们以 root 身份运行 shell 时遇到问题)。
要启动 root shell(即可运行 root 命令的命令窗口)、启动 root 环境和登录脚本,请使用:
sudo -i
(类似于sudo su -
,为您提供 root 环境配置)要启动 root shell,但保留当前 shell 的环境,请使用:
sudo -s
(如同sudo su
)
su
以下是、su -
和之间的一些区别的简要概述sudo -{i,s}
HOME=/root uses root's PATH env vars sudo -i Y Y[2] N sudo -s N Y[2] Y sudo bash N Y[2] Y sudo su Y N[1] Y [1] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games (probably set by /etc/environment) [2] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
答案2
sudo
这个问题与和之间的区别无关su
。
的手册页内容cmp
如下:
cmp 实用程序可比较任意类型的两个文件并将结果写入标准输出。默认情况下,如果文件相同,则 cmp 不会进行任何操作;如果文件不同,则报告第一个出现差异的字节和行号。
所以没有输出就意味着两个文件相同。