我已经看过这个论坛中与错误解释器和拒绝权限相关的类似帖子,但无法找到此问题的解决方案。
我有一个 vps Linux x64(v2.6.18;CentOS 6.7)。我正在为客户开发一个特定项目(OpenClinica),我需要直接从 .bin 文件安装 Postgresql 版本 8.4(我知道是旧版本)。该文件看起来像postgresql-8.4.1-1-linux-x64.bin
.据我了解,该.bin
文件.sh
在/tmp/postgresql_installer/
.
我还被告知这个文件工作正常,并且已经在许多其他运行 OpenClinica 的 Linux (CentOS) 系统上成功安装了 Postgres。
当我在命令行中以 root 身份运行它时,输入以下内容
./postgresql* --mode text
我收到下面令人沮丧的消息。
Error:
Error running /tmp/postgresql_installer/getlocales.sh :
/bin/sh: /tmp/postgresql_installer/getlocales.sh:
/bin/sh: bad interpreter: Permission denied
我已经检查过的内容(在这个论坛和其他论坛中查看)
第一行
getlocales.sh
有#!/bin/sh
有一个链接
sh -> bash*
在/bin
root@vps [/bin]# ls -l sh lrwxrwxrwx 1 root root 4 Nov 14 12:29 sh -> bash*
sestatus
被禁用我在运行它之前给予了
chmod x
许可。postgres*.bin
我什至尝试过逃跑,
postgres*.bin
但~/
没有成功。
有任何想法吗?
答案1
如前所述,问题是使用 noexec 挂载 /tmp。解释很简单,一些安装脚本在 /tmp 解压缩可执行文件/脚本,然后尝试运行它们。
实际上,几个月前我也偶然发现了这个问题,当时出于安全原因,我将几台服务器的 /tmp 更改为 noexec,然后一些 Debian 软件包的安装/更新脚本停止工作。由于我是故意更改的,所以当时很容易发现问题所在。
我仍然认为在公共网络服务器中将 /tmp 设置为 noexec 是一个好主意,但是直到现在我还没有研究如何解决这个特定问题。
答案2
基于锐的回答,我执行了下面提到的命令;这个对我有用。
mount -o remount,exec /tmp