linux sudo

如何在脚本中运行’sudo’命令? 问题描述 要手动执行修补,我必须输入此命令 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 如何在脚本中运行它? 还有其他一些命令但是这个命令很麻烦。 最佳解决办法 在脚本中包含sudo并不是一个好主意。而是从脚本中删除sudo并使用sudo运行脚本本身: sudo mys 阅读详情

env

ubuntu20.2

概念

sudo, sudoedit : 用其它用户执行命令

sudo允许批准一个用户执行命令作为超级用户或其它用户, 由安全策略指定. 调用的用户ID被用来决定他拥有什么样的安全策略.

给用户添加sudo

	chmod +w /etc/sudoers
	vim /etc/sudoers
	chmod -w /etc/sudoers

或

sudo visudo

免密sudo,

xxxx   ALL=(ALL:ALL) NOPASSWD:ALL

nano保存并退出

Ctrl+X
Ctrl+T  # 选择要覆盖文件(sudoer) , 再回车

注意添加位置
在这里插入图片描述

Q & A

sudo执行脚本找不到环境变量

当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就找不到变量,未能获取到值,如题情况如下:

$ cat tesh.sh 
echo $var 
$ var=aaa 
$ export var                       # export 变量 
$ sudo echo $var                   # sudo执行echo命令,返回变量值 
aaa 
$ sudo bash test.sh                # sudo执行脚本,不能获取变量值 
 
$ bash test.sh                     # 普通用户执行脚本,返回变量值 
aaa

原因
sudo运行时,会默认重置环境变量为安全的环境变量,也即,但前设置的变量都会失效,只有少数配置文件中指定的环境变量能保存下来。

sudo的配置文件是 /etc/sudoers 需要root权限才能读取:

$ sudo sed ‘/^#/d;/^$/d’ /etc/sudoers 
Defaults env_reset 
Defaults mail_badpass 
Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin” 
root ALL=(ALL:ALL) ALL 
%sudo ALL=(ALL:ALL) ALL 
xxx ALL=(ALL:ALL) NOPASSWD:ALL

不过可以直接通过sudo -l来查看sudo的限制:

$ sudo -l 
Matching Defaults entries for xxx on this host: 
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin 

User xxx may run the following commands on this host:
 (ALL : ALL) NOPASSWD: ALL

注意看第一行的选项Defaults env_reset表示默认会将环境变量重置,这样你定义的变量在sudo环境就会失效,获取不到。
另外有的发行版还有一个Defaults env_keep=""的选项,用于保留部分环境变量不被重置,需要保留的变量就写入双引号中。

为什么sudo echo $var能获取到变量值?

既然利用sudo执行会重置环境变量,那么为什么还能echo获取到相应的变量呢?
这是由于shell命令行的替换&重组功能,在输入命令,按下回车时,shell会先依据分隔符将命令行切割成字段,对每个字段查找有没有变量或命令替换,再替换完成后,重组成新的命令,再去执行。
所以,命令实际执行是:

$ sudo echo $var                   # $var => aaa 
(sudo echo aaa)                    # 完成命令替换&重组 
(echo aaa)                         # sudo环境中执行 
aaa

因此,sudo环境重置后,并不用去引用$var这个变量,而是直接echo aaa。

解决
1、sudo -E
-E选项在man page中的解释是:

-E

The -E (preserve environment) option indicates to the security policy that the user wishes to preserve their existing environment variables. The security policy may return an error if the -E option is specified and the user does not have permission to preserve the environment.

简单来说,就是加上-E选项后,用户可以在sudo执行时保留当前用户已存在的环境变量,不会被sudo重置,另外,如果用户对于指定的环境变量没有权限,则会报错。

$ sudo -E bash test.sh       # 加上-E参数后就可以获取到变量 
aaa

2、修改sudo配置文件
在内部测试机器中,安全性要求不高,总是需要加上-E参数来执行脚本,这个安全设定也不是很方便,可以通过visudo命令来修改配置为保留原有的环境变量,具体修改如下:

$sudo visudo 
# Defaults env_reset                  # 注释掉原有配置 
# Defaults env_keep=”…”               # 注释掉指定的变量保持 
Defaults !env_reset                   # 修改为不重置环境

3、手动添加变量
手动在脚本中设置所需的变量,这样看起来比较麻烦,或者在执行sudo脚本前先将所需要的变量写入到要执行的脚本开头。

sudo常见问题两例:免密码/保持环境变量

首先给一个很不错的sudo的文档!

https://wiki.archlinux.org/index.php/Sudo_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29

问题一:如何在使用sudo执行命令时免输入密码

在root下执行visudo
在文件尾部添加:

myuser ALL=(ALL) NOPASSWD: ALL
%mygroup ALL=(ALL) NOPASSWD: ALL

问题二:如休在使用sudo执行命令确保环境变量的传递

首先,我们可以随时使用sudo -u targetUser env来检查目标用户targetUser的环境变量,特别是你定义的一些HOME目录和PATH变量

以下是两个重要的配置步骤:

  1. 确保环境变量得以传递,以Hadoop相关的一些环境变量为例,我们需要在visudo中添加需要传递的环境变量,比如:

Defaults env_keep += “JAVA_HOME HADOOP_HOME HBASE_HOME HIVE_HOME MAHOUT_HOME PATH”

  1. 取保PATH变量得以传递:

上面env_keep配置的PATH变量实际并没有得到有效的传递,PATH变量会受到secure_path的约束,所引如果我们需要传递完整的path变量,我们需要修改secure_path!在visudo中它的默认值一般为:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

同样以hadoop环境为例,我们可以改为:

Defaults    secure_path = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_71/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/hbase/bin:/usr/local/hive/bin:/usr/local/hive/hcatalog/bin:/usr/local/hive/hcatalog/sbin:/usr/local/mahout/bin

另:如果不做上述配置,可以使用sudo -i -u targetUser your-command来执行你的命令,使用-i参数会模拟一次登录,目标用户的相关环境变量就可以相应的被初始化了!

Ambari集群部署全流程 Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应、管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。提供Web UI进行可视化的集群管理,简化了大数据平台的安装、使用难度。 服务器资源目录 ip地址 节点 组件 192.168.186.164 master 192.168.186.167 slave 阅读详情

相关推荐

小智2.0本地化部署:边缘AI服务中台实战指南

边缘AI服务中台是面向嵌入式终端与边缘设备构建的轻量级、低延迟、高隐私AI能力集成平台,其核心在于解耦模型与调度、统一协议接口、协同管理ASR/TTS/NLU等异构模块。技术原理上依赖多进程架构(Node.js+Java+Python)、外部状态存储(MySQL+Redis)与模型即资源的插拔机制,具备强定制性与硬件适应性。该架构显著降低云端依赖与通信开销,提升实时响应与数据主权保障,广泛应用于语音交互设备、教育机器人、工业边缘盒子等场景。本文聚焦小智2.0服务器的源码构建、多组件协同部署及生产就绪配置,覆

weixin_36238982的博客 600

Shell脚本 中运行sudo命令

你会发现终端停留在输入sudo密码界面了,如果我们脚本中包含提权才能进行的命令的话这种脚本会卡在输入密码这一步上,需要手动输入sudo密码脚本才能往下执行,这当然不是我们希望的,如果想让非root用户不输入密码就能执行sudo命令的话需要修改。我们都知道在linux的多用户下,用户之间是不能相互访问彼此的家目录的,如果要想访问其他用户的家目录必须使用sudo命令来提权。首先我在A用户的家目录下新建了一个脚本文件,我想使用这个脚本文件列出用户B家目录。属性,添加可写属性(以下命令在root用户下执行)。

alfiy的专栏 6228

Linux sudo升级

本文介绍了一个用于修复Linux系统sudo本地提权漏洞的升级脚本。该脚本将sudo升级到1.9.17p1安全版本,主要内容包括:1) 解压源码包并备份原sudo;2) 替换可执行文件和动态库;3) 更新动态库缓存;4) 配置/etc/sudo.conf文件;5) 验证升级结果。脚本采用模块化设计,包含完善的日志记录和错误处理机制,确保升级过程可靠。执行后能有效修复已知的sudo本地提权漏洞,提升系统安全性,适用于需要离线升级sudo的场景。

1353

保留当前环境变量执行 sudo 操作

当执行 sudo "command" 或者 sudo bash -c "your command or scripts" 时候,你在当前执行当 interactive shell 上设置当环境变量或者定义在自己的 login shell 初始化脚本(比如~/.bashrc, ~/.bash_profile)里的环境变量不会生效。 如何让这些变量在 sudo 情况下生效呢? sudo -E ba...

bdss58的专栏 2452

神经网络基础-从零开始搭建一个神经网络

人工神经网络(Articial Neural Network,简写为ANN)也称为神经网络(NN),是一种模仿生物神经网络和功能的计算模型,人脑可以看做是一个生物神经网络,由众多的神经元连接而成,各个神经元传递复杂的电信号,树突接收到输入信号,然后对信号进行处理,通过轴突输出信号。人工神经网络也是类似,通过模仿人脑的“学习机器”,通过不断“看”数据(比如图片,数字),自己总结规律,最终学会预测(比如分类图片)在深度学习中,损失函数是用来衡量模型参数的质量的函数,衡量的方式是比较网络输出和真实输出的差异。

Zach的博客 4014

5分钟搞定SNMP工具安装:从Linux到Windows的snmpwalk/snmpget全攻略

本文提供了SNMP工具(snmpwalk/snmpget)在Linux和Windows系统上的快速安装与使用指南,涵盖从基础安装到高阶应用的全面解析。通过详细的命令示例和故障排查技巧,帮助用户快速掌握网络设备监控与诊断的核心技能,提升运维效率。

weixin_29248313的博客 555

linux中sudo命令_Linux中的Sudo命令

linux中sudo命令Sudo is one of the most widely used commands by Linux administrators and beginners alike. In this guide, we will look at sudo command and its usages. Sudo是Linux管理员和初学者最广泛使用的命令之一。 在本指南中,我们将...

从零开始的教程世界 2706

【SystemVerilog项目实践】4.AHB-SRAMC(验证计划)

验证计划

托马斯的博客 3660

【Linux】 su 和 sudo 的区别剖析

su 命令介绍及主要用法2.1 参数-2.2 切换到指定用户2.3 参数-c三、sudo 命令介绍及主要用法3.1 主要用法3.2 sudo 工作原理四、二者的差异对比首先需要解释下 代表什么意思。su 表示 ,它提供的功能就是切换用户。官方释义: 的一般使用方法是: 或者 两种方法只差了一个字符 ,会有比较大的差异:光解释会比较抽象,我们看一个例子就比较容易理解了。我们从kangll 用户以 的方式切换到 root 用户,比较两种用户状态下环境变量中 的值( 命令不跟任何

康师傅没有眼泪 4946

Chrome DevTools MCP 实战完整教程

本教程介绍了Chrome DevTools MCP(Model Context Protocol)在智能Web测试中的应用。该系统通过MCP协议将Chrome开发者工具能力标准化,并与AI结合,提供了统一的测试解决方案。核心功能包括智能自动化、深度调试分析和性能监控优化。教程详细讲解了环境搭建、MCP服务器配置、参数说明及多种工具集(输入自动化、导航、设备仿真、性能分析等)的使用方法。通过mcp-use库的MCPAgent和MCPClient组件,用户可以轻松实现自然语言驱动的浏览器操作和测试流程管理。

blues_C的博客 3804

英伟达 Jetson AGX Thor 官方入门教程(二)CUDA、Docker、JetPack 设置

本文详细介绍了NVIDIA Jetson AGX Thor开发套件的安装与配置流程。主要内容包括:1) BSP安装的三种方法(Jetson ISO、SDK Manager和Linux刷写脚本)及其适用场景;2) Docker环境的完整配置步骤及测试方法;3) CUDA工具包的两种安装方式(容器化和原生安装)及其性能对比;4) JetPack SDK的安装选项。文章提供了详细的命令行操作指南和故障排除建议,帮助开发者快速搭建AI开发环境,充分发挥Jetson平台的硬件性能优势。

机器人控制与仿真应用 1733

Linux sudo命令

⏹Linux sudo命令

菜鸟记录 1257

AI工具赋能日常工作的实践指南:以产品经理与程序员为例

AI工具赋能日常工作的实践指南:以产品经理与程序员为例

专注于编程、AI、人工智能等多个领域内容研究和分析 591

【Linux命令】su、sudo、sudo su、sudo -i、sudo -l的用法和区别

【Linux命令】su、sudo、sudo su、sudo -i、sudo -l的用法和区别 ​ su命令 su (Switch User切换用户),允许用户切换到另一个用户的身份,默认情况下是切换到 root 用户。 默认行为:如果只运行 su,则系统会要求输入 root 用户的密码来切换到 root 用户,获取管理员权限。 切换到其他用户:也可以通过 su - username来切换到其他用户的账户,而不仅仅是 root 用户。例如,su - user1 会切换到 user1 用户的环境。

qq_73635134的博客 2416

2021.07.05【R语言】丨预测lncRNA并绘制venn图

目录摘要环境与方法依赖工具预测工具绘制工具使用命令预测lncRNA统计noncoding_ID绘制Venn图结果展示总结 摘要 接到一个单样品测lncRNA数据的项目,正好拿来练练手,梳理一下lncRNA流程。这里记录预测lncRNA并生成venn图的过程 环境与方法 R version 3.6.3 (2020-02-29) 依赖工具 预测工具 CPC2 CNCI Pfam CPAT 绘制工具 R:VennDiagram 使用命令 预测lncRNA CPC2 #更换env conda activate py

2035

CH7034B显示模块原理图设计,已量产

显示桥接板的价值,不在于简单把 RGB 排线换成另一种接口,而在于能否把并行视频、时钟、显示控制、模拟输出和辅助配置同时组织成稳定系统。当前这张 CH7034B 原理图就是这种思路:U3 CH7034B 作为核心桥接芯片,输入侧是 LCD_R0~R7、LCD_G0~G7、LCD_B0~B7、LCD_DE、LCD_HSYNC、LCD_VSYNC、LCD_CLK 与 LCD_BL,输出侧则通过 DAC0~DAC2 和 DDC_SC/DDC_SD 形成模拟显示接口边界。

不脱发的程序猿 161

linux默认开启sudo_Linux sudo命令

Linux sudo命令Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。使用权限:在 /etc/sudoers 中有出现的使用者。语法sudo -Vsudo -hsudo -lsudo -vsudo -ksudo -ssudo -Hsudo [ -b ] [ -p prompt ] [ -u username/#uid] -s...

weixin_29664063的博客 1025

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Linux中sudo免密码

文章出自个人博客https://knightyun.github.io/2019/06/20/sudo-nopasswd,转载请申明 平时在 Linux 中执行一些命令时,可能会遇到 Permission denied 这样的提示,即该用户没有权限; 所以一般会想到在命令最前面加上 sudo 后再执行,然后有可能会提示输入当前用户的密码; 再接下来,如果命令没有正常执行,一般又会提示:user...

knight-yun的博客 8176

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

linux-sudo配置

是 "superuser do" 的缩写,它是一个在 Unix 和 Linux 操作系统中允许普通用户以其他用户身份(通常为超级用户或 root 用户)执行命令的程序。对示例不明白的同学可以产看格式说明黄色背景标注的就是对应的说明:主机,用户,用户组等等权限管理配置。可以提高系统的安全性,因为它允许细粒度的权限控制,并且会在每次使用时要求用户输入密码。,系统管理员可以授予某些用户执行特定命令的权限,而无需切换到 root 用户。,管理员可以限制用户只能执行特定的命令或脚本,从而防止潜在的系统损坏或误操作。

古韵堂 3540

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Linux之sudo高级应用(Sudo Advanced Applications in Linux)

sudo命令是Linux系统中一个强大的权限管理工具,允许系统管理员授予普通用户执行特定命令的权限,而不需要知道root用户的密码。‌ sudo命令通过编辑/etc/sudoers配置文件来实现权限的分配和管理,提供了灵活的权限控制机制。本章详细介绍Linux之sudo命令。

Linux运维老纪的博客 1426

如何在Linux上控制sudo访问

因sudo命令允许你在Linux上运行命令,就像你是别人一样,比如root. .sudo也可以让你控制谁可以访问root's能力,粒度。给用户完全访问或让他们使用一小块命令。我们向您展示如何。

allway2的博客 1015

linux 普通用户增加sudo_秒懂Linux的sudo命令

>【版权申明】非商业目的注明出处可自由转载 出自:shusheng007文章首发于 首页 - ShuSheng007​shusheng007.top概述第一次接触Linux时是照着网上的教程给服务器安装Tomcat的时候,总是看到 sudo命令,咱也不知道是啥,就是一顿复制粘贴,最后还安装成功了。可笑的是我用的root账户登录的,还用毛sudo啊?知识就是这样的,也许一个问题在老鸟看来是...

weixin_34493012的博客 1031

linux sudo 命令_Linux Sudo命令教程,并附有获得根特权的示例

linux sudo 命令Linux sudocommand is used to give rootprivileges to the normal users . /etc/sudoersfile is used for configuration of sudo. Sudoers file provides the users who can run sudocommand. Su...

cunjiu9486的博客 736

Linux下的全部sudo提权方法

linux下的全部sudo提权

qq_62554190的博客 1888
上一篇: 修改ubuntu时区
下一篇: grasshopper遇到的问题(updating)
大怀特
博客等级 码龄6年 5787粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大怀特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值