gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:02 28 4
gpt4 key购买 nike

我已经创建了一个应该从 perl 脚本启动的 bash 脚本。当我直接从终端运行 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 复制特定于应用程序的配置文件并交换该文件中的一些字符串,等等。

我是从事此类事件的新手,因此非常感谢任何可能的帮助。

最佳答案

您的脚本在与 Apache 进程相同的权限下运行。良好的安全做法要求您的 Web 服务器拥有尽可能有限的权限,以更改可能由 Web 服务器本身运行的文件。

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

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

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

综上所述,强烈考虑花钱聘请经验丰富、具有安全意识的开发人员来帮助您进行设置。设置这样的系统需要与安全性不同的思维方式,而这是您无法从 SO 的答案中获得的。否则,您可能不得不向您的老板解释一个来自某个随机国家/地区的 13 岁 child 如何删除您公司的所有数据,或者更糟的是如何将其发布到 BitTorrent 上。

关于linux - 从 perl 启动 bash 时命令失败,但从命令行启动时没有,权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7014635/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com