linux shell操作- 03 用户切换及shell案例

文章目录

  • 用户切换
  • shell 脚本案例

用户切换

  • linux是多用户的、多进程的操作系统,通常多个用户之间需要来回切换;
  • su,switch user 命令
    • 参数 - , 切换用户,同时切换工作目录(为目标用户的家目录)
    • 参数 -c cmd,切换到目标用户,执行一条指令,然后切回原用户;
    • 参数 -m -p ,保持原用户的环境变量;
    • 参数 -l,重新登录该用户;
    • 参数 user,需要切换的用户
    • 命令案例
# 切换到 jack 用户
su jack  # 不切工作路径
su - jack # 切换工作路径和环境变量# lauf 用户下 切到root(同时切工作路径)  执行pwd, 然后切回lauf
su -c pwd - root
# 需要输入root密码

 

shell 脚本案例

  1. root用户下,执行一段shell脚本,中间切换到lauf用户,在lauf用户家目录下 继续创建data1、data2数据目录。
#!/bin/bash 
# user root# 创建目录的函数
function lauf_make_dir(){# $@ 所有的参数 组成数组for i in $@;do# 目录不存在时 创建[[ ! -e $i ]] && mkdir $idone[ $? -eq 0 ] && return 0return 1
}# root config  python PATH
cat /etc/profile | grep -iE "/usr/local/python3/bin"
# 上一条指令没有成功,则执行
[ $? -ne 0 ] && echo 'export PATH=/usr/local/python3/bin:$PATH' >> /etc/profile && \  # 宏延续 运算符
source /etc/profile # 配置文件生效# 用户不存在时,创建用户
cat /etc/passwd | grep -iE "\blauf\b" # 单词边界
[ $? -ne 0 ] && useradd lauf -d /home/lauf -m -g root -s /bin/bash# 切换 用户,并继续执行指令
su - lauf <<EOF
# lauf用户下继续执行
# array
# arr=("data1" "data2")
# lauf_make_dir ${arr[*]}   # 传入数组的值  函数在lauf下找不到mkdir data1  # CentOS 生效  OpenSuse生效
mkdir data2
EOF              # 执行结束 CentOS 自动切回root用户# OpenSuse 不会自动切回root用户# 后面的代码Cent (root下执行的指令)
ls -la ./ 

root用户下执行shell脚本总结:

  • su - lauf <<EOF 切换用户,并继续执行shell指令

    • CentOS 下 lauf 用户执行指令到EOF结束,并自动切回root用户,继续执行剩下的shell指令;
    • OpenSuse下lauf用户执行结束,不会自动切回root用户,剩下 的shell指令不会执行;
  • sudo -iu lauf bash << EOF 切换用户,并继续执行指令

    • CentOS 下lauf用户执行结束,同样自动切回root;
    • OpenSuse 同样切回root;
    • -u 切换普通用户;-i 切换路径,同时使用之前的环境变量;
    • sudo 是权限受限的su ,需要在/etc/sudoers文件中为用户配置权限;
    • sudo chmod u+x test.sh 执行流程–>切到root用户执行该指令,执行结束切回普通用户;
  • su - jack -c cmd ; 切换到jack 执行一条执行(jack 具有权限),切回原用户;

  • sudo -iu jack bash -c cmd; 执行一条指令,然后切回原用户;

 
 
上一篇: linux shell操作- 02 常用命令及案例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/129058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双热点机制结合。5+铜死亡+铁死亡相关基因生信思路

今天给同学们分享一篇结合铜死亡和铁死亡相关基因预测肿瘤预后、免疫和药敏的生信文章“A novel signature of combing cuproptosis- with ferroptosis-related genes for prediction of prognosis, immunologic therapy responses and drug sensitivity in hepatocellular car…

Jenkins自动化部署相关shell命令

1. 只后台启动&#xff1a; nohup java -jar jar/demo*.jar & 2. 增加命令启动日志输出位置&#xff0c;防止超时处理配置&#xff1a; nohup java -jar /soft/gitee-demo-0.0.1-SNAPSHOT.jar >mylog.log 2>&1 & 简化写法&#xff1a; nohup java -jar /s…

生产环境评估机器的方法

学习了kafka的原理知识后&#xff0c;还要学会如何评估生产环境集群&#xff0c;如果是一个大数据架构师&#xff0c;这个是必须要会的&#xff0c;比如kafka集群、Hbase集群、hadoop集群&#xff0c;评估集群的方式差不多&#xff0c;现在以kafka为例。 场景 电商平台&#x…

基于STM32F412RET6的智能桶硬件设计

一、智能桶功能需求&#xff1a; 智能桶是一直采用Cortex-M4 嵌入式平台&#xff0c;搭载NB-IotTO通讯模组、智能称重采集、智能门锁监控以及温度监测等装置。主要功能如下&#xff1a; ▲ 具有GPS定位功能&#xff0c;可以通过后台APP实时定位智能桶的位置。 ▲ 具有温度监测功…

模仿看门狗写个简单的分布式锁demo

public void tryLock() { // 判断key是否存在,存在则返回 用户信息 // 不存在则生成key,将信息(用户名&#xff0c;用户id,线程名)放入TYuanGong pcCurrentUser TisUtils.getPcCurrentUser();String name Thread.currentThread().getName();//// redis redis.c…

14、SpringCloud -- WebSocket 实时通知用户

目录 实时通知用户需求:代码:前端:后端:WebSocket创建 websocket-server 服务添加依赖:配置 yml 和 启动类:前端:后端代码:注意:测试:总结:实时通知用户 需求: 用户订单秒杀成功之后,对用户进行秒杀成功通知。 弹出个提示框来提示。 代码: 前端:

【设计模式】第11节:结构型模式之“装饰器模式”

一、简介 装饰器模式主要解决继承关系过于复杂的问题&#xff0c;通过组合来替代继承。它主要的作用是给原始类添加增强功能。这也是判断是否该用装饰器模式的一个重要的依据。除此之外&#xff0c;装饰器模式还有一个特点&#xff0c;那就是可以对原始类嵌套使用多个装饰器。…

第5天:基础入门-资产架构amp;端口amp;应用amp;CDNamp;WAFamp;站库分离amp;负载均衡

第5天&#xff1a;基础入门-资产架构&端口&应用&CDN&WAF&站库分离&负载均衡 #知识点&#xff1a;1. 资产架构-端口&目录&插件接口&多站点&多应用 2. 番外安全-域名&服务器本身&服务厂商&管理人员 3. 考虑阻碍-站库分离&am…

Redis-使用java代码操作Redis

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这…

go语言 | grpc原理介绍(一)

参考 https://www.nowcoder.com/discuss/389810396381683712?sourceSSRsearch 这里是b站对应的csdn博客&#xff0c;比较详细的介绍grpc相关原理说明&#xff0c;首先是大概的一个流程图说明。 什么是 RPC &#xff1f; 远程过程调用&#xff08;RPC&#xff09;是计算机科…

[推荐]SpringBoot java实现文件/附件上传下载 服务器 数据库 拿来就用,简单实用

推荐一个思路非常简单又很实用的文件上传下载方式&#xff0c;代码十分简练&#xff0c;可以开箱即用&#xff0c;下面是使用到的一些工具类和业务代码&#xff1b; 1.文件上传实现 判断文件类型的工具类&#xff0c;一些使用到的实体类我会凡在文末&#xff0c;需要可以的自…

吴恩达《机器学习》4-1->4-5:多变量线性回归

一、引入多维特征 在多维特征中&#xff0c;我们考虑的不再是单一的特征&#xff0c;而是一组特征&#xff0c;例如房价模型中可能包括房间数、楼层等多个特征。这些特征将组成一个向量&#xff0c;表示为(&#x1d465;₁, &#x1d465;₂, . . . , &#x1d465;ₙ)&#x…

nodelist 与 HTMLCollection 的区别

原地址 https://cloud.tencent.com/developer/article/2013289 节点与元素 根据 W3C 的 HTML DOM 标准&#xff0c;HTML 文档中的所有内容都是节点&#xff1a; 整个文档是一个文档节点每个 HTML 元素是元素节点HTML 元素内的文本是文本节点每个 HTML 属性是属性节点注释是注…

ts 简易封装 axios,统一 API

文章目录 为什么要封装目标文件结构封装通用请求方法获得类型提示http 方法文件上传使用示例实例化post 请求类型提示文件上传 总结完整代码&#xff1a; 为什么要封装 axios 本身已经很好用了&#xff0c;看似多次一举的封装则是为了让 axios 与项目解耦。比如想要将网络请求…

视频增强和修复工具 Topaz Video AI mac中文版功能

Topaz Video AI mac是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频&#xff0c;包括低分辨率视频、老旧影片、手机录制的视频等。 使用Topaz Video AI非常简单&#xff0c…

突破防火墙的一种方法

当Linux防火墙阻止来自某个ip的数据时&#xff0c;它应该是根据ip数据报里“源IP地址”字段取得的对方ip吧&#xff0c;那对方就不能通过篡改“源IP地址”来绕过防火墙吗&#xff1f;NAT模式下的路由器就修改了这个字段。 但这样的话&#xff0c;攻击者是收不到服务器返回的数…

PHP获取域名地址,$_SERVER[]用法

一、PHP获取域名地址 $host $_SERVER[HTTP_HOST];二、PHP获取域名后面的所有字符 $host $_SERVER[REQUEST_URI];//https://www.baidu.com/md/?articleId134157878//输出 /md/?articleId134157878三、PHP获取服务器的IP $serverIP $_SERVER[SERVER_ADDR]; echo "服务…

学 Java 怎么进外企?

作者&#xff1a;**苍何&#xff0c;CSDN 2023 年 实力新星&#xff0c;前大厂高级 Java 工程师&#xff0c;阿里云专家博主&#xff0c;土木转码&#xff0c;现任部门技术 leader&#xff0c;专注于互联网技术分享&#xff0c;职场经验分享。 &#x1f525;热门文章推荐&#…

麒麟KYLINIOS软件仓库搭建01-新创建软件仓库服务器

原文链接&#xff1a;麒麟KYLINIOS软件仓库搭建01-新创建软件仓库服务器 hello&#xff0c;大家好啊&#xff0c;今天给大家带来麒麟桌面操作系统软件仓库搭建的文章01-新创建软件仓库服务器&#xff0c;本篇文章主要给大家介绍了如何在麒麟桌面操作系统2203-x86版本上搭建内网…

docker 下安装mysql8.0

在docker中查询mysql镜像 PS C:\Users\admin> docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation……