如何限制特定用户执行 bash 脚本

问题描述 投票:0回答:2

我正在学习基础操作系统课程,并被分配了如下作业: “编写一个 shell 脚本,将文件从当前文件夹移动到名为 Backup 的子文件夹。它应该接受源和目标作为脚本的参数。如果用户不键入两个参数,脚本应该显示错误参数,或者如果未找到文件或其他用户(除了您自己)尝试执行脚本。”

我写了一个脚本如下:

if [ $# -eq 2 ]; then
 if ! [[ -f "$1" ]]; then
  echo Error: The file $1 was not found.
  exit 1
fi
else
  echo Error: Check syntax or number of arguments
  echo Correct use: $0 [source] [destination]
  exit 1
fi

echo Copying file $1 to $2/backup/$1
mkdir $2
mkdir $2/backup
cp $1 $2/backup

我已经在 W7 上的 Cygwin 上对此进行了测试,因为我目前无法访问 Linux 环境(我们通常通过 SSH 连接到远程服务器,但由于某种原因它已关闭),并且它可以满足检查传递的参数数量但未找到文件。我已经做了一些搜索,但不幸的是我完全不知道如何执行限制用户执行的最后一部分 - 这就是我需要帮助的地方。

我更感兴趣的是了解它是如何完成的以及为什么这样做,而不是代码本身,所以如果可能的话,我将非常感谢广泛的解释。

谢谢

linux bash shell scripting
2个回答
2
投票

您可以使用环境变量 $USER 来检查您自己的用户名

if [ "$USER" != "allowed_username" ]; then
  echo 'Access denied'
  exit 1
fi

0
投票

使用文件权限不是显而易见的事情吗?使该脚本归您希望能够运行它的任何用户所有,并将权限设置为 0700。

如果脚本需要确定哪个用户正在运行它,则使用“id -u -n”。

© www.soinside.com 2019 - 2024. All rights reserved.