/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
$SCRIPTUSER
在start.conf
中定义。但是当我使用错误的用户登录并且我想使用start.sh
时,会包含错误的配置文件,因此代码的第二部分不会发现错误。
最后,每个用户都应限制他们的start.sh
脚本不受限制,其他人不应该偶然称呼它
一个想法是将$0
的所有者与当前用户进行比较。但是当/bin/nameoftheuser
中存在符号链接时,符号链接归 root 所有。
包括配置文件并阅读允许哪些用户使用它并将$(whoami)
与它进行比较,也不满足。这是因为其他用户可以调用它并包含自己的start.conf
答案 0 :(得分:4)
为什么不简单地使用文件权限?
chmod 700 script.sh
就是这样。
答案 1 :(得分:1)
这将找到符号链接的所有者
owner=$(stat --format '%U' $(readlink -f /bin/nameoftheuser))