您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

Linux su与sudo有何区别?

时间:2022-08-09 13:51:14  来源:51CTO  作者:

su命令和sudo命令都让用户可以执行非特权用户(除root用户之外的所有人)无权执行的系统管理任务。一些人偏爱sudo命令,比如Seth Kenlon最近发表了《在linux上使用sudo的五个理由》,该文盛赞sudo的诸多优点。

另一方面,我偏爱su命令,更喜欢用它而不是用sudo来处理我从事的大部分系统管理工作。我在本文中比较了这两个命令,解释了为什么我更喜欢su而不是sudo,但仍然同时使用这两个命令。

系统管理员的历史观点

su命令和sudo命令是为不同的世界设计的。早期的Unix计算机需要全职系统管理员,他们使用root帐户作为唯一的管理帐户。在那个时代,拥有root密码的人以root身份登录电传打字机或CRT终端,然后执行管理Unix计算机所必需的管理任务。root用户也会拥有非root帐户来处理非root活动,比如编写文档和管理个人电子邮件。

这些计算机上通常有许多非root用户帐户,这些用户都不需要全面的root访问权。用户可能需要以root身份运行一两个命令,但很少这样。许多系统管理员以root身份登录,完成工作后退出root会话。有时需要整天保持以root身份登录的状态。大多数系统管理员之所以很少使用sudo,是由于它需要输入比运行基本命令所需的更多内容。这些工具都可以提升权限,但方式大不相同。这种差异归因于它们最初面向不同的用例。

sudo

sudo的初衷是让root用户能够向一两个非root用户授予这一权限:访问他们经常需要的一两个特定命令。sudo命令使非root用户可以临时访问执行任务所需的提升权限,比如添加和删除用户、删除属于其他用户的文件、安装新软件以及通常管理现代Linux主机所需的任何任务。

允许用户访问需要提升权限的一两个常用命令可以让系统管理员避免用户的大量请求,并消除等待时间。sudo命令并不将用户帐户切换成root;大多数非root用户永远不应该拥有全面的root访问权。在大多数情况下,sudo让用户可以发出一两个命令,然后允许权限提升到期失效。在这个短暂的间隔(通常设置为5分钟),用户可以执行任何需要提升权限的必要管理任务。如果用户需要继续使用提升的权限,但尚未准备好发出另一个与任务相关的命令,可以运行sudo -v命令,重新验证登录信息,并将间隔时间再延长5分钟。

使用sudo命令确实有这个副作用:生成非root用户使用的命令的日志条目及其ID。日志便于事后分析问题,以确定用户何时需要加强培训。

su

su命令旨在允许非root用户将权限级别提升到root——实际上就是非root用户成为root用户。唯一的要求是用户需要知道root密码。这方面没有任何限制,因为用户现在以root身份登录。su命令提供的权限提升没有时间限制。用户以root身份想工作多久就可以多久,无需重新验证身份。完成工作后,用户可以发出exit命令,从root恢复到自己的非root帐户。

争议和变化

最近su与sudo的使用存在一些分歧。“真正的[系统管理员]不使用sudo”——Paul Venezia

Venezia在其文章中称,对于许多充当系统管理员的人来说,sudo被用作不必要的道具。他没有用太多的篇幅来捍卫或解释这一立场,只是声称这是事实。我同意他的看法,对于系统管理员来说是这样。我们不需要辅助轮来完成我们的工作。实际上,辅助轮很碍事。

然而,时代在“变化” ——美国民谣之父Bob Dylan是对的。自单人单机时代问世以来,管理计算机的方式发生了显著变化。在许多环境中,计算机的用户也是管理员。因此有必要为那些用户提供root的部分权限。一些现代发行版(比如Ubuntu及衍生版)经配置后,可将sudo命令专门用于特权任务。在那些发行版中,不可能以root用户身份直接登录或者甚至使用su成为root,因此需要sudo命令允许非root用户访问root权限。在这种环境下,所有系统管理任务都使用sudo来执行。

如果锁定root帐户,并将常规用户帐户添加到wheel组,可以进行这种配置。这种配置很容易被规避。

不妨在任何Ubuntu主机或虚拟机上先进行试验。我安装了Ubuntu 16.04 LTS1,并使用VirtualBox将它安装在虚拟机中。我在安装过程中为这个试验创建了一个非root用户student,并使用了一个简单的密码。

以用户student身份登录,打开终端会话。查看/etc/shadow文件中root对应的条目,加密的密码存储在该文件中。

student@ubuntu1:~$ cat /etc/shadowcat: /etc/shadow: Permission denied1.2.

权限被拒绝,因此我们无法查看/etc/shadow文件。这对所有发行版都很常见,旨在防止非特权用户查看和访问加密的密码,不然可以使用常见的黑客工具破解这些密码。现在不妨尝试使用su –成为root。

student@ubuntu1:~$ su -Password: <Enter root password – but there isn't one>su: Authentication fAIlure1.2.3.

左右滑动查看完整代码这会失败,因为root帐户没有密码,被锁在外面。使用sudo命令查看/etc/shadow文件。

student@ubuntu1:~$ sudo cat /etc/shadow[sudo] password for student: <enter the student password>root:!:17595:0:99999:7:::<snip>student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7:::<snip>1.2.3.4.5.6.

左右滑动查看完整代码我截断了输出结果,只显示root和student用户对应的条目。我还缩短了加密的密码,因此条目将放在一行中。字段由冒号(:)隔开,第二个字段是密码。请注意,root的密码字段是bang,即是个感叹号(!)。这表明该帐户已被锁住,无法使用。

现在,要使用root帐户成为真正的系统管理员,就需要为root帐户设置密码。

student@ubuntu1:~$ sudo su -[sudo] password for student: <Enter password for student>root@ubuntu1:~# passwd rootEnter new UNIX password: <Enter new root password>Retype new UNIX password: <Re-enter new root password>passwd: password updated successfullyroot@ubuntu1:~#1.2.3.4.5.6.7.

左右滑动查看完整代码现在您可以直接在控制台上以root身份登录,或者直接使用su成为root,而不是对每个命令使用sudo。当然,每当您想以root身份登录,完全可以就使用sudo su -,但何必劳这个神?

请别误解我的意思。Ubuntu及上下游衍生版之类的发行版非常好,这些年来我就用过其中几个。在使用Ubuntu及相关发行版时,我最先做的事情之一是设置root密码,以便我可以直接以root身份登录。

其他发行版(如Fedora及衍生版)如今在安装过程中提供几个有意思的选择。我注意到这点的第一个Fedora版本是Fedora 34。可以在页面上找到这些安装选项之一,以设置root密码。新选项允许用户以锁定Ubuntu root帐户的方式选择“锁定root帐户”。该页面上还有一个选项,允许使用密码,以root身份远程SSH登录到该主机,但仅当root帐户被解锁时才适用。

页面上的第二个选项允许创建非root用户帐户。该页面上的选项之一是“将该用户设为管理员”。选中该选项后,用户ID被添加到名为wheel组的特殊组中,授权该组成员可以使用sudo命令。Fedora 36甚至在该复选框的描述中提到了wheel组。

可以将多个非root用户设为管理员。使用该方法指定为管理员的任何人都可以使用sudo命令,在Linux计算机上执行所有管理任务。

Linux只允许在安装过程中创建一个非root用户,因此其他新用户可以在创建时添加到wheel组中。root用户或另一个管理员可以使用文本编辑器或usermod命令,将现有用户直接添加到wheel组。在大多数情况下,今天的管理员只需要执行几项基本任务,比如添加新打印机、安装更新或新软件,或者删除不再需要的软件。这些GUI工具需要root或管理员密码,接受指定为管理员的用户输入的密码。

我如何在Linux上使用su和sudo?

我既使用su又使用sudo。它们在我的系统管理员工具箱中都有重要的位置。

我无法锁定root帐户,因为我需要使用它来运行我的Ansible剧本和为执行备份而编写的rsbu Bash程序。这两个命令都需要以root身份运行,我编写的另外几个管理Bash脚本也是如此。我使用su命令将用户切换成root用户,那样我就可以执行这些任务和其他许多常见任务。在确定和解决问题时,使用su将我的权限提升到root尤其有用。

当非root用户需要执行需要root权限的任务时,我将sudo命令用于这些任务。我在sudoers文件中设置了非root帐户,以便只访问完成任务所需的一两个命令。当我只需要运行一两个拥有升级权限的快速命令时,我自己也会使用sudo。

结论

使用哪种工具其实不如完成工作那么重要。使用vim或Emacs、systemd或SystemV、RPM或DEB、sudo或su,并没有那么大的区别。

归根到底,应该使用最顺手、最适合自己的工具。Linux和开源的最大优点之一便是,我们通常都有许多可供选择工具帮助我们完成任务。su和sudo各有优点,适当用于预期的用例时,两者都表现不俗。我偏爱用su处理自己的大部分工作,因为它最适合我和我的工作流程。

参考链接:

ps://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin



Tags:Linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Linux获取Redis 性能指标方法
一、监控指标&Oslash; 性能指标:Performance&Oslash; 内存指标: Memory&Oslash; 基本活动指标:Basic activity&Oslash; 持久性指标: Persistence&Oslash; 错误指标:Error二、监...【详细内容】
2024-04-11  Search: Linux  点击:(10)  评论:(0)  加入收藏
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08  Search: Linux  点击:(10)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  Search: Linux  点击:(26)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  Search: Linux  点击:(18)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25  Search: Linux  点击:(16)  评论:(0)  加入收藏
Linux发行版 Ubuntu 迎更新 界面设计灵感来自 Windows 11
近日,一位第三方开发者推出了一款名为“Wubuntu”的特殊Linux发行版。这款系统源自主流的Ubuntu版本,但在界面设计上却借鉴了微软最新的Windows 11风格,甚至在其中融入了微软标...【详细内容】
2024-02-27  Search: Linux  点击:(54)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27  Search: Linux  点击:(55)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  Search: Linux  点击:(61)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01  Search: Linux  点击:(89)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  Search: Linux  点击:(74)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(10)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(26)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(18)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(16)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(61)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(55)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(61)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(89)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(74)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(94)  评论:(0)  加入收藏
站内最新
站内热门
站内头条