iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux系统如何升级当前sudo版本
  • 536
分享到

Linux系统如何升级当前sudo版本

2023-06-28 12:06:30 536人浏览 安东尼
摘要

这篇文章跟大家分析一下“linux系统如何升级当前sudo版本”。内容详细易懂,对“Linux系统如何升级当前sudo版本”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Linux

这篇文章跟大家分析一下“linux系统如何升级当前sudo版本”。内容详细易懂,对“Linux系统如何升级当前sudo版本”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Linux系统如何升级当前sudo版本”的知识吧。

情景一:用户无权限执行 root 命令

普通用户登录 shell 之后,如果自身没有权限访问某个文件或执行某个命令时,若该用户获得root授权,那么就可以在需要执行的命令之前加上 sudo,临时切换到root用户的权限,完成相关的操作。在sudo于1980年前后被写出之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码,而sudo使一般用户不需要知道超级用户的密码即可获得权限。

那么哪些用户可以临时获得 root 权限呢?这就需要在 /etc/sudoers 文件中进行配置:

授权给单个用户: Linux系统如何升级当前sudo版本 上面这个例子中:

 guohl:允许使用 sudo 的用户名 ALL:允许从任何终端(任何机器)使用 sudo (ALL):允许以任何用户执行 sudo 命令 ALL:允许 sudo 权限执行任何命令 1234

如果我们想让用户 test 只能在本主机(主机名为guohl-pc)以 root 账户执行/bin/chown、/bin/chmod 两条命令,那么就应该这样配置: Linux系统如何升级当前sudo版本 和授权给单个用户类似,只不过将用户名在这里换成%组名,所有在该组中的用户都按照此规则进行授权。对于该例,所有在 sudo 组内的用户都有在任何终端(第一个ALL)、以任何用户(第二个ALL)、执行任何命令(第三个ALL)的权限,查看 /etc/group 文件可以知道哪些用户属于 sudo 组。

举例:

如果当前帐号在 /etc/sudoers 文件中被授予 sudo 的权限,那么你就可以将任何 root 命令作为 sudo 命令的参数,使用 root 权限来执行该命令。举例来说,挂载一个文件系统只能由 root 来执行,但是一个普通用户也可以使用 sudo 来挂载: Linux系统如何升级当前sudo版本 首次使用会要求你输入当前用户的密码,系统确实输入正确即以 root 权限来执行 mount 命令,接下来一段时间(默认为5分钟)再次使用 sudo 命令就不需要输密码了。

情景二:vim 编辑后发现忘记使用 sudo

我们经常会遇到这样的一个囧境:使用 vim 对某个文件进行编辑,编辑完之后,按 ESC 之后回到普通模式,再按 :wq 准备保存退出时,发现没有权限对该文件进行修改,我们在使用 vim 命令时忘记在前面加 sudo 了。我就经常出现这种问题,之前的做法是只能不保存强退,再加上 sudo 重新编辑。

但是今后我们再也不需要用这么愚蠢的做法了,我们可以在 vim 的普通模式下,按 :w !sudo tee % ,这样就可以 root 权限来保存文件了,你也无需因为自己一时忘记加个 sudo 而沮丧懊恼了!

情景三:执行 root 命令忘记加 sudo

我们还会遇到这样稍微好一点的情形:输入一个长长的命令,按 Enter 之后出现无权限操作,因为我们忘记加 sudo 了。大多人的做法是按 ↑ 回到上一条命令,在该命令之前加上 sudo,再执行该命令。

以后,我们无需这样了,只要输入 sudo !! 即可,这里的 !! 代表上一条命令。如:

情景四:shell 内置命令如何使用 sudo

shell 是一个交互式的应用程序,在执行外部命令时通过 fork 来创建一个子进程,再通过 exec 来加载外部命令的程序来执行,但是如果一个命令是 shell 内置命令,那么只能直接由 shell 来运行。sudo 的意思是,以别的用户(如root)的权限来 fork 一个进程,加载程序并运行,因此 sudo 后面不能跟 shell 的内置命令,如: Linux系统如何升级当前sudo版本 在这种情况,我们又没有 root 账户的密码,我们怎样执行该命令呢?有种办法就是使用 sudo 获得root shell 的权限,然后在root shell 中执行该命令。进入root shell 很简单,输入sudo bash 确认本用户的密码即可,此时你会发现命令提示符显示当前是 root。一旦获得root shell,你可以执行任何命令而不需要在每条命令前输入sudo了。

另外,常用的shell 内置命令在这里 有简单介绍,我们可以使用 type 命令来查看命令的类型,如: Linux系统如何升级当前sudo版本 在这种情况,我们又没有 root 账户的密码,我们怎样执行该命令呢?有种办法就是使用 sudo 获得root shell 的权限,然后在root shell 中执行该命令。进入root shell 很简单,输入sudo bash 确认本用户的密码即可,此时你会发现命令提示符显示当前是 root。一旦获得root shell,你可以执行任何命令而不需要在每条命令前输入sudo了。

另外,常用的shell 内置命令在这里 有简单介绍,我们可以使用 type 命令来查看命令的类型,如: Linux系统如何升级当前sudo版本

情景五:sudo 操作记录日志

作为一个 Linux 系统的管理员,不仅可以让指定的用户或用户组作为root用户或其它用户来运行某些命令,还能将指定的用户所输入的命令和参数作详细的记录。而sudo的日志功能就可以用户跟踪用户输入的命令,这不仅能增进系统的安全性,还能用来进行故障检修。但是要记录sudo的日志还要一些简单的配置: Linux系统如何升级当前sudo版本 Linux系统如何升级当前sudo版本 参考资料:

 sudo mannual 7 Linux sudo Command Tips and Tricks sudo 日志配置

2、升级Linux下的sudo

sudo官网爆出目前sudo工具的一个高危漏洞,漏洞编号为:CVE-2019-18634,黑客可通过工具获得Linux的root权限(root具有Linux操作系统的最高权限)。 sudo官网 : https://www.baidu.com/link?url=uPPtTshELZs5FFJ9ZRoL7_TFdhQ2kUUFFaeRxc5O6ky&wd=&eqid=c8bdbe7c006e2eb9000000045e3ed4ca Linux系统如何升级当前sudo版本 sudo 是Unix和Linux操作系统广泛使用的工具,这次漏洞是一个是一个堆栈缓冲溢出 bug,这个漏洞在启用了 pwfeedback 的系统中很容易利用,该漏洞让非特权用户很容易通过缓冲溢出获得 root 权限,不需要攻击者有 Sudo 使用权限。

在 Sudo 上游版本中,pwfeedback 没有默认启用,但在下游发行版如 Linux Mint 和 Elementary OS 中,pwfeedback 被默认启用了。主要影响的版本:从v1.7.1 到 1.8.25p1,ubuntu版本不受该漏洞影响,最新的1.8.31已修复了该漏洞,请大家及时更新到最新的版本。

1.查看自己系统是否存在该漏洞

1、先通过sudo –version命令查看当前sudo的版本信息。

 $ sudo --version Sudo version 1.8.25p1Sudoers policy plugin version 1.8.25p1Sudoers file grammar version 46Sudoers I/O plugin version 1.8.25p1

2、通过sudo -l查看 pwfeedback是否启用,如果存在pwfeedback字样则说明已启用否则没有;

 $ sudo -l    Matching Defaults entries for millert on linux-build:insults, pwfeedback, mail_badpass, mailerpath=/usr/sbin/sendmail    User millert may run the following commands on linux-build:(ALL : ALL) ALL

2.如何利用该漏洞

1、在1.8.26之前的版本

利用该漏洞,不需要登录的用户有sudo权限,可以利用无法写入的伪终端,向sudo -k 传入超长字符串。原文为:The bug can be reproduced by passing a large input with embedded terminal kill characters to sudo from a pseudo-terminal that cannot be written to.

 For example, using the socat utility and assuming the terminal kill character is set to control-U (0x15):    $ socat pty,link=/tmp/pty,waitslave exec:"perl -e 'print((\"A\" x 100 . chr(0x15)) x 50)'" &    $ sudo -S -k id

在1.8.26之后的版本,只要向sudo 传输一个超长字符串For sudo versions prior to 1.8.26, and on systems with uni-directional pipes, reproducing the bug is simpler. Here, the terminal kill character is set to the NUL character (0x00) since sudo is not reading from a terminal. This method is not effective in newer versions of sudo due to a change in EOF handling introduced in 1.8.26. $ perl -e 'print(("A" x 100 . chr(0)) x 50)' | sudo -S -k id    PassWord: Segmentation fault (core dumped)

解决方法

临时解决方法:修改/etc/sudoers 文件,关闭pwfeedback 功能,把该文件中下面这行: Defaults pwfeedback

 改为Defaults !pwfeedback,检查一下我们系统

彻底解决方法:升级系统的sudo,升级到最新的版本1.8.31以上即可. 2.下载最新安装包(1.8.28) wget Http://www.sudo.ws/dist/sudo-1.8.28p1.tar.gz 

编译升级sudo的版本 #ls

 [root@localhost ~/sudo-1.8.28p1]# ./configure --prefix=/usr --libexecdir=/usr/lib --with-secure-path --with-all-insults --with-env-editor --docdir=/usr/share/doc/sudo-1.8.28.p1 --with-passprmpt="[sudo] password for %p: " && make12  

安装 

[root@localhost sudo-1.8.28p1]# make install && ln -sfv libsudo_util.so.0.0.0 /usr/lib/sudo/libsudo_util.so.0  5.[root@localhost sudo-1.8.28p1]# sudo –version 

升级sudo的版本 CVE-2019-14287:sudo权限绕过漏洞分析与复现漏洞概述有的用户可能知道,如果将sudo配置为允许用户通过Runas规范中定义的ALL关键字来以任意用户身份运行命令的话,那么攻击者将有可能通过制定用户ID -1或4294967295来以root权限执行恶意命令。实际上,只要用户的权限足够高,即拥有最高sudo权限的用户,并且在Runas规范中定义了ALL关键字的话,他们就可以运行Runas规范中明确禁止使用的那些root命令,而且以这种方式运行的命令其日志项所显示的目标用户为4294967295,而不是root。与此同时,在执行相应命令的过程中,PAM会话模块将不会运行。

Sudo 的全称是“superuserdo”,它是Linux系统管理指令,允许用户在不需要切换环境的前提下以其它用户的权限运行应用程序或命令。通常以 root 用户身份运行命令,是为了减少 root 用户的登录和管理时间,同时提高安全性。2019年10月14日,Sudo官方发布了Sudo 1.8.28版本,其中包含sudo root权限绕过漏洞(CVE-2019-14287)的补丁修复。CVE ID CVE为该漏洞分配的漏洞CVE编号为CVE-2019-14287。漏洞细节分析一般情况下,大多数Linux发行版的Runas规范(/etc /sudoers)都如下图所示,其中定义的ALL关键字将允许admin或sudo组中的用户以目标系统中的任意用户身份来运行命令:  如果想利用该漏洞来实施攻击,用户需要拥有sudo权限,并允许用户使用任意用户ID来运行命令。通常来说,这意味着用户的sudoer项在Runas规范中定义了特殊的ALL值。如果sudoer策略允许的话,sudo支持由用户指定的用户名或用户ID来运行命令。比如说,下列sudoer项允许我们以任意用户的身份来运行id命令,因为在Runas规范中它包含了ALL关键字。 alice myhost = (ALL) /usr/bin/id除了以任意有效用户的身份运行id命令之外,我们还能够以任意用户ID来运行该命令,此时需要使用#uid语句: sudo -u#1234 id -u该命令将返回“1234”。但是,sudo可以使用setresuid(2)和setreuid(2)这两个系统调用来在命令运行之前修改用户ID,并将用户ID修改为-1(或未签名的等价用户ID-4294967295): sudo -u#-1 id -u或 sudo -u#4294967295 id -u上述命令运行之后,将返回“0”。这是因为sudo命令本身已经在以用户ID“0”运行了,所以当sudo尝试将用户ID修改为“-1”时,不会发生任何变化。但是,sudo日志条目中记录下的命令运行用户的ID为“4294967295”,而并非root用户(或用户ID为“0”),除此之外,因为用户ID是通过-u选项指定的,并且不会在密码数据库中存储,所以PAM会话模块也不会运行。如果sudoer条目允许用户以任意用户身份运行命令(非root),那么攻击者就可以利用该漏洞来绕过这种限制了。比如说,我们有下列sudoer条目: bob myhost = (ALL, !root) /usr/bin/vi用户bob能够以除了root之外的其他任意用户身份来运行命令vi,但由于该漏洞的存在,bob实际上能够通过下列命令来以root权限运行vi命令,并绕过目标系统中的安全策略: sudo -u#-1 vi只有当包含了ALL关键词的sudoer条目存在于Runas规范中时,该漏洞才存在。比如说,如果规范中包含下列sudoer条目的话,目标系统是不会受到该漏洞影响的: alice myhost = /usr/bin/id在上述例子中,alice只能够以root权限运行id命令,任何以不同身份用户运行命令的尝试都将被拒绝。攻击场景截图:  漏洞复现截图:  受影响的Sudo版本 版本号 漏洞修复 Sudo v1.8.28版本已修复该漏洞,建议广大Linux用户尽快手动将sudo包更新至最新版本。

Linux的版本有:Deepin、ubuntuKylin、Manjaro、LinuxMint、Ubuntu等版本。其中Deepin是国内发展最好的Linux发行版之一;UbuntuKylin是基于Ubuntu的衍生发行版;Manjaro是基于Arch的Linux发行版;LinuxMint默认的Cinnamon桌面类似windows XP简单易用;Ubuntu则是以桌面应用为主的Linux操作系统。

关于Linux系统如何升级当前sudo版本就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下编程网网站!

--结束END--

本文标题: Linux系统如何升级当前sudo版本

本文链接: https://www.lsjlt.com/news/319533.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux系统如何升级当前sudo版本
    这篇文章跟大家分析一下“Linux系统如何升级当前sudo版本”。内容详细易懂,对“Linux系统如何升级当前sudo版本”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Linux...
    99+
    2023-06-28
  • linux如何查看当前系统版本
    这篇文章主要介绍linux如何查看当前系统版本,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!查看当前系统版本你可能经常使用以下方法查看系统的版本:[root@sta ~]# cat &n...
    99+
    2023-06-27
  • 如何查看当前Linux系统的版本
    这篇文章主要介绍“如何查看当前Linux系统的版本”,在日常操作中,相信很多人在如何查看当前Linux系统的版本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何查看当前Linux系统的版本”的疑惑有所帮助!...
    99+
    2023-07-04
  • macbookpro如何升级系统版本
    这篇文章主要介绍了macbookpro如何升级系统版本的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇macbookpro如何升级系统版本文章都会有所收获,下面我们一起来看看吧。...
    99+
    2022-12-28
    macbookpro
  • win10系统版本如何升级
    要升级Win10系统版本,可以按照以下步骤进行操作:1. 打开“设置”应用程序:点击“开始”菜单,然后点击“设置”图标(齿轮状)。2...
    99+
    2023-08-31
    win10
  • xp系统如何升级win11系统版本
    这篇文章主要介绍“xp系统如何升级win11系统版本”,在日常操作中,相信很多人在xp系统如何升级win11系统版本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”xp系统如何升级win11系统版本”的疑惑有所...
    99+
    2023-07-01
  • 升级 Linux 系统中的 Python 版本
    升级 Linux 系统中的 Python 版本 Python 是一种非常流行的编程语言,广泛应用于各种领域,包括 Web 开发、数据分析等。而对于 Linux 系统来说,Python 更是一个必须的组...
    99+
    2023-09-05
    linux 运维 服务器 python
  • 如何升级Ubuntu Server系统版本
    这篇文章主要讲解了“如何升级Ubuntu Server系统版本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何升级Ubuntu Server系统版本”吧!你可能已经知道如何将你的 Ubun...
    99+
    2023-06-13
  • WIN7如何升级到WIN10系统版本
    今天小编给大家分享一下WIN7如何升级到WIN10系统版本的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。升级步骤方法一:系统...
    99+
    2023-07-01
  • 云服务器如何升级系统版本
    云服务器升级系统版本的步骤如下:1.备份数据:在升级之前,务必先备份服务器上的重要数据,以防止数据丢失。2.检查系统要求:确保新的系...
    99+
    2023-08-08
    云服务器
  • 如何升级Cacti系统到最新版本
    要升级Cacti系统到最新版本,您可以按照以下步骤操作: 备份数据:在进行升级之前,务必备份Cacti系统的数据和配置文件,以防...
    99+
    2024-03-15
    Cacti
  • Linux系统之升级内核版本方法
    Linux系统之升级内核版本方法 一、检查本地系统环境1.检查系统版本2.检查系统内核版本 二、小版本升级内核1.列出yum仓库的内核包版本2.升级内核3.重启并检查内核版本 三、大版本升级内核1.导入公钥2.下载并安装el...
    99+
    2023-08-18
    linux 运维 服务器 kernel
  • Linux下如何升级node版本
    本篇内容介绍了“Linux下如何升级node版本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、清除缓存信息sudo npm&n...
    99+
    2023-06-27
  • Linux中如何升级python版本
    这篇文章主要介绍了Linux中如何升级python版本的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux中如何升级python版本文章都会有所收获,下面我们一起来看看吧。1、下载python版本  wge...
    99+
    2023-06-28
  • 如何提前升级win11系统
    本篇内容介绍了“如何提前升级win11系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先我们可以下载一个专业的win11检测软件,查看我...
    99+
    2023-07-01
  • Centos系统下Python版本升级
    这篇文章是之前写的在centos6下从python2.6升级到2.7的过程,升级到3.0以上版本的过程跟这个一样,懒得改了。在使用Centos6时,由于系统自带的python版本为2.6.6,而2.x版本中当前普遍使用的为2.7版本,所以...
    99+
    2023-01-31
    版本 系统 Centos
  • 纯净版系统win10如何升级
    这篇文章主要介绍了纯净版系统win10如何升级的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇纯净版系统win10如何升级文章都会有所收获,下面我们一起来看看吧。升级win10系统详细步骤: 插入U盘打开运行U盘...
    99+
    2023-07-01
  • win7旗舰版系统如何升级win10系统
    win7旗舰版系统是微软的经典操作系统。该系统win7功能最全面,稳定性也很好。毕竟,该系统相对较老。现在win10是主流,所以小编仍然建议您升级。有没有办法将win7旗舰版升级到win10系统?我们来讨论一下win7旗舰版升级win10的...
    99+
    2023-07-10
  • win10版本1803无法升级1903系统如何解决
    这篇文章主要介绍“win10版本1803无法升级1903系统如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win10版本1803无法升级1903系统如何解决”文章能帮助大家解决问题。方法:一...
    99+
    2023-07-01
  • 如何升级nodejs版本
    如何升级nodejs版本,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。升级方法:1、使用“npm cache clean -f”命令清除npm...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作