背景

            工作中,很多脚本会有特殊的执行用户的要求(比如es启动,比如非root用户),但如何在脚本内限制相关用户来结合本身的权限系统做个双保险呢



方案

脚本路径 /usr/local/test/chk_who

默认为root用户,具体使用用户可以通过传参指定

直接上代码

#!/bin/bash

#监测当前脚本执行用户
function chk_who(){
true_user=$1
curr_user=`whoami`
if [ -z "${true_user}" ];then
[ ${curr_user} == "root" ] || { echo "默认使用root用户";exit 1; }
elif [ ${curr_user} != ${true_user} ];then
echo "应该用${true_user}"
exit 1
fi
}



如何调用

脚本路径 /usr/local/test/test_chk_who.sh

#!/bin/bash

# 载入模块
. chk_user

# 调用具体函数
chk_who $1

# 用户正确才会输出
echo "当前用户符合标准"




执行结果

[root@test-linux test]# bash test_chk_who.sh  #不传参代表使用root,正常通过
当前用户符合标准
[root@test-linux test]#
[root@test-linux test]# bash test_chk_who.sh aa #传参代表使用aa用户,而当前为root,不通过
应该用aa