相关疑难解决方法(0)

如何阻止 root 运行脚本

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

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

使用 Bash shell。

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

bash root account-restrictions

10
推荐指数
1
解决办法
5042
查看次数

bash 可以使用 uid 0 和不同的 euid 运行吗?

我正在编写一些bash代码,我想检查脚本是否具有 root 权限。我从其他人那里看到的所有代码都只检查$EUID == 0. 完全有可能让其他程序以 UID = 0 和 EUID > 0 运行。我的代码不应该检查这两者吗?或者 bash 有什么东西可以防止这种(奇怪的)情况发生吗?

对于那些想要看到这种情况的人,这里有一个概念证明:

[root@new-host bennett]# cp /bin/sleep .
[root@new-host bennett]# chown bennett sleep
[root@new-host bennett]# chmod 4755 sleep
[root@new-host bennett]# ll sleep 
-rwsr-xr-x. 1 bennett root 32188 Sep  9 02:38 sleep
[root@new-host bennett]# ./sleep 1000 &
[root@new-host bennett]# ps -e -o user= -o ruser= -o comm= | awk '$1 != $2'
bennett  root     sleep
Run Code Online (Sandbox Code Playgroud)

回顾一下这个问题:在任何情况下bash都可能遇到这样的情况吗?(( $UID == 0 && …

linux bash setuid uid

3
推荐指数
1
解决办法
7740
查看次数

在 sh 和 bash 中检查 root 用户

我正在尝试编写一个脚本,在新的 FreeBSD 安装上自动安装端口/包。为此,执行脚本的用户必须是 root。

系统“应该”是处女的意思bashsudo可以安装也可以不安装;所以我试图解释它。为此,我正在检查用户 ID 是否等于 0。

问题是,在 bash 和 sh 之间,环境变量是不同的:

  • bash -> $EUID(全部大写)
  • sh -> $euid (都更低)

除了环境变量之外,还有其他方法可以检查 root 用户,还是应该根据环境调整用户的检查?

freebsd bash root bourne-shell

1
推荐指数
1
解决办法
2794
查看次数

标签 统计

bash ×3

root ×2

account-restrictions ×1

bourne-shell ×1

freebsd ×1

linux ×1

setuid ×1

uid ×1