将 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
$SCRIPTUSER
在 start.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))
我在 /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
$SCRIPTUSER
在 start.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))