gpt4 book ai didi

python - LD_LIBRARY_PATH 在 python os.environ 中看不到

转载 作者:行者123 更新时间:2023-12-04 11:46:46 26 4
gpt4 key购买 nike

python 中的 LD_LIBRARY_PATH 有问题。我无法在 python 解释器中得到它。我正在使用 python :

$ Python 2.6.6 (r266:84292, Jul 22 2015, 16:47:47)[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux2

>>> import os
>>> print os.environ['LD_LIBRARY_PATH']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/UserDict.py", line 22, in __getitem__
raise KeyError(key)
KeyError: 'LD_LIBRARY_PATH'

但是在 shell 中, LD_LIBRARY_PATH 具有值:
echo $LD_LIBRARY_PATH
/var/test/lib

不知道为什么 LD_LIBRARY_PATH 被忽略?

当我手动导出测试变量“MY_TEST”时,我可以看到它
$exprot MY_TEST=/var/
>>> print os.environ['MY_TEST']
/var/

但是如果我导出 LD_LIBRARY_PATH:
    $export LD_LIBRARY_PATH=/var
>>> print os.environ['LD_LIBRARY_PATH']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/UserDict.py", line 22, in __getitem__
raise KeyError(key)
KeyError: 'LD_LIBRARY_PATH'

有人知道为什么吗?

最佳答案

exec 出现时,Linux 会“清理”环境中的某些东西。另一个程序导致可能有问题的更改(在安全上下文中)。这些问题之一是库路径,因为否则它可能被用作可能的攻击向量,例如:

  • 查找 root 拥有的任何可执行文件与 setuid位设置。
  • 找出使用了哪些共享库(以及其中的函数)。假设它是 printf , 例如。
  • 创建一个包含 printf 的共享库在单独的进程中打开终端/shell 的函数,然后等待它退出。
  • 更改 LD_LIBRARY_PATH以便您的图书馆的位置是它的第一件事。
  • 运行特权可执行文件。

  • 因为在标准位置之前搜索路径,所以您现在拥有一个具有完全 root 权限的 shell,因为它是由具有这些权限的进程启动的。
    sanitizer 可以防止这个漏洞被利用。在 SELinux 之前,我相信用户/组 ID 和有效用户/组 ID 用于决定是否需要清理。 SELinux 引入了内核为相关安全更改设置的标志的概念。

    这与您试图避免放置 . 的原因相同 root 上的任何地方用户 PATH多变的。如果这样做,则有可能是 root将全权运行一些任意用户创建的脚本。
    例如,如果我创建一个 ls脚本,然后通知管理员 ls在输出中返回有趣的字符,但只有当当前目录是我的主目录时,他们可能做的第一件事就是检查它:
    root$ cd /home/paxdiablo
    root$ ls
    如果他们愚蠢地有一条路径 .:all/other/paths ,游戏结束了,伙计:-)
    我的 ls脚本会做一些事情,比如创建一个与 root 具有相同权限的新用户但是使用我知道的密码,然后运行真正的 ls为了说服管理员没有问题。然后管理员会称我为白痴并关闭票证,但我会通过后门进入系统。

    关于python - LD_LIBRARY_PATH 在 python os.environ 中看不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42643831/

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