0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中root和sudo的用法与区别

dyquk4xk2p3d 来源:良许Linux 2023-03-29 09:17 次阅读

Linux 下面有两个概念可能大家接触的比较多,一个是 sudo 命令,还有一个是 root 账户。Sudo命令可以以最高权限执行命令,而 root 账户下所有命令都有最高权限,也就是相当于所有命令都默认加了 sudo。

那么sudo 和 root 的区别到底是什么呢,为什么我们建议使用 sudo 而不是直接使用 root 账户?在本教程中,您将了解 root 访问、sudo 命令、如何使用 sudo 运行命令以及 sudo 访问和 root 之间的区别。

什么是 root?

root 是指 Linux 等类 Unix 系统中的超级用户帐户。它是用于系统管理的系统上具有最高访问权限的特权帐户。此根/超级用户帐户的用户标识符 (UID) 为零,无论帐户名称如何。

root 用户拥有整个系统的完全权限(root 特权)。它可以做诸如修改系统的核心部分、升级系统、更改系统配置以及启动、停止和重新启动所有正在运行的系统服务之类的事情。

以 root 身份登录(使用 su -)时,终端命令提示符符号从

$echo'Youareinanormalshell'

变成

#echo'Thisisarootshell'

在某些系统(如 Ubuntu)上,root 用户默认被锁定。(备注:搬瓦工并不会锁定,但是腾讯云默认会锁定)。

什么是 Sudo?

sudo(superuser do) 命令是一个命令行实用程序,它允许用户以 root 或其他用户身份执行命令。它提供了一种有效的方式来授予某些用户适当的权限以使用特定的系统命令或以 root 用户身份运行脚本。

虽然有点类似于 su 命令,但sudo的不同之处在于它默认需要用户的密码进行身份验证,而不是 su 需要的目标用户的密码。Sudo 也不会产生 root shell;相反,它以提升的权限运行程序或命令,不像 su,它产生一个 root shell。

使用 sudo,系统管理员可以执行以下操作:

授予用户或用户组以提升或 root 权限运行某些命令的能力。

查看每个使用 sudo 的用户的用户 ID 的日志。

控制用户可以在主机系统上使用什么命令。

Sudo 会记录在 /var/log/auth.log 文件中执行的所有命令和参数的日志,可以在出现故障时进行分析。

sudoers 文件

sudo 使用默认的 sudoers 安全策略,并保留一个特殊的配置文件 /etc/sudoers。该文件可用于控制访问权限和密码提示超时。

注意:您必须具有提升的权限才能查看 sudoers 文件

打开 /etc/sudoers 文件;它应该是这样的:

#ThisfileMUSTbeeditedwiththe'visudo'commandasroot.
#
#Pleaseconsideraddinglocalcontentin/etc/sudoers.d/insteadof
#directlymodifyingthisfile.
#
#Seethemanpagefordetailsonhowtowriteasudoersfile.
#
Defaultsenv_reset
Defaultsmail_badpass
Defaultssecure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/
sbin:/bin"
#Hostaliasspecification
#Useraliasspecification
#Cmndaliasspecification
#Userprivilegespecification
rootALL=(ALL:ALL)ALL
#Allowmembersofgroupsudotoexecuteanycommand
%sudoALL=(ALL:ALL)ALL
#Seesudoers(5)formoreinformationon"@include"directives:
@includedir/etc/sudoers.d

其中这行:

rootALL=(ALL:ALL)ALL

意味着 root 用户拥有无限的权限并且能够在系统上运行任何命令。

%sudoALL=(ALL:ALL)ALL

允许组 sudo 的所有成员执行任何命令。

注意:sudoers 文件中的 ‘%’ 代表一个组,而不是注释。

从 /etc/sudoers 文件的第一行可以看出:

#ThisfileMUSTbeeditedwiththe'visudo'commandasroot

不要尝试直接编辑 sudoers 文件。使用具有 root 权限的 visudo 命令。

使用 sudo 运行命令很简单,只需要在命令前面加上 sudo 即可:

$sudocommand

一般来说会提示输入密码,输入密码后回车即可。

$sudocommand
[sudo]passwordforuser:

Sudo 对比 Root

最小权限原则是一种信息和计算机安全概念,它认为授予程序和用户执行任务所需的最少或最低限度的权限。

以 root 用户登录后,输入到终端的每一条命令都以系统最高权限运行,违反了最小权限原则。像 rm 这样的简单命令可用于删除核心根目录或文件,而不会在意外时提示用户。例如,如果您尝试使用以下命令删除 /etc 之类的根目录:

$rm-rf/etc

当您以普通用户身份登录时,您将被拒绝许可。当以 root 身份登录时,不会显示任何提示,并且整个文件夹将被删除 – 这很可能会破坏您的系统,因为运行系统所需的特殊配置文件存储在 /etc 目录中。您也可能最终错误地格式化磁盘,并且系统不会提示您。

此缺陷还扩展到以 root 身份运行代码或应用程序;应用程序中的一个小错误可能会删除一些系统文件,因为该应用程序是在最高权限下运行的。

Sudo 提供细粒度的访问控制。它仅向需要它的特定程序授予提升的权限。您知道哪个程序以提升的权限运行,而不是使用 root shell(以 root 权限运行每个命令)。

Sudo 也可以配置为以另一个用户身份运行命令,指定允许哪些用户和组使用 sudo 运行命令,或者通过编辑 sudoers 文件设置以 root 权限运行程序的超时。

因此,不建议使用 root shell 运行命令,因为您破坏系统的机会要高得多。如果您需要更高权限或 root 权限来运行命令,请使用 sudo 确保只有该命令以 root 权限运行。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
  • 文件
    +关注

    关注

    1

    文章

    540

    浏览量

    24402
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849
  • root
    +关注

    关注

    1

    文章

    82

    浏览量

    21236

原文标题:Linux 中 root 与 sudo 的用法与区别,居然这么多人搞不清楚!

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在Linux中重置忘记的root密码

    忘记了 Linux root 密码?不用担心!本文提供了简单易懂的说明,可以安全地重置和修改 root 密码。
    的头像 发表于 12-04 14:51 1149次阅读
    如何在<b class='flag-5'>Linux</b>中重置忘记的<b class='flag-5'>root</b>密码

    linux运行ifconfig出现错误,不能sudo apt install net-tools,Linux不能联网

    linux运行ifconfig出现错误正常情况下,只需要在控制面板上输入sudo apt install net-tools就可以正常 ifconfig 了。不能sudo apt i
    发表于 10-20 20:44

    若忘记了Linux系统的root密码,该怎么办?

    很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?
    的头像 发表于 10-15 16:49 1.2w次阅读

    Linux中易混淆命令的区别

    素材来源:Linuxsudo 与 su 两个命令的最大区别是:sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的
    的头像 发表于 09-25 14:25 1580次阅读
    <b class='flag-5'>Linux</b>中易混淆命令的<b class='flag-5'>区别</b>

    sudo中存在一个严重的漏洞:无需密码就能获取root权限

    “这可能是近期内最需要重视的sudo漏洞。” 程序员都知道,一句sudo可以“为所欲为”。   而现在,来自Qualys的安全研究人员发现,sudo中存在一个严重的漏洞: 任何本地用户,无需身份验证
    的头像 发表于 02-02 11:14 2799次阅读
    <b class='flag-5'>sudo</b>中存在一个严重的漏洞:无需密码就能获取<b class='flag-5'>root</b>权限

    银河麒麟操作系统使用root用户登录的方法说明

    麒麟linux安装时不让用户创建root,而是自动创建,用户并不知道密码,那么怎么登录root用户呢? 方法如下: 方法一:安装完系统后,默认root密码随机更换,并禁止以
    发表于 07-14 16:04 1.8w次阅读

    Linux中su和sudo命令有什么区别

      之前一直对 su 和 sudo 这两个命令犯迷糊,最近专门搜了这方面的资料,总算是把两者的关系以及用法搞清楚了,这篇文章来系统总结一下。 1. 准备工作 因为本篇博客中涉及到用户切换,所以我需要
    的头像 发表于 11-19 09:19 1457次阅读

    如何解决sudo与重定向的权限拒绝的问题

    udo命令允许您以其他用户身份运行命令与程序,默认是root用户。如果您是个命令行用户,那么sudo是您将经常使用的命令之一。
    的头像 发表于 12-09 17:46 1688次阅读

    如何使用sudo命令以及选项

    sudo命令允许您以其他用户身份运行命令与程序,默认是root用户。如果您是个命令行用户,那么sudo是您将经常使用的命令之一。
    的头像 发表于 12-09 17:47 4513次阅读

    值得考虑的4个最佳Linux sudo命令替代方案

    对于那些不喜欢 sudo 并觉得它臃肿的人,可以尝试使用几种 sudo 替代方法。 sudo 可能是最常用的 Linux 命令之一。它允许您在 Li
    的头像 发表于 01-06 10:54 1185次阅读

    sudo后使用别名

    我们给shutdown命令创建一个别名,当普通用户运行的时候尝试输入这个别名去关机,我们可以看到系统不会关机。想要运行/sbin/shutdown需要root权限,然而sudo会完全忽略shutdown的这个别名。
    的头像 发表于 02-16 11:29 625次阅读

    linux中su和sudo区别是什么

    前面的方法中,我们都是先切换到另一个用户(root 或者 test_user),在哪个用户的状态下执行命令,最后输入 exit 返回当前 ubuntu 用户。
    发表于 08-02 09:32 142次阅读

    Linux命令su和sudo区别

    Linux 系统中,有两个常用的命令用于切换用户身份和执行特权操作,它们分别是 su 和 sudo。虽然它们都可以实现权限提升,但在使用方式、安全性和适用场景等方面存在一些区别。本文将介绍 su 和
    发表于 08-14 14:14 163次阅读

    首个Rust版sudo发布!

    sudo-rs项目则是用 Rust 编写的 sudo 和 su 的、面向安全和内存安全的实现。官网声明中显示,sudo-rs 目前仅针对基于 Linux 的操作系统;运行
    的头像 发表于 09-01 15:59 522次阅读
    首个Rust版<b class='flag-5'>sudo</b>发布!

    su与sudo命令介绍及主要用法

    大家在自己实验服务器上可能不会用到su与sudo命令,因为一直用着root用户进行操作。
    的头像 发表于 11-27 09:31 398次阅读