当前位置: 首页 > 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以外的所有命令程序。

相关文章:

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

su命令 su 命令是 Linux 和 Unix 系统中用于切换用户身份的命令。它允许一个用户变成另一个用户并以该用户的权限运行命令或启动新的 shell 会话。 基本语法 su [选项] [用户名] 用途&#xff1a; su[选项][-][用户[arg]…] 将有效用户id和组id更改为user的id。 A merely-im…...

【线性代数】【二】2.7 矩阵的秩

文章目录 前言一、向量组的秩二、矩阵的秩三、矩阵的可逆性与秩总结 前言 在前面的内容中&#xff0c;我们已经陆陆续续地给出了秩的概念。本文可以看成是对以往概念与性质的总结&#xff0c;那专门针对秩进行分析。 一、向量组的秩 在笔记2.2中&#xff0c;我们学习了极大线…...

计算机网络部分基础知识

网络协议的意义 单台主机内部的设备之间需要发送和接收消息&#xff0c;那么和相隔很远的两台主机之间发送消息有什么区别呢&#xff1f;两台主机通过网络发送消息&#xff0c;相当于两个网卡设备之间进行通信&#xff0c;最大的区别在于距离变长了。而距离变长带来的结果就是&…...

WESWOO合作的出海企业(一)

分享一些我们在shopify开发上合作的品牌介绍1. **韶音科技&#xff08;SHOKZ&#xff09;**&#xff1a; - WESWOO为韶音科技设计了多个产品页面&#xff0c;如OPENFIT、OPENSWIMPRO等&#xff0c;这些页面展示了产品特点、滑动特效、比较功能等&#xff0c;并通过品牌VI统一&a…...

vue 项目中 使用vxe-grid 表格中给表格的表头设置特殊的格式 , 并且给指定的列文字设置颜色

项目场景&#xff1a; 相关背景&#xff1a; vue 项目中 使用vxe-grid 表格中给表格的表头设置特殊的格式&#xff0c;并为指定的列文字设置颜色 实现方案&#xff1a; 具体实现方法及步骤&#xff1a; 一、给表格的表头设置特殊的格式 实现方式一&#xff1a; :header-row-s…...

基于SpringBoot的企业资产管理系统

TOC springboot117基于SpringBoot的企业资产管理系统 系统概述 1.1 研究背景 智慧养老是面向居家老人、社区及养老机构的传感网系统与信息平台&#xff0c;并在此基础上提供实时、快捷、高效、低成本的&#xff0c;物联化、互联化、智能化的养老服务。 随着科技进步&#…...

ps快捷键,学习

ps快捷键图片变的特别大&#xff0c;归位&#xff0c;ctrl0背景图层锁住 选中图层&#xff0c;点击顶部图层&#xff0c;新建&#xff0c;背景图层&#xff0c;确定&#xff0c;就解开了&#xff0c;想在锁住&#xff0c;在点一次...

python代码模拟服务器实验2:IO多路复用select

实验代码的环境是在windows&#xff0c;和linux是有差别的 在Windows系统上&#xff0c;select模块需要传递特定的对象类型&#xff0c;而不是文件描述符。在Unix-like系统上&#xff0c;文件描述符是一个整数&#xff0c;而在Windows上&#xff0c;select期望得到的是socket对…...

修改ubuntu的终端显示语言为英文,界面保持为中文

修改ubuntu的终端显示语言为英文&#xff0c;界面保持为中文 sudo nano /etc/default/locale LANGzh_CN.UTF-8nano ~/.bashrc 在文件未尾加入下列两行 export LANGen_US.UTF-8 export LANGUAGEen在终端执行 source ~/.bashrc之后提示语言就变成英文了...

重塑园区生态,引领产业智慧化新飞跃

中服云智慧园区平台基于工业物联网平台&#xff0c;在园区场景中集中运用云计算、物联网、大数据、人工智能、数字孪生、边缘计算等新一代信息技术。秉承产业主导、业务主导、效率主导的理念&#xff0c;通过一体化子系统集成、智慧化业务管理、可视化运营分析、人性化客户服务…...

WSL 忘记ubuntu的密码

文章目录 1. 以管理员身份打开 PowerShel2.输入命令 wsl.exe -d Ubuntu-20.04 --user root3.输入命令 passwd username 修改用户密码&#xff0c;username即待重置的用户的名称 1. 以管理员身份打开 PowerShel 2.输入命令 wsl.exe -d Ubuntu-20.04 --user root 注意版本号是自…...

github项目-创建一个新分支

在远程仓库创建一个分支实际上是在本地创建一个分支&#xff0c;然后将该分支推送到远程仓库。这是因为在 Git 中&#xff0c;您不能直接在远程仓库创建分支&#xff0c;而需要先在本地创建分支&#xff0c;然后将该分支推送到远程仓库。 以下是创建并推送新分支到远程仓库的步…...

Java设计模式中介者模式的优势与局限性分析

Java设计模式中介者模式的优势与局限性分析 一、引言 在软件工程中&#xff0c;设计模式是一种经过验证的解决方案&#xff0c;用于解决软件开发中常见的问题。设计模式的使用可以提高代码的复用性、可维护性和可扩展性。中介者模式&#xff08;Mediator Pattern&#xff09;…...

一、软件工程概述

软件工程概述 1. 软件的概念和特点2. 软件危机的产生3. 软件工程的概念和发展过程4. 软件工程知识体系与职业道德 1. 软件的概念和特点 软件定义 软件程序数据文档。 软件生存周期 问题定义&#xff1a;要解决的问题是什么&#xff1f;可行性分析&#xff1a;对于上阶段所确定…...

第六天:java设计模式、GUI编程与面向对象设计原则

第六天&#xff1a;设计模式、GUI编程与面向对象设计原则 1. 设计模式概述 设计模式的定义&#xff1a;回顾设计模式的定义&#xff0c;即解决特定设计问题的通用解决方案。常见设计模式&#xff1a;了解并掌握几种常见的设计模式&#xff0c;如单例模式、工厂模式、策略模式…...

解读RPA自动化流程机器人

RPA全称Robotic Process Automation&#xff0c;即机器人流程自动化&#xff0c;基于人工智能和自动化技术&#xff0c;能够将大量重复、规则明确的日常事务操作实现自动化处理&#xff0c;通常被形象地称为“数字员工”。本文金智维将深入探讨RPA的主要价值和应用领域&#xf…...

Redis17-服务端优化

目录 持久化配置 慢查询 什么是慢查询 如何查看慢查询 命令及安全配置 内存配置 集群优化 持久化配置 Redis的持久化虽然可以保证数据安全&#xff0c;但也会带来很多额外的开销&#xff0c;因此持久化请遵循下列建议&#xff1a; 用来做缓存的Redis实例尽量不要开启持…...

Web语义化及实际应用

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏和关注&#xff01;今天一起了解下Web语义化及其应用吧&#xff01; 是什么&#xff1f; 使用合适的标签、属性&#xff0c;让页面能“说话“&#xff0c;让人和机器都能快速理解网页内容。 为什么&#xff1f; 有…...

Linux系统调试课:CPUFreq 中央处理器频率调节技术

文章目录 一、CPUFreq组成二、用户接口三、设备树配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中央处理器频率调节(Central Processing Unit frequency,CPUFreq)技术可以降低ARM芯片的功耗,例如在系统对任务压力较小时,通过调整处理器工作频率与输入电压的…...

C++之模版初阶

目录 前言 1.泛型编程 2.函数模版 2.1函数模版概念 2.2函数模版格式 2.3函数模版的原理 2.4函数模版的实例化 2.5模版参数的匹配原则 3.类模版 3.1类模版的定义格式 3.2类模版的实例化 结束语 前言 前面我们学习了C的类与对象和内存管理&#xff0c;接下来我们继续学习…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...