perl - 允许 unix 用户 'postgres' 访问 plperlu 的外部 .pm 文件

标签 perl postgresql centos file-permissions plperlu

我正在将 Windows perl/postgresql 网络应用程序移植到 CentOS。

postgresql.conf 我有这些行:

custom_variable_classes = 'plperl'              # list of custom variable class names

plperl.use_strict = on

plperl.on_plperlu_init = 'require "/path/to/my/app/dev/area/MyModule.pm";'

在 Windows 2003 中,这允许我将 use MyModule; 放入 PostgreSQL 的 plperlu 函数中,并且它们可以工作,前提是我已经转到包含 .pm 文件的路径并将 ACL 更改为在“安全”选项卡中授予用户 postgres“读取”和“读取和执行”权限。

在 CentOS 6.4 上,我有点困惑。当我尝试定义一个调用 MyModule 的 plperlu 函数时,它给我 ERROR: Can't locate/path/to/my/app/dev/area/MyModule.pm in @INC

我很困惑,因为 MyModule.pm 归我所有:我,并且有 664 个权限。我尝试了 665,但仍然没有成功:sudo -u postgres ls -l/path/to/my/app/dev/area/MyModule.pm 报告 Permission denied。就我认为我理解的 unix 权限而言,665 意味着“其他”具有读取和执行权限。

最佳答案

我刚刚写下这篇文章,然后意识到我最近找到了答案。

与我们的 Windows 设置不同,Linux 需要路径上所有目录的权限。所以我开始在路径上执行 ls -l,而且越来越短。它一直是 644,直到接近顶部,我有一个 700。我做了 chmod 705(也 chmod 701 工作,之后我切换到那个),然后宾果游戏,sudo -u postgres ls 可以看到它,我的 plperlu 函数定义也可以。

关于perl - 允许 unix 用户 'postgres' 访问 plperlu 的外部 .pm 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19057948/

相关文章:

perl - 为什么在这个 Perl 单行代码中未定义 @ARGV?

regex - 搜索模式 "?:"

Perl:如何让 Emacs 将引号添加到 Perl 脚本的完整路径?

python - Heroku教程运行python manage.py syncdb更新本地数据库报错

php - Echo php 代码不打印任何内容

linux-kernel - 使用 rpmbuild 重建 linux 内核最快

perl - 如何在 Perl 和 Moose 中创建不可变对象(immutable对象)的循环图?

postgresql - 使用 postgres 进行 Json 数组操作

Nginx 仅在将工作进程用户设置为 root 时有效

linux - CentOS目录结构为树形?