我有一个奇怪的问题,我无法以 root 身份在 AIX 虚拟机上安装 Sybase DB 服务器。我以 root 身份登录并启动安装程序:
bash-4.2# ./setup.bin -i console
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
Launching installer...
./setup.bin: /tmp/install.dir.3277230/Linux/resource/jre/bin/java: 0403-006 Execute permission denied.
正如您所看到的,安装程序所做的第一件事就是解压其自己的 JRE 并尝试安装它,在此期间我收到了权限错误。所以我检查了文件的权限:
bash-4.2# ls -al /tmp/install.dir.3277230/Linux/resource/jre/bin/java
-rwxr-xr-x 1 28886 ipsec 15755 Jul 14 2013 /tmp/install.dir.3277230/Linux/resource/jre/bin/java
我不明白的是,这个 UID 不存在于我的 /etc/passwd 文件中。我还尝试了以下方法:
bash-4.2# cd /tmp/install.dir.3277230/Linux/resource/jre/bin
bash-4.2# ./java
bash: ./java: cannot execute binary file
bash-4.2# sh java
sh: java: 0403-006 Execute permission denied.
安装过程创建的临时文件是否可能属于某种临时用户?这就是为什么即使我以root用户身份启动setup.bin这个文件也不会执行的原因吗?如果是这样,我如何确保安装可以继续?
答案1
由于每个人都有执行权限,所以对我来说只有2种可能:
- 您无法访问二进制文件,因为您没有权限深入文件结构(
x
途中某处缺少权限)。 - 内核实际上无法加载该可执行文件,因为它不符合某些系统要求,例如您的体系结构。
在第一种情况下,一个好的解决方案可能是使用su
:切换到应该运行该文件的帐户,然后尝试访问它。从根开始,逐步深入到您的文件。最终,cd
会遇到一个没有权限问题。当然,另一件事可能是您只是没有该文件的执行权限,但这不是您的情况。
现在,如果这似乎不是权限问题(就像您的情况一样),那么您可能正在尝试执行系统无法处理的操作。一个好主意可能是在您的可执行文件上使用来file
检查它是否与您的体系结构匹配。例如,在我的系统上...
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.24.
...这非常好,因为我运行的是 64 位机器(x86-64 架构),它支持 System V 实现。我也使用GNU/Linux系统,它甚至适合最后一条信息。