【问题标题】:How to able postgres user to create folders on other user directory?如何让 postgres 用户在其他用户目录上创建文件夹?
【发布时间】:2022-01-26 00:56:44
【问题描述】:

在 postgres 中有一个函数,例如:

CREATE OR REPLACE FUNCTION enroll_user()
    RETURNS TRIGGER
    LANGUAGE PLPYTHON3U
AS $$
    import os
    os.mkdir('/home/%s/data' % TD['new']['user'])

    return "MODIFY"
$$;

但是当从触发器调用函数时说:PermisionError[Errno 13] Permission denied: '/home/test/data'

Postgres 数据库以postgres 用户身份运行函数,/home/testtest 用户所有。当需要两个用户可以访问同一个文件夹时,添加一个组给其他用户,但是在 postgres 中不能添加其他组来访问其他用户的文件夹。

如何让 postgres 在不设置 chmod 777 的情况下访问和创建其他用户的文件夹或打开一个安全问题,使所有其他用户都可以访问测试文件夹主页?

【问题讨论】:

  • “简单”的方法是让postgres 用户成为/home 下所有内容的组所有者,并将权限设置为775(或770)。更明智的方法是(即使它很丑陋)使用 subprocess 并在没有密码的情况下为 sudo mkdir /home/* 授予 postgres 用户 sudo 权限。
  • 感谢工作正常:),但用户不是自己家的所有者组?
  • 这无关紧要,只要 postgres 用户是 postgres 组的唯一成员。

标签: linux postgresql permissions


【解决方案1】:

您可以创建新组testpg,将用户testpostgres添加到其中,更改文件夹的组并授予对文件夹的组写入权限。

groupadd mygroup
usermod -a -G test testpg
usermod -a -G postgres testpg
chgrp testpg /home/test
chmod g+rwx /home/test

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多