当前位置: 首页 > news >正文

sudu提权命令账号安全控制(su命令)执行单个命令并返回原用户、执行多个命令并返回原用户、保持当前环境变量、配置文件/etc/sudoers

su命令

su 命令是 Linux 和 Unix 系统中用于切换用户身份的命令。它允许一个用户变成另一个用户并以该用户的权限运行命令或启动新的 shell 会话。

基本语法

su [选项] [用户名]

用途:
su[选项][-][用户[arg]…]
将有效用户id和组id更改为user的id。
A merely-implies-l。如果没有给出USER,则假定为root。
选项:
-m、 -p,--preserve environment不重置环境变量
-g、 --group<group>指定主要组
-G、 --supp group<group>指定一个补充组
-,-l,--login使shell成为登录shell
-c、 --command<command>使用-c向shell传递单个命令
--session命令<command>使用-c向shell传递单个命令
并且不创建新会话
-f、 --快速传递-f到shell(用于csh或tcsh)
-s、 --shell<shell>如果/etc/shells允许,则运行shell
-h、 --help显示此帮助并退出
-V、 --输出版本信息并退出

常用用法

  1. 切换到 root 用户:

su -

这个命令将你切换到 root 用户,并执行一个完整的登录 shell。你需要输入 root 用户的密码。

切换到指定用户:

su username

切换到名为 username 的用户。默认情况下,这不会改变环境变量或工作目录。如果你没有提供密码,命令将提示你输入该用户的密码。

切换到 root 用户并保持当前环境:

su

如果当前用户不是 root,则此命令默认切换到 root 用户,并保持当前的工作目录和环境变量。同样地,你需要输入 root 用户的密码。

执行单个命令并返回原用户:

su username -c "command"

这个命令将以 username 用户的身份执行 command,然后返回到原来的用户。例如:

su -c "whoami" user1

将显示 user1

执行多个命令:

su - username -c "command1; command2"

示例

假设你想要以 root 用户身份运行 ls 命令,可以这样做:

su -c "ls" root

注意

su 命令需要有足够的权限才能成功切换用户。通常情况下,普通用户只能切换到自己的账户或者使用 sudo 来暂时获取 root 权限来执行某些命令。

sudo命令

sudo 命令是 Linux 和 Unix-like 操作系统中非常常用的一个命令,它允许用户以其他用户(通常是 root 用户)的身份来执行命令。sudo 提供了一种安全的方式来管理系统的权限,而无需直接登录为 root 用户。

基本语法

sudo [选项] 命令

选项说明

  • -u 或 --user: 指定以哪个用户的身份来执行命令。
  • -i 或 --login: 执行一个登录 shell,类似于使用 su -
  • -s 或 --shell: 执行一个 shell,但不执行登录 shell。
  • -l 或 --list: 显示用户可以执行的命令列表。
  • -v 或 --validate: 验证用户是否可以在不重新输入密码的情况下执行命令。
  • -H 或 --preserve-env: 保留当前环境变量(默认情况下,sudo 会清除大部分环境变量)。
  • -E 或 --setenv: 保留当前环境变量,并允许传递额外的环境变量给子进程。
  • -k 或 --reset-timestamp: 清除 sudoers 记录的时间戳文件,这会导致下次运行 sudo 时需要重新输入密码。
  • 选项 “-” 等同于 “--login” 或 “-l”,表示切换用户后进入目标用户的登录shell环境

常用用法

以指定用户身份执行命令:

sudo -u username command

执行多个命令:

sudo -s

这个命令会打开一个 root 用户的 shell 会话。在 shell 中,你可以执行多个命令。

执行登录 shell:

sudo -i

这个命令将以 root 用户的身份执行一个登录 shell。这会加载 root 用户的 shell 配置文件。

查看可执行的命令列表:

sudo -l

这个命令会列出用户可以执行的命令以及与之相关的权限。

验证权限:

sudo -v

这个命令会验证用户是否可以在接下来的一段时间内无需再次输入密码就执行 sudo 命令。

保持当前环境变量:

sudo -E command

这个命令会保留当前的环境变量,并将它们传递给 command

注意事项

使用 sudo 时,通常需要输入当前用户的密码。

如果你在 /etc/sudoers 文件中配置了特定的权限,那么某些用户可能会被允许执行特定的命令而无需密码。

修改 /etc/sudoers 文件通常需要使用 visudo 命令,这样可以防止编辑过程中出现错误。

pam_wheel认证模块

 默认情况下,任何用户都允许使用su命令,便给了其他用户反复登录尝试root用户密码,这样便增加了安全隐患,便可以借助于pam_wheel认证模块,只允许授权用户使用su命令切换。

将授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置以启用pam_wheel认证。

sed -i -e 's/^#\?auth.*pam_wheel.so trust use_uid$/auth          sufficient      pam_wheel.so trust use_uid/' \-e 's/^#\?auth.*pam_wheel.so use_uid$/auth          required        pam_wheel.so use_uid/' \/etc/pam.d/su

 这里解释一下这个命令:

-i 选项表示在原地修改文件。

-e 选项允许我们指定多条 sed 命令。

s/^#\?auth.*pam_wheel.so trust use_uid$/auth sufficient pam_wheel.so trust use_uid/ 表示匹配以 # 开头(可选)的行,该行包含 auth 和 pam_wheel.so trust use_uid,并将其替换为未注释的形式。

同样的逻辑也适用于第二条 sed 命令。

gpasswd -a jingyu wheel

添加授权用户jingyu(在输入用户名与wheel组时是不能tab键补全的。)

启用pam_wheel认证之后,没有加入到wheel组内的其他用户将无法使用su命令

sudo命令 提权-执行权限

在配置文件/etc/sudoers中添加授权

授权配置主要包括用户、主机地址、命令、三个部分,

用户(user):直接授权指定的用户名,或采用%组名的形式(组里的所有用户)

主机(MACHINE):使用此配置文件的主机名称,方便在多个主机间共用一个sudoers文件。

命令(commands):允许授权的用户通过sudo的方式执行的特权命令,(需要写命令程序的决定路径,多个命令之间以逗号“,”进行分隔)

可以在文件末尾添加如:

yourusername ALL=(ALL) NOPASSWD: command
jingyu ALL=(ALL) NOPASSWD: /usr/bin/sh
  • yourusername 是赋予无密码执行权限的用户名。
  • command 是用户无密码执行的具体命令路径。

上面为赋予jingyu用户sh命令。

sudo 配置记录的命令部分允许使用通配符 “ * ” 、取反符号 “ ! ” ,当需要授权某个目录下的所有 命令或取消其中个别命令时特别有用。

jingyu        localhost=/usr/bin/* ,!/usr/bin/sh ,…………

授权jingyu用户可以执行/usr/bin目录下的除sh以外的所有命令程序。

http://www.lryc.cn/news/424094.html

相关文章:

  • 【线性代数】【二】2.7 矩阵的秩
  • 计算机网络部分基础知识
  • WESWOO合作的出海企业(一)
  • vue 项目中 使用vxe-grid 表格中给表格的表头设置特殊的格式 , 并且给指定的列文字设置颜色
  • 基于SpringBoot的企业资产管理系统
  • ps快捷键,学习
  • python代码模拟服务器实验2:IO多路复用select
  • 修改ubuntu的终端显示语言为英文,界面保持为中文
  • 重塑园区生态,引领产业智慧化新飞跃
  • WSL 忘记ubuntu的密码
  • github项目-创建一个新分支
  • Java设计模式中介者模式的优势与局限性分析
  • 一、软件工程概述
  • 第六天:java设计模式、GUI编程与面向对象设计原则
  • 解读RPA自动化流程机器人
  • Redis17-服务端优化
  • Web语义化及实际应用
  • Linux系统调试课:CPUFreq 中央处理器频率调节技术
  • C++之模版初阶
  • 飞桨paddle API函数scatter详解
  • RCE漏洞复现
  • Qt QTabWidget之创建标签页的多页面切换
  • 【RISC-V设计-14】- RISC-V处理器设计K0A之打印输出
  • 时序预测|基于变分模态分解-时域卷积-双向长短期记忆-注意力机制多变量时间序列预测VMD-TCN-BiLSTM-Attention
  • Python知识点:如何使用Godot与Python进行游戏脚本编写
  • Spring MVC数据绑定和响应学习笔记
  • Vulnhub JIS-CTF靶机详解
  • FPGA资源评估
  • REST framework中Views API学习
  • Vue(四)——总结