SUDO和改成root有什么区别

Mar*_*lin 6 command-line root

如果我发出

sudo /bin/bash`  
[sudo] password for mark:
cmp -bl /dev/blah1 /dev/blah2
Run Code Online (Sandbox Code Playgroud)

并使用

sudo cmp -bl /dev/blah1 /dev/blah2
Run Code Online (Sandbox Code Playgroud)

然后以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:~$
Run Code Online (Sandbox Code Playgroud)

它运行了,运行了大约 30 分钟,但产生zeronothing输出。我没有任何失败或成功的迹象......那么我怎么知道比较结果是否成功?


Fai*_*Dar 15

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

sudo允许用户在没有 root 登录的情况下作为 root 用户;使用比sudo以 root 身份登录更安全。

的优点和缺点

使用的好处 sudo

Ubuntu 默认禁用 root 登录有很多好处,包括:

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

使用 sudo 的缺点

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

  1. 重定向使用 sudo 运行的命令的输出需要不同的方法。例如,考虑sudo ls > /root/somefile将不起作用,因为它是设置尝试写入该文件的重定向的 shell,而不是使用 root 权限运行的命令。您可以使用

    ls | sudo tee -a /root/somefile
    
    Run Code Online (Sandbox Code Playgroud)

    追加,或

    ls | sudo tee /root/somefile
    
    Run Code Online (Sandbox Code Playgroud)

    覆盖内容。您还可以将整个命令传递给在 sudo 下运行的 shell 进程,以便使用 root 权限写入文件,例如

    sudo sh -c "ls > /root/somefile"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在许多办公环境中,系统上唯一的本地用户是 root。所有其他用户都是使用 NSS 技术(例如 nss-ldap)导入的。要设置工作站或修复它,在网络出现故障的情况下,nss-ldap需要 root。这往往会使系统无法使用,除非破解。此处需要额外的本地用户或启用的 root 密码。本地用户帐户的 $HOME 应该在本地磁盘上,而不是在 NFS(或任何其他网络文件系统)上,并且.profile/.bashrc不引用 NFS 挂载上的任何文件。这通常是 root 的情况,但如果添加非 root 救援帐户,则必须手动采取这些预防措施。然而,使用本地用户的优势sudo 就是可以轻松跟踪命令,如上面的好处所述。

关于root登录的误解

  1. 是不是sudo比不安全su

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

    在更深奥的层面上,sudo提供一些鼓励不同工作习惯的功能,这可以对系统的安全性产生积极影响。sudo常用于只执行一条命令,而su一般用于打开一个shell并执行多条命令。该sudo方法降低了无限期打开 root shell 的可能性,并鼓励用户尽量减少对 root 权限的使用。

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

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

  3. 我可以在不输入密码的情况下从控制台获取 root shell!

    您必须输入密码。

    控制台用户可以访问引导加载程序,并且可以在引导过程中以各种方式获得管理权限。例如,通过指定一个替代的 init(8) 程序。Linux 系统通常不会在控制台上配置为安全的,并且需要额外的步骤(例如,设置 root 密码、引导加载程序密码和 BIOS 密码)来确保安全。请注意,控制台用户通常可以物理访问机器,因此也可以通过其他方式对其进行操作。

关于 sudo 和 shell 的特别说明

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

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

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

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

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

  • sudo -s (类似于sudo su

下面是一些之间的差异的简要概述susu -以及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
Run Code Online (Sandbox Code Playgroud)


Rma*_*ano 5

这个问题没有什么关系之间的差异sudosu

手册页cmp内容如下:

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

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