linux 第7章 sudo linux 第7章 sudo

2022-07-18

一、概念

Sudo 的全称为:super user do。 顾名思义:干超级用户才能干的事!所以 Sudo 最常用的功能就是提升一个命名的执行权限。

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

sudo 不是对 shell 的一个代替,它是面向每个命令的。

二、特性

它的特性主要有这样几点:

  • sudo 能够限制用户只在某台主机上运行某些命令。

  • sudo 提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。

  • sudo 使用时间戳文件来执行类似的“检票”系统。当用户调用 sudo 并且输入它的密码时,用户获得了一张存活期为 5 分钟的票(这个值可以在编译的时候改变)。

  • sudo 的配置文件是 sudoers 文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在 /etc/sudoers,属性必须为 0440。

三、原理

在 sudo 于 1980 年前后被写出之前,一般用户管理系统的方式是利用 su 切换为超级用户。但是使用 su 的缺点之一在于必须要先告知超级用户的密码。 

sudo 使一般用户不需要知道超级用户的密码即可获得权限。

首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”)

在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时 sudo 将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。

之后的一段时间内(默认为 5 分钟,可在 /etc/sudoers 自定义),使用 sudo 不需要再次输入密码。由于不需要超级用户的密码,部分 Unix 系统甚至利用 sudo 使一般用户取代超级用户作为管理帐号,例如 Ubuntu、Mac OS X 等。

四、sudo命令

  • sudo : 暂时切换到超级用户模式以执行超级用户权限,一般指的是 root 用户,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu 默认为一次时长 15 分钟。

  • su :切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为 root 账户,密码也为超级账户的密码。没有时间限制。

  • sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout”。要求执行该命令的用户必须在sudoers 中才可以。

  • sudo su 运行 sudo 命令给 su 命令提权,运行 su 命令。要求执行该命令的用户必须在 sudoers 中才可以。

  • sudo [-bhHpV][-s ][-u <用户>][指令] 或 sudo [-klv] 参数

    • -b 在后台执行指令。

    • -h 显示帮助。

    • -H 将 HOME 环境变量设为新身份的 HOME 环境变量。

    • -k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。

    • -l 列出目前用户可执行与无法执行的指令。

    • -p 改变询问密码的提示符号。

    • -s 执行指定的shell。

    • -u <用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。

    • -v 延长密码有效期限5分钟。

    • -V 显示版本信息。

    • -S 从标准输入流替代终端来获取密码

五、sudo程序相关文件

  • /etc/sudoers

  • /etc/init.d/sudo

  • /etc/pam.d/sudo

  • /var/lib/sudo

  • /usr/share/doc/sudo

  • /usr/share/lintian/overrides/sudo

  • /usr/share/bash-completion/completions/sudo

  • /usr/bin/sudo

  • /usr/lib/sudo

六、基本配置

useradd testuser
passwd testuser

https://file.lulublog.cn/images/3/2023/05/S2EaEbYkBAb7B4aA27wNAJ7MGA27e5.jpg

chmod -v u+w /etc/sudoers
vim /etc/sudoers
testuser ALL=(ALL) NOPASSWD:ALL

https://file.lulublog.cn/images/3/2023/05/CjJzfYyN1BxazP05bT8RjtzBNr0PTt.jpg

如需新用户使用 sudo 时需要输密码

testuser ALL=(ALL) ALL
chmod -v u-w /etc/sudoers

如果要删除用户

userdel -r testuser

删除后 etc/sudoers 中还是存在 testuser 的 sudo 的配置,需要手动删除该配置

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

阅读 577

linux文章

带到手机上看