将 bash 脚本限制为其所有者

Limit bash script to its owner

我在 /home 中有不同的用户。每个用户都有一个 start.sh 脚本和一个 start.conf 用于配置。此外 link 中的 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脚本独占,其他人不应该可以意外调用它


一个想法是将 [=21=] 的所有者与当前用户进行比较。但是当/bin/nameoftheuser中有符号link时,符号link归root所有。

包括配置文件和读取允许使用它的用户并与它比较$(whoami),也不令人满意。这是因为不同的用户可以调用它并包含他们自己的 start.conf

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

chmod 700 script.sh

就是这样。

这将找到符号 link

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