And*_*ood 13 bash environment-variables gnu-screen
screen在 bash 中运行会擦除变量 LD_LIBRARY_PATH。我已经阅读了一些资料,这似乎是预期的行为,但我需要解决它。
解决方法是将 LD_LIBRARY_PATH 声明添加到~/.bashrc. 就我而言,LD_LIBRARY_PATH 在 shell 启动和调用 screen 之间发生了很大变化,因此我需要将LD_LIBRARY_PATH的当前值获取到screen会话中。
use*_*686 14
screen不会取消设置环境变量;它由 Linux 本身删除。
在大多数系统上,/usr/bin/screen可执行文件与组的setgid位一起安装utmp,以便能够修改utmp数据库。它还使用setgid来控制对套接字目录 ( /var/run/screen/) 的访问。
在Linux上,当的setuid(或setgid的)程序是跑步,它不接收特定的环境变量(包括LD_LIBRARY_PATH,其他几个LD_*变量,HOSTALIASES),以减少可能的攻击点:否则,你可以写一个小型图书馆和伎俩su或sudo以这种方式调用您的“改进”功能。
您可以从 中删除setgid位screen,但您必须使所有人都可以完全访问套接字目录(模式 0777)。不过,这不应该是安全风险,因为它screen还会检查附加程序的 UID 本身。
但是,你应该不会使utmp数据库全球可写的。
在您的 中.screenrc,您可以使用该setenv命令在屏幕环境中设置一个值。
setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH_SCREEN
Run Code Online (Sandbox Code Playgroud)
这是在您的 shell 启动之前设置的。显然LD_LIBRARY_PATH_SCREEN需要在启动屏幕之前进行设置。
| 归档时间: |
|
| 查看次数: |
5278 次 |
| 最近记录: |