Linux普通用户执行root权限脚本且没有读写权限

需求:让Linux上普通用户执行一个脚本,非 root 用户不能读到这个脚本中的内容! 但是为了安全与管理分权,脚本需要给非 root 用户去执行这个脚本中的内容。

    以root用户登陆进入/home/test_acount目录创建中间过渡脚本cmd.sh cd /home/test_acount
#!/bin/bash
  
cat_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.sh echo 脚本执行完毕! 改变权限 让所有用户没有任何权限且不能修改 chmod 000 /home/test_acount/only_run_deploy.sh chattr +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的权限!

经验分享 程序员 微信小程序 职场和发展