/bin/sh:错误的解释器:安装 Postgres 时权限被拒绝

/bin/sh:错误的解释器:安装 Postgres 时权限被拒绝

我已经看过这个论坛中与错误解释器和拒绝权限相关的类似帖子,但无法找到此问题的解决方案。

我有一个 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

我已经检查过的内容(在这个论坛和其他论坛中查看)

  1. 第一行getlocales.sh#!/bin/sh

  2. 有一个链接sh -> bash*/bin

    root@vps [/bin]# ls -l sh
    lrwxrwxrwx 1 root root 4 Nov 14 12:29 sh -> bash*
    
  3. sestatus被禁用

  4. 我在运行它之前给予了chmod x许可。postgres*.bin

  5. 我什至尝试过逃跑,postgres*.bin~/没有成功。

有任何想法吗?

答案1

如前所述,问题是使用 noexec 挂载 /tmp。解释很简单,一些安装脚本在 /tmp 解压缩可执行文件/脚本,然后尝试运行它们。

实际上,几个月前我也偶然发现了这个问题,当时出于安全原因,我将几台服务器的 /tmp 更改为 noexec,然后一些 Debian 软件包的安装/更新脚本停止工作。由于我是故意更改的,所以当时很容易发现问题所在。

我仍然认为在公共网络服务器中将 /tmp 设置为 noexec 是一个好主意,但是直到现在我还没有研究如何解决这个特定问题。

答案2

基于锐的回答,我执行了下面提到的命令;这个对我有用。

mount -o remount,exec /tmp

相关内容