如何阻止 root 运行脚本

tro*_*nda 10 bash root account-restrictions

Glassfish的应用服务器提供了脚本来管理应用程序服务器,并启动和停止他们,我想从运行此脚本限制root用户。原因是一些关键开发者忘记以非特权用户身份管理服务器,如果他们以root用户身份重新启动应用服务器,则应用服务器必须由root用户运行[*]。

避免授予 root 访问权限并不是一种选择,开发人员忘记了,因为他们习惯于在本地计算机上执行此操作。我希望asadmin脚本要么更改为以非特权用户身份运行,要么在每次由 root 运行脚本时选择显示错误消息。

使用 Bash shell。

[*]:我试图修复文件的权限,但即使我已经找到了很多 root 拥有的文件并对其进行 chmod,应用程序遇到了奇怪的错误,我必须再次以 root 身份运行。

bah*_*mat 19

与其他答案类似,但朝着您想要的方向发展。

if [[ $EUID -eq 0 ]]; then
  echo "This script must NOT be run as root" 1>&2
  exit 1
fi
Run Code Online (Sandbox Code Playgroud)

或者,您可以sudo在脚本中使用该-u标志来强制以非特权用户身份执行,以指定要运行的用户身份。我不使用 Glassfish,但这里有一个原型示例伪脚本。

#!/bin/bash

if [ $1 == "start" ]; then
  sudo -u nobody /usr/bin/glassfish
fi
Run Code Online (Sandbox Code Playgroud)

希望你能明白。抱歉,我真的不知道脚本是什么样的,或者非特权用户的名称。