【问题标题】:Limit bash script to its owner将 bash 脚本限制为其所有者
【发布时间】:2016-06-05 19:59:57
【问题描述】:

我在/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

【问题讨论】:

  • 这一切似乎有点复杂。这个设计应该解决什么问题?
  • sudo chmod 700 /home/*
  • 如果start.confchmod 600 你描述的错误应该是不可能的。您可能想要添加对该文件的读取访问权限的检查。 ... 或者,赛勒斯刚才所说的。

标签: linux bash scripting debian


【解决方案1】:

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

chmod 700 script.sh

就是这样。

【讨论】:

  • 因为人们倾向于在每个脚本上使用chmod +x ...,因此很容易出错
  • 你不应该关心这样的人。来自雷德蒙德的一家大型操作系统供应商这样做了。你看它在哪里结束...... :)
  • 你是对的。我想我不应该让它完全白痴证明。感谢您的提醒!
  • 提供适当的文档,甚至尽可能自动化安装过程。那应该行得通。如果还是有人弄乱了权限,那就别在意了。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 2016-12-04
    • 2015-05-26
    • 2020-06-02
    • 2019-02-15
    • 2016-11-18
    • 2012-12-15
    • 2013-08-12
    • 1970-01-01
    相关资源
    最近更新 更多