需求:让Linux上普通用户执行一个脚本,非 root 用户不能读到这个脚本中的内容!
但是为了安全与管理分权,脚本需要给非 root 用户去执行这个脚本中的内容。
以root用户登陆进入/home/test_acount目录创建中间过渡脚本cmd.sh
cd /home/test_acount
#!/bin/bashcat_sh=`cat $1`su - james -c "$cat_sh"
改变权限,让其他用户没有读的权限
chmod 700 cmd.sh
编辑/etc/sudoers文件
sudoedit /etc/sudoers
找到## Allow root to run any commands anywhere添加写入以下内容(其中test_account为最终执行脚本用户-只有执行权限,没有读取,写入等操作权限)
czc ALL=(ALL) NOPASSWD:/home/test_acount/cmd.sh
然后在/home/test_acount/创建一个only_run_deploy.sh脚本(用于运行deploy.sh)
echo 开始执行脚本!sh /home/test_acount/test_dir/deploy.shecho 脚本执行完毕!
改变权限 让所有用户没有任何权限且不能修改
chmod 000 /home/test_acount/only_run_deploy.shchattr +i /home/test_acount/only_run_deploy.sh
在其他任何用户运行
# 执行脚本sudo /home/test_acount/cmd.sh only_run_deploy.sh
这样我们在czc用户下就可以以root的身份运行test_acount账户目录下的/home/test_acount/test_dir/deploy.sh脚本,且czc帐号没有查看和操作/home/test_acount/test_dir/deploy.sh的权限!