如果我发出
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 分钟,但产生zero了nothing输出。我没有任何失败或成功的迹象......那么我怎么知道比较结果是否成功?
Fai*_*Dar 15
以下内容是直接从root sudo 上的社区 wiki 页面中提取的。
sudo允许用户在没有 root 登录的情况下作为 root 用户;使用比sudo以 root 身份登录更安全。
使用的好处
sudoUbuntu 默认禁用 root 登录有很多好处,包括:
- 安装人员要问的问题更少。
- 用户不必记住偶尔使用的额外密码(即 root 密码)。如果他们这样做了,他们很可能会忘记它(或者不安全地记录它,让任何人都可以轻松破解他们的系统)。
- 默认情况下,它避免了“我可以做任何事情”的交互式登录。在发生任何重大更改之前,系统会提示您输入密码,这应该让您考虑自己所做的事情的后果。
- sudo 添加了命令 run (in
/var/log/auth.log)的日志条目。如果您搞砸了,您可以返回并查看运行了哪些命令。- 在服务器上,每一个试图强行进入的破解者都会知道它有一个名为 root 的帐户,并且会首先尝试。他们不知道您其他用户的用户名是什么。由于 root 帐户密码被锁定,这种攻击在本质上变得毫无意义,因为首先没有密码可以破解或猜测。
- 通过在组中添加和删除用户,可以轻松转移管理员权限。当您使用单个 root 密码时,取消用户授权的唯一方法是更改 root 密码。
sudo可以使用更细粒度的安全策略进行设置。- 不需要与需要在系统上执行某种类型管理任务的每个人共享 root 帐户密码(请参阅上一个项目符号)。
- 认证会在很短的时间后自动过期(可以根据需要设置为尽可能少或为 0);因此,如果您在使用 以 root 身份运行命令后离开终端
sudo,您将不会无限期地打开 root 终端。使用 sudo 的缺点
虽然对于台式机来说,使用 sudo 的好处很大,但可能存在一些需要注意的问题:
重定向使用 sudo 运行的命令的输出需要不同的方法。例如,考虑
sudo ls > /root/somefile将不起作用,因为它是设置尝试写入该文件的重定向的 shell,而不是使用 root 权限运行的命令。您可以使用Run Code Online (Sandbox Code Playgroud)ls | sudo tee -a /root/somefile追加,或
Run Code Online (Sandbox Code Playgroud)ls | sudo tee /root/somefile覆盖内容。您还可以将整个命令传递给在 sudo 下运行的 shell 进程,以便使用 root 权限写入文件,例如
Run Code Online (Sandbox Code Playgroud)sudo sh -c "ls > /root/somefile"- 在许多办公环境中,系统上唯一的本地用户是 root。所有其他用户都是使用 NSS 技术(例如 nss-ldap)导入的。要设置工作站或修复它,在网络出现故障的情况下,
nss-ldap需要 root。这往往会使系统无法使用,除非破解。此处需要额外的本地用户或启用的 root 密码。本地用户帐户的 $HOME 应该在本地磁盘上,而不是在 NFS(或任何其他网络文件系统)上,并且.profile/.bashrc不引用 NFS 挂载上的任何文件。这通常是 root 的情况,但如果添加非 root 救援帐户,则必须手动采取这些预防措施。然而,使用本地用户的优势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 的设计者不建议或支持以下任何方法。
请不要向其他人建议这个,除非您个人可以 24/7 全天候为用户提供支持,如果他们因以 root 身份运行 shell 而出现问题。
要启动 root shell(即可以在其中运行 root 命令的命令窗口)、启动 root 的环境和登录脚本,请使用:
sudo -i(类似于sudo su -,为您提供 root 环境配置)要启动 root shell,但保留当前 shell 的环境,请使用:
sudo -s(类似于sudo su)下面是一些之间的差异的简要概述
su,su -以及sudo -{i,s}Run Code Online (Sandbox Code Playgroud)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
这个问题没有什么关系之间的差异sudo和su。
手册页cmp内容如下:
cmp 实用程序比较任何类型的两个文件并将结果写入标准输出。默认情况下,如果文件相同, cmp 是静默的;如果它们不同,则报告出现第一个不同的字节和行号。
所以没有输出意味着两个文件是一样的。