是什么区别SUDO和更改为root

如果我发出一个

sudo /bin/bash` [sudo] password for mark: cmp -bl /dev/blah1 /dev/blah2 

和使用

 sudo cmp -bl /dev/blah1 /dev/blah2 

然后以root身份登录?

我没有看到什么不同,如果发出多个命令行然后rooting IMHO似乎是在命令行输入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输出。 我没有任何失败或成功的迹象……所以我怎么知道比较结果是否成功?


以下是从root sudo上的社区wiki页面直接提取的。

sudo允许用户在没有root登录的情况下以root身份运行; 使用sudo而不是以root身份登录更安全。

的优点和缺点

使用sudo好处

默认情况下,Ubuntu有许多优点可以禁用root登录,包括:

  1. 安装程序的问题较少。
  2. 用户不必记住偶尔使用的额外密码(即root密码)。 如果他们这样做了,他们可能会忘记它(或者不安全地记录它,允许任何人轻易地破解他们的系统)。
  3. 它默认情况下避免了“我可以做任何事情”的交互式登录。 在任何重大更改发生之前,系统会提示您输入密码,这会让您考虑到您正在做的事情的后果。
  4. sudo添加了命令运行的日志条目(在/var/log/auth.log )。 如果你陷入困境,你可以回去查看运行的命令。
  5. 在服务器上,每个尝试暴力破解的黑客都会知道它有一个名为root的帐户,并会先尝试。 他们不知道的是你的其他用户的用户名是什么。 由于root帐户密码被锁定,因此这种攻击基本上没有意义,因为首先没有密码可以破解或猜测。
  6. 通过在组中添加和删除用户,可以轻松转移管理员权限。 使用单个root密码时,取消授权用户的唯一方法是更改​​root密码。
  7. sudo可以使用更细粒度的安全策略进行设置。
  8. root帐户密码不需要与需要在系统上执行某种类型的管理任务的所有人共享(请参阅上一个项目符号)。
  9. 身份validation会在短时间后自动过期(可以设置为所需的最小值或0); 因此,如果您在使用sudo以root身份运行命令后离开终端,则不会无限期地打开根终端。

使用sudo的缺点

虽然对于台式机来说使用sudo的好处很大,但仍有一些问题需要注意:

  1. 重定向使用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" 
  2. 在许多办公环境中,系统上唯一的本地用户是root用户。 所有其他用户都使用NSS技术导入,例如nss-ldap。 要设置工作站或修复它,如果网络出现故障, nss-ldap被破坏,则需要root。 除非破解,否则这会使系统无法使用。 此处需要额外的本地用户或启用的root密码。 本地用户帐户应该在本地磁盘上具有$ HOME, 而不是在NFS(或任何其他网络文件系统)上,以及不引用NFS挂载上的任何文件的.profile / .bashrc 。 root通常就是这种情况,但如果添加非root救援帐户,则必须手动采取这些预防措施。 然而,使用具有sudo的本地用户的优点是可以容易地跟踪命令,如上面的益处中所提到的。

关于root登录的误解

  1. su不比su更安全吗?

    基本安全模型是相同的,因此这两个系统共享其主要缺点。 任何使用susudo用户都必须被视为特权用户。 如果该用户的帐户遭到攻击者的攻击,则攻击者也可以在下次用户访问时获得root权限。 用户帐户是此链中的薄弱环节,因此必须像root一样谨慎保护。

    在更深奥的层面上, sudo提供了一些鼓励不同工作习惯的function,这些function可以对系统的安全性产生积极影响。 sudo通常用于仅执行单个命令,而su通常用于打开shell并执行多个命令。 sudo方法降低了root shell无限期保持打开的可能性,并鼓励用户最小化root权限的使用。

  2. 我将无法进入单用户模式!

    Ubuntu中的sulogin程序被修补以处理锁定root密码的默认情况。

  3. 我可以从控制台获得root shell而无需输入密码!

    你必须输入你的密码。

    控制台用户可以访问引导加载程序,并可以在引导过程中以各种方式获得管理权限。 例如,通过指定备用init(8)程序。 Linux系统通常不配置为在控制台上是安全的,并且为了实现这些目的,还需要其他步骤(例如,设置root密码,引导加载程序密码和BIOS密码)。 请注意,控制台用户通常可以对计算机进行物理访问,因此也可以通过其他方式对其进行操作。

关于sudo和贝壳的特别说明

Ubuntu的设计者不会建议或支持以下任何方法。

除非您个人全天候可用以支持用户,如果他们因以root身份运行shell而出现问题,请不要向其他人建议。

要启动root shell(即可以运行root命令的命令窗口),启动root的环境和登录脚本,请使用:

  • sudo -i (类似于sudo su - ,为你提供root环境配置)

要启动root shell,但保留当前shell的环境,请使用:

  • sudo -s (类似于sudo su

以下是susu -sudo -{i,s}之间的一些区别的简要概述sudo -{i,s}

  HOME=/root uses root's PATH env vars sudo -i YY[2] N sudo -s NY[2] Y sudo bash NY[2] Y sudo su YN[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 

这个问题与sudosu之间的区别无关。

cmp的手册页写道:

cmp实用程序比较任何类型的两个文件,并将结果写入标准输出。 默认情况下,如果文件相同,则cmp是静默的; 如果它们不同,则报告发生第一个差异的字节和行号。

所以没有输出意味着两个文件是相同的。