gpt4 book ai didi

linux - Setuid Perl 脚本适用于 Solaris,但不适用于 Linux

转载 作者:行者123 更新时间:2023-12-03 09:50:50 25 4
gpt4 key购买 nike

好吧,这很奇怪。但是在尝试为某人重现问题的过程中(这成为一个潜在的争论点),我发现了这个有趣的怪事......采用这个愚蠢的简单 perl 脚本:

#!/usr/bin/perl

use POSIX;

$ENV{"PATH"} = "/usr/bin";
print "Effective:" . $> . "\n";
print "Actual :" . $< . "\n";
print "geteuid():" . geteuid() . "\n";

如果我以(例如)root 身份创建此脚本,将其设置为 4755 权限,我将在 Solaris 11.4 (Perl 5.22.1) 和 Solaris 10.3 (Perl 5.16.1) 上获得此脚本:

Effective:0
Actual :100
geteuid():0

在相同或更高版本的 Perl 上运行的完全相同的脚本,但在 Linux(RHEL 7.7、Ubuntu 14.04、Ubuntu 20.04、RHEL 6.10)上给我:

Effective:100
Actual :100
geteuid():100

如果我在运行此脚本的 Linux 上创建 suid 可执行文件,我将获得预期的 0/100/0 输出。

在 RHEL 6.10 主机上,它也有 Perl 5.8.4,安装 suidperl 后,perl 也会按预期提供 0/100/0。

知道为什么这适用于 Solaris 而不是 Linux 吗?当您处理迁移/升级问题时,平台特定的怪癖有点烦人......

最佳答案

如果可移植性是个问题,假设类 Unix 平台会尊重脚本上的 setuid 标志是不安全的。这不是 Perl 或任何其他解释器的问题——像这样的限制在相当深的层次上支持到平台中。许多人有充分的理由担心允许的 setuid 脚本会造成安全漏洞。

标准解决方案——正如您已经想到的那样——是从设置了 setuid 标志的二进制文件调用脚本。

关于linux - Setuid Perl 脚本适用于 Solaris,但不适用于 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63712121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com