sudo 订阅
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。 展开全文
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。
信息
外文名
sudo(SwitchUer do)
作    用
一个工具
中文名
linux系统管理指令
例    如
halt,reboot,su
sudo特性
它的特性主要有这样几点:§ sudo能够限制用户只在某台主机上运行某些命令。§ sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。§ sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。§ sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440。
收起全文
精华内容
下载资源
问答
  • sudo
    千次阅读
    2020-02-08 16:28:31

    1 创建普通用户 

    useradd yuanyu

    2 修改用户密码

    passwd yuanyu

    3 让普通用户拥有root权限

    https://blog.csdn.net/qq_40794973/article/details/86318141#t18

    visudo

    更多相关内容
  • ubuntu配置sudoLike most things on Linux, the sudo command is very configurable. You can have sudo run specific commands without asking for a password, restrict specific users to only approved commands...
    ubuntu配置sudo

    ubuntu配置sudo

    image

    Like most things on Linux, the sudo command is very configurable. You can have sudo run specific commands without asking for a password, restrict specific users to only approved commands, log commands run with sudo, and more.

    像Linux上的大多数东西一样,sudo命令是非常可配置的。 您可以让sudo运行特定命令而无需输入密码,将特定用户限制为仅允许使用的命令,使用sudo运行日志命令等等。

    The sudo command’s behavior is controlled by the /etc/sudoers file on your system. This command must be edited with the visudo command, which performs syntax-checking to ensure you don’t accidentally break the file.

    sudo命令的行为由系统上的/ etc / sudoers文件控制。 必须使用visudo命令编辑该命令,该命令执行语法检查以确保您不会意外破坏文件。

    指定具有Sudo权限的用户 (Specify Users With Sudo Permissions)

    The user account you create while installing Ubuntu is marked as an Administrator account, which means it can use sudo. Any additional user accounts you create after installation can be either Administrator or Standard user accounts – Standard user accounts don’t have sudo permissions.

    您在安装Ubuntu时创建的用户帐户被标记为管理员帐户,这意味着它可以使用sudo。 安装后创建的任何其他用户帐户都可以是管理员帐户或标准用户帐户–标准用户帐户没有sudo权限。

    You can control user account types graphically from Ubuntu’s User Accounts tool. To open it, click your user name on the panel and select User Accounts or search for User Accounts in the dash.

    您可以从Ubuntu的“用户帐户”工具以图形方式控制用户帐户类型。 要打开它,请在面板上单击您的用户名,然后选择“用户帐户”或在破折号中搜索“用户帐户”。

    image

    使Sudo忘记密码 (Make Sudo Forget Your Password)

    By default, sudo remembers your password for 15 minutes after you type it. This is why you only have to type your password once when executing multiple commands with sudo in quick succession. If you’re about to let someone else use your computer and you want sudo to ask for the password when it runs next, execute the following command and sudo will forget your password:

    默认情况下,sudo在您输入密码后会记住15分钟。 这就是为什么在快速连续使用sudo执行多个命令时,只需键入一次密码的原因。 如果您要让其他人使用您的计算机,并且想让sudo在下次运行时要求输入密码,请执行以下命令,sudo会忘​​记您的密码:

    sudo –k

    须藤–k

    image

    总是要求输入密码 (Always Ask For a Password)

    If you’d rather be prompted each time you use sudo – for example, if other people regularly have access to your computer — you can disable the password-remembering behavior entirely.

    如果希望每次使用sudo时都提示您(例如,如果其他人定期访问您的计算机),则可以完全禁用密码记住行为。

    This setting, like other sudo settings, is contained in the /etc/sudoers file. Run the visudo command in a terminal to open the file for editing:

    与其他sudo设置一样,此设置包含在/ etc / sudoers文件中。 在终端中运行visudo命令以打开文件进行编辑:

    sudo visudo

    苏多维苏多

    In spite of its name, this command defaults to the new-user-friendly nano editor instead of the traditional vi editor on Ubuntu.

    尽管使用了该命令的名称,但该命令默认使用对新用户友好的nano编辑器,而不是Ubuntu上的传统vi编辑器。

    Add the following line below the other Defaults lines in the file:

    在文件的其他“默认值”行下面添加以下行:

    Defaults timestamp_timeout=0

    默认值timestamp_timeout = 0

    image

    Press Ctrl+O to save the file, and then press Ctrl+X to close Nano. Sudo will now always prompt you for a password.

    按Ctrl + O保存文件,然后按Ctrl + X关闭Nano。 Sudo现在将始终提示您输入密码。

    更改密码超时 (Change the Password Timeout)

    To set a different password timeout – either a longer one like 30 minutes or a shorter one like 5 minutes – follow the steps above but use a different value for timestamp_timeout. The number corresponds to the number of minutes sudo will remember your password for. To have sudo remember your password for 5 minutes, add the following line:

    要设置不同的密码超时时间(较长的密码,例如30分钟,较短的密码,例如5分钟),请按照上述步骤操作,但对timestamp_timeout使用不同的值。 该数字对应sudo将记住您的密码的分钟数。 要让sudo记住您的密码5分钟,请添加以下行:

    Defaults timestamp_timeout=5

    默认值为timestamp_timeout = 5

    image

    从不要求输入密码 (Never Ask for a Password)

    You can also have sudo never ask for a password – as long as you’re logged in, every command you prefix with sudo will run with root permissions. To do this, add the following line to your sudoers file, where username is your username:

    您还可以使sudo从不要求输入密码-只要登录,用sudo前缀的每个命令都将以root权限运行。 为此,将以下行添加到您的sudoers文件中,其中username是您的用户名:

    username ALL=(ALL) NOPASSWD: ALL

    用户名ALL =(ALL)NOPASSWD:全部

    image

    You can also change the %sudo line – that is, the line that allows all users in the sudo group (also known as Administrator users) to use sudo – to have all Administrator users not require passwords:

    您还可以更改%sudo行(即允许sudo组中的所有用户(也称为管理员用户)使用sudo的行),以使所有Administrator用户不需要密码:

    %sudo ALL=(ALL:ALL) NOPASSWD:ALL

    %sudo ALL =(全部:全部)NOPASSWD:全部

    在没有密码的情况下运行特定命令 (Run Specific Commands Without a Password)

    You can also specify specific commands that will never require a password when run with sudo. Instead of using “ALL” after NOPASSWD above, specify the location of the commands. For example, the following line will allow your user account to run the apt-get and shutdown commands without a password.

    您还可以指定使用sudo运行时将不需要密码的特定命令。 请指定命令的位置,而不是在上面的NOPASSWD之后使用“ ALL”。 例如,以下行将允许您的用户帐户运行不带密码的apt-get和shutdown命令。

    username ALL=(ALL) NOPASSWD: /usr/bin/apt-get,/sbin/shutdown

    用户名ALL =(ALL)NOPASSWD:/ usr / bin / apt-get,/ sbin / shutdown

    This can be particularly useful when running specific commands with sudo in a script.

    当在脚本中使用sudo运行特定命令时,这特别有用。

    image

    允许用户仅运行特定命令 (Allow a User to Run Only Specific Commands)

    While you can blacklist specific commands and prevent users from running them with sudo, this isn’t very effective. For example, you could specify that a user account not be able to run the shutdown command with sudo. But that user account could run the cp command with sudo, create a copy of the shutdown command, and shut down the system using the copy.

    虽然您可以将特定命令列入黑名单并阻止用户使用sudo运行它们,但这并不是很有效。 例如,您可以指定用户帐户无法使用sudo运行shutdown命令。 但是该用户帐户可以使用sudo运行cp命令,创建shutdown命令的副本,然后使用该副本关闭系统。

    A more effective way is to whitelist specific commands. For example, you could give a Standard user account permission to use the apt-get and shutdown commands, but no more. To do so, add the following line, where standarduser is the user’s username:

    一种更有效的方法是将特定命令列入白名单。 例如,您可以授予标准用户帐户使用apt-get和shutdown命令的权限,但不能再使用其他权限。 为此,添加以下行,其中standarduser是用户的用户名:

    standarduser ALL=/usr/bin/apt-get,/sbin/shutdown

    standarduser ALL = / usr / bin / apt-get,/ sbin / shutdown

    image

    The following command will tell us what commands the user can run with sudo:

    以下命令将告诉我们用户可以使用sudo运行哪些命令:

    sudo -U standarduser –l

    sudo -U standarduser –l

    image

    记录Sudo访问 (Logging Sudo Access)

    You can log all sudo access by adding the following line. /var/log/sudo is just an example; you can use any log file location you like.

    您可以通过添加以下行来记录所有sudo访问。 / var / log / sudo只是一个例子; 您可以使用任何喜欢的日志文件位置。

    Defaults logfile=/var/log/sudo

    默认日志文件= / var / log / sudo

    image

    View the contents of the log file with a command like this one:

    使用以下命令查看日志文件的内容:

    sudo cat /var/log/sudo

    须藤猫/ var / log / sudo

    image

    Bear in mind that, if a user has unrestricted sudo access, that user has the ability to delete or modify the contents of this file. A user could also access a root prompt with sudo and run commands that wouldn’t be logged. The logging feature is most useful when coupled with user accounts that have restricted access to a subset of system commands.

    请记住,如果用户具有不受限制的sudo访问权限,则该用户可以删除或修改此文件的内容。 用户还可以使用sudo访问根提示符,并运行不会记录的命令。 与限制访问系统命令子集的用户帐户结合使用时,日志记录功能最有用。

    翻译自: https://www.howtogeek.com/116757/8-ways-to-tweak-and-configure-sudo-on-ubuntu/

    ubuntu配置sudo

    展开全文
  • sudo 命令

    万次阅读 2021-07-04 10:46:58
    1、sudo 简介 sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对...

    1、sudo 简介

    sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。(百度百科)

    su 命令
    su是最简单的身份切换命令,一般都是su - username,然后输入password就ok了,root用su至其他用户无须密码;但非root用户切换时需要密码。切换到root可以使用su -和su - root。

    • 切换用户的方式:
      su UserName:非登录式切换,即不会读取目标用户的配置文件
      su - UserName:登录式切换,会读取目标用户的配置文件;完全切换

    • 换个身份执行命令:
      su [-] UserName -c ‘COMMAND’
      选项:
      -l:“su -l UserName”相当于“su - UserName”
      -c: 仅执行一次命令,而不切换用户身份

    2、sudo的特性

    • sudo 能够授权指定用户在指定主机上运行某些命令。 如果未授权用户尝试使用 sudo,会提示联系管理员。
    • sudo 可以提供日志,记录每个用户使用sudo操作,以便于日后审计。
    • sudo 为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。
    • sudo 默认存活期为5分钟。

    编辑配置文件的方式

    # sudoedit /etc/sudoers
    # vim /etc/sudoers
    # visudo
    

    visudo –c 命令具有语法检查功能,和crontab -e编辑后退出检查语言功能类似。

    3、sudo相关文件

    配置文件: /etc/sudoers, /etc/sudoers.d/
    时间戳文件: /var/db/sudo
    日志文件: /var/log/secure
    配置文件支持使用通配符glob:

    ?:任意单一字符
    * :匹配任意长度字符
    [wxc]:匹配其中一个字符
    [!wxc]:除了这三个字符的其它字符
    \x : 转义
    [[alpha]] :字母 示例: /bin/ls [[alpha]]*
    

    配置文件规则有两类

    • 别名定义:不是必须的,别名必须全部而且只能使用大写英文字母的组合
    • 授权规则:必须的
    • 用户别名
      在这里插入图片描述

    4、sudo语法

    • who which_hosts=(runas) command
      被管理主机地址【访问主机】
      允许哪一个用户,执行某一条命令在哪一台主机上
      谁(who)能够以哪个用户(runas)的身份通过什么主机(which host)执行什么命令(command)。

      user: 运行命令者的身份
      host: 通过哪些主机
      (runas): 以哪个用户的身份
      command: 运行哪些命令
      在这里插入图片描述

    • sudo授权示例
      在这里插入图片描述
      user1 ALL=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod

    • 常用的标签
      PASSWD:执行被授权的命令之前,必须输入密码进行身份验证
      NOPASSWD:执行被授权的命令之前,无需输入密码进行身份验证
      注意:PASSWD、NOPASSWD等标签只能在授权项中使用,不能在别名中使用。

    5、sudo命令

    sudo -u centos 切换身份
    -V 显示版本信息等配置信息 
    -u user 默认为root 
    -l  列出当前用户可以使用的所有sudo命令
    -v 再延长密码有效期限5分钟,更新时间戳 
    -k  认证信息失效,清除时间戳(1970-01-01),下次需要重新输密码 
    -b 在后台执行指令 
    

    6、总结

    • su方式切换是须要输入目标用户的password。而sudo仅仅须要输入自己的password,所以sudo能够保护目标用户的password不对外泄漏。

    • sudo授权时passwd,su,sudo,sudoedit,visudo等具有特殊意义的命令时,务必要考虑全面(例如禁止修改root用户的密码等操作)。

    • 仔细看了sudo的配置文件发现sudo的which_hosts表示允许哪一个IP地址或网络访问当前主机,这种说法不对。通常能用到这个参数的场景不多,一般在有NIS服务或集中管理的时候,其实就是管理所有主机的管理策略在一台主机上编辑sudoers这个文件,然后将它推到所有主机。

      man帮助文件显示该参数的正确含义:
      #jack可以运行任何命令在定义地CSNET(128.138.243.0, 128.138.242.0和128.138.204.0/24的子网)中,不过注意前两个不需要匹配子网掩码因为是本地主机地址,而最后一个必须匹配掩码因为是网络地址。
      jack CSNETS = ALL
      #lisa可以运行任何命令在定义为CUNETS(128.138.0.0)的子网中主机上。
      lisa CUNETS = ALL

    展开全文
  • 升级Linux下的sudo

    千次阅读 2020-02-08 23:59:59
    sudo官网爆出目前sudo工具的一个高危漏洞,漏洞编号为:CVE-2019-18634,黑客可通过工具获得Linux的root权限(root具有Linux操作系统的最高权限)。 sudo官网 : ...

    1、sudo 命令情景分析

    介绍

    Linux 下使用 sudo 命令,可以让普通用户也能执行一些或者全部的 root 命令。本文就对我们常用到 sudo 操作情景进行简单分析,通过一些例子来了解 sudo 命令相关的技巧。

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

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

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

    授权给单个用户:
    在这里插入图片描述
    上面这个例子中:

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

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

    举例:

    如果当前帐号在 /etc/sudoers 文件中被授予 sudo 的权限,那么你就可以将任何 root 命令作为 sudo 命令的参数,使用 root 权限来执行该命令。举例来说,挂载一个文件系统只能由 root 来执行,但是一个普通用户也可以使用 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 的内置命令,如:
    在这里插入图片描述
    在这种情况,我们又没有 root 账户的密码,我们怎样执行该命令呢?有种办法就是使用 sudo 获得root shell 的权限,然后在root shell 中执行该命令。进入root shell 很简单,输入sudo bash 确认本用户的密码即可,此时你会发现命令提示符显示当前是 root。一旦获得root shell,你可以执行任何命令而不需要在每条命令前输入sudo了。

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

    另外,常用的shell 内置命令在这里 有简单介绍,我们可以使用 type 命令来查看命令的类型,如:
    在这里插入图片描述

    情景五:sudo 操作记录日志

    作为一个 Linux 系统的管理员,不仅可以让指定的用户或用户组作为root用户或其它用户来运行某些命令,还能将指定的用户所输入的命令和参数作详细的记录。而sudo的日志功能就可以用户跟踪用户输入的命令,这不仅能增进系统的安全性,还能用来进行故障检修。但是要记录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
    在这里插入图片描述
    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 < /tmp/pty    Password: Segmentation fault (core dumped)
    

    2.在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)
    

    3.解决方法

    1、临时解决方法:

    修改/etc/sudoers 文件,关闭pwfeedback 功能,把该文件中下面这行:

    Defaults pwfeedback
    改为
    
    Defaults !pwfeedback
    

    我们检查一下我们系统:
    在这里插入图片描述

    2、彻底解决方法:

    升级系统的sudo,升级到最新的版本1.8.31以上即可.
    2.下载最新安装包(1.8.28) wget http://www.sudo.ws/dist/sudo-1.8.28p1.tar.gz
    3.编译升级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: " && make
    

    在这里插入图片描述
    在这里插入图片描述
    4.安装 [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版本

    版本号 < 1.8.28的Sudo版本均将受到该漏洞的影响。
    

    漏洞修复

    Sudo v1.8.28版本已修复该漏洞,建议广大Linux用户尽快手动将sudo包更新至最新版本。
    

    参考链接 :
    sudo 命令情景分析! : https://mp.weixin.qq.com/s/Htmnqmgf7vCnSwCV7ZbDug
    升级sudo : https://blog.csdn.net/heqiubing/article/details/102685017

    CVE-2019-14287:sudo权限绕过漏洞分析与复现 : https://www.freebuf.com/vuls/217089.html

    展开全文
  • linux给用户添加sudo权限

    千次阅读 2021-07-14 13:50:51
    一、linux给用户添加sudo权限: 有时候,linux下面运行sudo命令,会提示类似: xxxis not in the sudoers file. This incident will be reported. 这里,xxx是用户名称,然后导致无法执行sudo命令,这时候,如下解决...
  • ubuntu避免每次都输入sudo

    千次阅读 2022-04-24 11:17:08
    sudo visudo 该文件在/etc/sudoers,无需切换目录,直接输入上述快捷指令即可打开 二、更改 #User privilege specification root ALL=(ALL:ALL) ALL 在下面添加 your_username ALL=(ALL:ALL) ALL 三、离开 1.Ctrl+o...
  • linux sudo简介

    千次阅读 2022-03-27 16:58:47
    为什么需要sudo? 在linux中,如果你是普通用户,想要执行管理员才有权限的命令,那么大概有以下三种途径: 通过su - root 命令切换为root用户,这时必须知道root的密码(可能造成root用户的泄露) 把自己加入到...
  • 最最详细sudo命令详解

    千次阅读 2021-09-22 14:42:25
    sudo允许一个被批准的用户以超级用户或者另外一个用户的身份去执行命令,执行该命令的真实用户id被用于确定查询安全策略的用户名 sudo提供了一个插件架构用于安全策略和输入输出日志,第三方可以开发和发布自己的...
  • linux sudo命令工具安装

    千次阅读 2022-01-22 16:31:43
    sudo command is used to execute command as another user. This is generally used to run command as root. In some cases we can get an error like -bash:sudo:command not found which means sudo is not ...
  • sudo 命令、配置

    万次阅读 2019-04-27 21:36:18
    通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的。sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),...
  • sudo命令免密码 sudo免密码

    千次阅读 2021-02-05 21:03:23
    云服务上的普通用户可以免密码使用sudo,而我们的却不行,看来得配置一下,在网上查了资料有了答案,分享一下 虽然这样有安全隐患,但是我们只是个人用户,不是几个人共用一个系统,每次sudo都要输密码很烦人 切换...
  • sudo -l 查看sudo的权限; su是申请切换root用户,需要申请root用户密码。有些Linux发行版,例如ubuntu,默认没有设置root用户的密码,所以需要我们先使用sudo passwd root设置root用户密码。 而sudo su是当前用户...
  • linux SUDO提权

    千次阅读 2022-04-15 20:39:08
    要想使一个用户具有使用sudo的能力,需要让root用户将其名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息注册到/etc/sudoers文件中,即完成对该用户的授权(此时该用户称为“sudoer”)才可以。...
  • Linux系统安装sudo

    千次阅读 2022-01-25 02:12:23
    apt-get install sudo 如果有 0 upgraded, 1 newly installed, 0 to remove and 80 not upgraded. 这种报错提示,说明 apt 没更新,输入指令: apt-get update 然后再输入开头的那个指令 apt-get install sudo ...
  • sudo 与 su 两个命令的最大区别是: sudo 命令需要输入当前用户的密码, su 命令需要输入 root 用户的密码。 另外一个区别是其默认行为。 sudo 命令只允许使用提升的权限运行单个命令, 而 su 命令会启动一个新的 ...
  • sudo提权详解

    千次阅读 2020-01-06 10:37:31
    一、sudo命令 二、渗透提权思路 三、蓝队防御思路
  • su -sudo bashsudo sh背景在Linux (和Unix一般)中,有一个名为SuperUser的root,SuperUser可以做所有事情,因此用SuperUser进行日常工作很危险,错误地键入命令会销毁系统。su -此命令用于登录root帐户,默认情况下...
  • Ubuntu20.04 sudo免密码

    千次阅读 2021-08-05 17:17:59
    第2步:设置某一用户组下面的所有用户sudo指令都免密码,有sudo权限的用户通常属于sudo组,可以使用groups指令来查看,此处需要在/etc/sudoers添加下图红框中的任意一行: 注:本人指令groups指令时得到的结果为yll...
  • sudo常用命令】sudo apt-get autoremove

    千次阅读 2021-01-05 10:35:29
    sudo apt-get autoremove 用了就死,系统文件都tnd给你删光了!!!千万别用! sudo apt-get remove – 卸载软件包 sudo apt-get autoremove – 卸载所有自动安装且不再使用的软件包 sudo apt-get purge – 卸载并...
  • linux中sudo命令sudo or superuser do is a utility used on Linux, BSD, and Unix systems that provides the running command with root or Administrator privileges. Not every user needs to have root ...
  • sudo 详解

    千次阅读 多人点赞 2019-05-01 09:52:52
    1、sudo 简介 sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对...
  • sudo命令,配置sudo不要密码

    千次阅读 2020-10-12 10:59:19
    sudo命令 sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,...
  • sudo命令详解

    万次阅读 多人点赞 2019-02-19 09:48:16
    简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。 严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,...
  • Ubuntu中sudo命令

    千次阅读 2019-01-31 11:22:12
    sudo是linux下常用的允许普通用户使用超级用户权限的工具,该命令为管理员提供了一种细颗粒度的访问控制方法,通过它人们既可以作为超级用户 又可以作为其它类型的用户来访问系统。这样做的好处是,管理员能够在不...
  • sudo 失败的解决办法

    千次阅读 2021-12-13 09:53:05
    sudo: /etc/sudoers is world writable sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin 这个是linux为保证系统安全所做的限制, 解决方法: 在terminal窗口下,依次...
  • 升级sudo至1.9.5p2,修复sudo漏洞

    千次阅读 2021-01-27 19:09:23
    升级sudo至1.9.5p2,修复sudo漏洞 ** 今天2021年1月27号,出现了新漏洞,有关sudo的。漏洞的详细内容你们就去百度吧,我们又不是系统开发人员,不需要了解那么多,只求怎么解决修复即可,然后为了方便,我简单整了个...
  • sudo 命令的两个错误解决

    千次阅读 2021-07-26 16:27:55
    ln -sfv libsudo_util.so.0.0.0 /usr/lib/sudo/libsudo_util.so.0 生成了一下,然后就无法使用sudo了 错误提示1: 使用sudo后,不提示输入密码,直接报错。 Sorry, try again. Sorry, try again. sudo: 1 incorr...
  • 如何在脚本中运行’sudo’命令?

    千次阅读 2021-08-09 09:10:45
    sudo ./playback_delete_data_patch.sh 09_delete_old_data_p.sql 09之前有一个空间: sudo ./playback_delete_data_patch.sh [space] 09_delete_old_data_p.sql 如何在脚本中运行它? 还有其他一些命令但是这个命令...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,298,271
精华内容 519,308
关键字:

sudo