繁体   English   中英

从 perl 启动 bash 时命令失败,但从命令行启动时没有,权限问题

[英]Commands fails when starting bash from perl but not when starting from command line, permission issues

我创建了一个 bash 脚本,它应该从 perl 脚本开始。 当我直接从终端运行 bash 时,它就像一个魅力。 但是当尝试从我的 PERL 脚本运行 bash 时,我得到了很多权限错误。

我所做的活动是创建文件/目录/重新启动应用程序/等。 我应该如何配置才能使 perl 脚本能够在没有权限错误的情况下执行 bash。

我从 perl 执行命令,如下所示:

system($file, $arg);

bash中的命令示例:

exec 1>$1.log
exec 2>$1_error.log

mkdir /opt/$1

上述命令的错误日志示例:

[Wed Aug 10 18:17:17 2011] [error] [client 192.168.1.100] /opt/otrsadm/newinstance.sh: line 3: comp.log: Permission denied
[Wed Aug 10 18:17:17 2011] [error] [client 192.168.1.100] /opt/otrsadm/newinstance.sh: line 4: comp_error.log: Permission denied
[Wed Aug 10 18:17:17 2011] [error] [client 192.168.1.100] mkdir: 
[Wed Aug 10 18:17:17 2011] [error] [client 192.168.1.100] cannot create directory `/opt/comp'
[Wed Aug 10 18:17:17 2011] [error] [client 192.168.1.100] : Permission denied
[Wed Aug 10 18:17:17 2011] [error] [client 192.168.1.100]

我正在做的是在 Apache 上创建一个全新的应用程序实例。 这意味着,bash 正在创建必要的目录,将应用程序复制到该目录,创建新数据库并加载模板转储,复制 apache 的应用程序特定配置文件并交换该文件中的一些字符串等。

我是做这种活动的新手,所以非常感谢任何可能的帮助。

我猜您当前的工作目录在您的 perl 脚本中是错误的 - 您正在尝试在您无权创建目录的目录中执行 bash 命令。

您的脚本在与 Apache 进程相同的权限下运行。 良好的安全实践要求您的 web 服务器具有尽可能有限的权限来更改可能由 web 服务器运行的文件。

因为这听起来正是您想要做的,所以要尽可能少地放宽权限以获得您想要的结果。

我的建议是查看程序sudo 它可以作为更多特权用户运行程序,并提供一些合理的访问控制。 基本思想是创建一个脚本,该脚本拥有,并且只能由 root 用户写入。 然后允许 apache 用户(或 httpd,或您的系统调用运行 Apache 的用户)以具有写入权限的用户身份通过sudo执行该脚本/opt 如果您可以以比 root 权限更低的用户身份执行脚本,那也很好。

假设您在脚本中有良好的错误检查并遵循所有良好的安全实践,您将相当安全。

综上所述,强烈考虑聘请一位经验丰富、具有安全意识的开发人员来协助您进行设置。 设置这样的系统需要对安全性有不同的心态,而这是您无法从 SO 的答案中得到的。 否则你可能不得不向你的老板解释一个来自某个随机国家的 13 岁孩子如何删除了你所有的公司数据,或者更糟糕的是在 BitTorrent 上发布了这些数据。

在您的日志中,您有一条跨行拆分的错误消息:

mkdir: 
cannot create directory `/opt/comp'
: Permission denied

您的 Perl 脚本是否有可能使用包含换行符的参数调用您的 bash 脚本? (虽然这不能解释为什么“mkdir:”本身就在一行上。)

您对/opt有写权限吗?

将opt目录的权限更改为777(每个人都可以读/写/执行)

chmod 777 /选择/

我认为这可能会解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM