使普通用户可以执行脚本但是没有读权限

目录

   我们有这样一个需要需要让普通用户执行一个脚本,但是不能让除了 root 用户外的任何用户读到这个脚本中的内容,因为脚本中可能存放密码等重要信息。
而且为了安全我们必须以非 root 用户去执行这个脚本中的内容。

解决方案

# 我们可以利用 sudo 来解决这个问题
# 以 root 用户先建立脚本 cmd.sh
# vim cmd.sh 写入下面内容 $1 传入我们要真正执行的脚本名


#!/bin/bash

a=`cat $1`
su - admin -c "$a"

# 改变权限 让其他用户没有读的权限
chmod 700 cmd.sh

sudoedit  /etc/sudoers
# 写入下面内容
Defaults:admin !requiretty
admin ALL=(ALL) NOPASSWD: /home/admin/cmd.sh


#然后建立一个 script.sh
vim script.sh

#!/bin/bash
echo f >/test
echo ff >/home/admin/test


# 改变权限 让除了 root 用户没有任何权限
chmod 000 script.sh
# 并且让这个脚本不能被修改
chattr +i script.sh

# 执行脚本
sudo /home/admin/cmd.sh script.sh
# 这样就可以实现我们的需求了。

目录