将bash脚本限制为其所有者

时间:2016-02-23 19:45:30

标签: linux bash scripting debian

/home我有不同的用户。每个用户都有一个start.sh脚本和一个start.conf用于配置。另外start.sh/bin/nameoftheuser相关联,以便更轻松地输入(这会增加问题的复杂性)

我想将脚本限制为使用它的用户。我现在所做的是:

cd
if [ -f start.conf ]; then
    . start.conf
else
    echo "start.conf not found"
    exit 2
fi

if [ $(whoami) != $SCRIPTUSER ]; then
    echo "You are logged in with $(whoami). Only $SCRIPTUSER is allowed to use this script"
    exit 2
fi

$SCRIPTUSERstart.conf中定义。但是当我使用错误的用户登录并且我想使用start.sh时,会包含错误的配置文件,因此代码的第二部分不会发现错误。

最后,每个用户都应限制他们的start.sh脚本不受限制,其他人不应该偶然称呼它

一个想法是将$0的所有者与当前用户进行比较。但是当/bin/nameoftheuser中存在符号链接时,符号链接归 root 所有。

包括配置文件并阅读允许哪些用户使用它并将$(whoami)与它进行比较,也不满足。这是因为其他用户可以调用它并包含自己的start.conf

2 个答案:

答案 0 :(得分:4)

为什么不简单地使用文件权限?

chmod 700 script.sh

就是这样。

答案 1 :(得分:1)

这将找到符号链接的所有者

owner=$(stat --format '%U' $(readlink -f /bin/nameoftheuser))