当前位置: 首页 > 面试题库 >

python脚本上的setuid位:Linux vs Solaris

夏季萌
2023-03-14
问题内容

以非特权用户身份 在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上,由于setuid位设置了有效的uid:

uid,euid = 10002 0

但不是在Linux上:

uid,euid = 10002 10002

请注意,Solaris和Linux的python版本均为2.6

是否可以将Python Linux用作Python Solaris?


问题答案:

大多数Unix发行版通常不允许您在使用#!的文件上使用setuid。口译员。由于Solaris使用的是比大多数其他发行版更安全的实现,因此Solaris恰恰是允许它的一种。

有关此机制为何如此危险的更多背景信息,请参见此常见问题解答条目:如何使setuid
shell脚本起作用?

请参阅此链接以获取更多讨论以及如何编译将运行脚本的setuid可执行文件:shell脚本上的setuid

相关部分:

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

   return 0;
}


 类似资料:
  • setuid(设置真实的用户识别码) 相关函数 getuid,setreuid,seteuid,setfsuid 表头文件 #include<unistd.h> 定义函数 int setuid(uid_t uid) 函数说明 setuid()用来重新设置执行目前进程的用户识别码。不过,要让此函数有作用,其有效的用户识别码必须为0(root)。在Linux下,当root使用setuid()来变换成其

  • setuid 设置真实的用户识别码 相关函数 getuid,setreuid,seteuid,setfsuid 表头文件 #include<unistd.h> 定义函数 int setuid(uid_t uid); 函数说明 setuid()用来重新设置执行目前进程的用户识别码。不过,要让此函数有作用,其有效的用户识别码必须为0(root)。在Linux下,当root使用setuid()来变换

  • 更新时间:2019-05-30 14:02:26 使用场景 Python脚本节点支持您通过编写Python代码来实现功能逻辑。如果平台基础功能节点,不足以满足您的使用场景,您可以使用Python脚本节点通过编写Python代码来灵活定制您的业务需求。 节点功能 支持您使用Python编写代码,实现您的业务逻辑。目前支持Python3.6版本。注意:Python脚本仅支持基本库,仅可用基本语法,不支

  • 当我运行 :(32/0,省略)1100 0001 0111 1110 0000 0000 0000 < li> :(第32页,共1页,略)1100 0001 0111 1110 0000 0000 0000 为什么Javascript计算

  • 问题内容: 我有一个长期运行的python脚本,希望能够从另一个python脚本结束。理想情况下,我正在寻找一种将进程ID设置为第一个脚本并能够从第二个脚本通过该ID查看其是否正在运行的方法。此外,我希望能够终止该长时间运行的过程。 有没有很酷的捷径可以实现这一目标? 另外,我在Windows环境中工作。 我最近在这里找到了另一种答案:检查python脚本是否正在运行 问题答案: 您可以通过以下方

  • 问题内容: 我想编写一个脚本将文件上传到FTP。 登录系统将如何工作?我正在寻找这样的东西: 以及任何其他登录凭据。 问题答案: 使用,您可以这样编写: 如果FTP主机需要TLS,请改用。 要检索它,可以使用: 编辑 : 要查找当前目录,请使用: FTP.pwd():返回服务器上当前目录的路径名。 要更改目录,请使用: FTP.cwd(pathname):设置服务器上的当前目录。