需求:让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的权限!

Logo

更多推荐