python - python 脚本 : Linux vs Solaris 上的 Setuid 位

标签 python linux solaris setuid

我正在 linux 和 Solaris 上运行这个小的 python 脚本作为非特权用户:

#!/usr/bin/python
import os
print 'uid,euid =',os.getuid(),os.geteuid()

在运行之前,setuid 位在脚本上设置(不是在 python 解释器上):

chown root:myusergrp getuid.py
chmod 4750 getuid.py

在 Solaris 上,有效的 uid 是由于 setuid 位而设置的:

uid,euid = 10002 0

但不是在 Linux 上:

uid,euid = 10002 10002

注意 Solaris 和 Linux 的 python 版本都是 2.6

是否可以让 Python Linux 像 Python Solaris 一样工作?

最佳答案

大多数 Unix 发行版通常不允许您在使用 #!口译员。 Solaris 恰好是一个允许它的发行版,因为它使用了比大多数其他发行版更安全的实现。

有关该机制为何如此危险的更多背景信息,请参阅此常见问题条目:How can I get setuid shell scripts to work?

有关更多讨论以及如何编译将运行您的脚本的 setuid 可执行文件,请参阅此链接:setuid on shell scripts

相关部分:

int main()
{
   setuid( 0 );
   system( "/path/to/script.sh" );

   return 0;
}

关于python - python 脚本 : Linux vs Solaris 上的 Setuid 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314012/

相关文章:

python - 如何将输入值与mysql数据库进行比较,没有匹配数据时自动添加 '0'和 '1'

python - 自动ssh进入服务器的脚本

linux - 就运行时间而言最快的语言是什么?

c - 为什么int类型在BSS段占8字节,在DATA段占4字节

solaris - mmap会使用连续内存吗? (在 Solaris 上)

java - 在 Solaris 上使用 Java 的文件名重音

python - 修改 Damerau-Levenshtein 算法以跟踪转换(插入、删除等)

python - 使用通用键值对对字典列表中的值求和

c++ - EMF 文件(.so)调试,符号未找到 VTable 错误

python - 在较大列表中处理可变大小的子列表