运行某些脚本/命令以用户身份挂起,以root用户身份可以挂起

约翰·李希(John Leehey)

我有一个用户jenkins在运行某些脚本或命令时挂起(这是一个android构建服务器)。当运行与相同的脚本/命令时root,它们将执行OK。

例子:

作为用户jenkins
> java
-挂起-

作为用户root
> java
-使用帮助输出-

对于许多以jenkinsandroid等方式运行的命令,都会发生这种情况java,但像ps这样的命令cat就可以正常工作。

这是最近的发展,因此可能是某种权限问题,但我无法确定。

更新:set -x在脚本的开头添加以下内容即可显示在调用java时该行挂起了 + exec /etc/alternatives/java_sdk_1.8.0/bin/java -Dorg.gradle.appname=gradlew -classpath /var/lib/jenkins/workspace/android-project/gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain assembleDebug

strace -fo java在jenkins和root用户上运行之间的差异在以下几行显示出差异:

5319  stat("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e | 5302  stat("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e
5319  open("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e | 5302  open("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e
5319  stat("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e | 5302  stat("/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-2.b16.e
5319  open("/opt/glibc-2.14/lib/tls/x86_64/libpthread.so.0",  | 5302  open("/etc/ld.so.cache", O_RDONLY) = 3
5319  stat("/opt/glibc-2.14/lib/tls/x86_64", 0x7ffe601248c0)  | 5302  fstat(3, {st_mode=S_IFREG|0644, st_size=49448, ...}) =
5319  open("/opt/glibc-2.14/lib/tls/libpthread.so.0", O_RDONL | 5302  mmap(NULL, 49448, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fa
5319  stat("/opt/glibc-2.14/lib/tls", 0x7ffe601248c0) = -1 EN | 5302  close(3)                          = 0
5319  open("/opt/glibc-2.14/lib/x86_64/libpthread.so.0", O_RD | 5302  open("/lib64/libpthread.so.0", O_RDONLY) = 3
5319  stat("/opt/glibc-2.14/lib/x86_64", 0x7ffe601248c0) = -1 | 5302  read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0
5319  open("/opt/glibc-2.14/lib/libpthread.so.0", O_RDONLY) = | 5302  fstat(3, {st_mode=S_IFREG|0755, st_size=146592, ...}) =

左边是jenkins用户。在关于glibc-2.14的领域似乎似乎失败了,这是通过环境变量指向的LD_LIBRARY_PATH

约翰·李希(John Leehey)

TL; DR:一些用户将环境变量设置为use glibc-2.14,这会导致Java VM执行失败。

查看strace diff,尤其是以下一行:

5319  open("/opt/glibc-2.14/lib/libpthread.so.0", O_RDONLY)

这表明某些用户正在使用glibc-2.14二进制文件,而其他用户正在使用系统glibc库(版本为2.12)。

不同之处在于,有些用户将LD_LIBRARY_PATH环境变量设置为glibc-2.14目录,而其他用户则没有,默认为系统的2.12清除LD_LIBRARY_PATH该命令将为这些用户成功运行java命令。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有我可以以非root用户身份运行的命令,以查看用户是否可以运行某些sudo命令

允许用户以root用户身份运行命令

如何以root用户身份执行脚本,以特定用户身份执行脚本中的某些命令,以root用户身份执行一个命令

Linux:以root用户身份运行特定命令

如何输入用户帐户并从以root用户身份运行的Shell脚本中运行命令?

以root用户身份运行的脚本可以以普通用户身份运行另一个脚本吗?

非root用户可以root身份运行passwd命令,为什么不能更改root密码?

运行Shell脚本时提示用户以root用户身份登录

如何在以root权限开头的脚本中以非root用户身份运行命令?

以root用户身份运行bash脚本,该脚本中具有sudo命令

使用sudo运行bash脚本,以普通用户身份使用某些命令

root是否可以以非root用户身份执行命令?

在root脚本中以普通用户身份运行python run命令

脚本查看特定进程是否以root用户身份运行

新贵:以非特权用户身份运行服务,并以root用户身份启动预启动脚本

以root身份运行select shell命令而不给用户sudo权限?

以root用户身份在jenkins中运行shell命令吗?

再次以root用户身份运行同一命令

允许用户以root身份通过ssh运行单个命令

我可以使脚本始终以root用户身份执行吗?

从sudo提升脚本以标准用户身份运行命令

从python脚本以超级用户身份运行命令

登录时运行脚本,并以用户登录身份(而不是root用户)运行脚本

为什么root用户可以在不提供密码的情况下以任何用户身份运行任何命令?

如何在 Ubuntu 中使用 python 以非 root 用户身份运行 root 用户命令

以系统用户身份运行fabric运行命令

无法以root用户身份执行bash脚本?

以root用户身份从php执行shell脚本?

BASH脚本是以root身份运行的,整齐的分组命令方式是以另一个用户身份运行的吗?