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

这篇具有很好参考价值的文章主要介绍了linux shell操作- 03 用户切换及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 $i
	done
	[ $? -eq 0 ] && return 0
	return 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 常用命令及案例文章来源地址https://www.toymoban.com/news/detail-735164.html

到了这里,关于linux shell操作- 03 用户切换及shell案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux编程Shell自动化脚本】03 shell四剑客(find、sed、grep、awk)

    语法格式 参数说明 : path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。 expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。 1. 常用expression 以下列出

    2024年02月09日
    浏览(54)
  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(67)
  • 【Linux】通过 Shell 脚本修改用户密码

       Linux 中要修改一个用户的密码通常是使用 passwd 命令来完成,命令格式如下。 [注]:若其后不加任何用户名则表示修改当前用户的密码。 使用示例: 这里笔者将 im 用户的密码修改为 im123 。 这里可以看到在使用 passwd 命令修改用户密码的时候需要手动输入两次进行匹配确

    2024年02月08日
    浏览(51)
  • linux shell脚本操作日期记录

    最近碰到个需求,按日导出每日的数据,然后导入另一个数据库。需要写个日期相关的脚本。这里总结下 运行情况如下: 分别设想了三种情况 1、从某日到某日 2、从当前日期往前推N天 3、从某个日期到当前日期 plus:chatgpt是个写脚本是个好帮手

    2024年02月17日
    浏览(43)
  • 【Linux】Shell脚本之函数的操作+实战详解(建议收藏⭐)

    🍁 博主简介   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊 交流社区: 运维交流社区 欢迎大家的加入! 函数是一段可以重复利用有组织的代码;可以减少代码,提高代码利用率,使脚本结构更加清晰。 这样只是写

    2024年02月05日
    浏览(49)
  • linux shell操作- 02 常用命令及案例

    linux发行版的工具 Ubuntu 包管理器 apt CentOS包管理器 yum OpenSUSE包管理器zypper 包管理器使用 rpm软件包的安装 路径切换管理 两个目录间来回切换使用 cd - ; 多个目录来回切换, pushd入栈 ; pushd dir1; pushd dir2; pushd +0; 切到栈顶目录 ; pushd +1; 从栈顶依次向下走一步; popd 出栈; 查

    2024年02月07日
    浏览(29)
  • 【玩转Linux操作】详细讲解Shell的函数,exit,文件重定向,引入外部脚本的操作

    🎊专栏【​​​​​​​玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Love Story】 🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰 bash 中的函数类似于C/C++中的函数,但是 return 的返回值与C/C++不同,返回的是 exit code ,取值为0~255,

    2024年02月12日
    浏览(41)
  • 运维Shell脚本小试牛刀(一)

    运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试牛刀(五):until循环 运维Shell脚本小试牛刀

    2024年02月11日
    浏览(43)
  • 运维Shell脚本小试牛刀(二)

    运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解 [root@www shelldic]# cat checkpass.sh  #!/bin/bash - #================================================================================================================== # # #                          

    2024年02月10日
    浏览(40)
  • 运维高级--shell脚本完成分库分表

         随着系统的运行,存储的数据量会越来越大,系统的访问的压力也会随之增大,如果一个库中的表数据超过了一定的数量,比如说MySQL中的表数据达到千万级别,就需要考虑进行分库分表;      其次随着表数据的不断增大,会发现查询也随着变得缓慢,如果添加索

    2024年02月15日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包