【发布时间】: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/test 归test 用户所有。当需要两个用户可以访问同一个文件夹时,添加一个组给其他用户,但是在 postgres 中不能添加其他组来访问其他用户的文件夹。
如何让 postgres 在不设置 chmod 777 的情况下访问和创建其他用户的文件夹或打开一个安全问题,使所有其他用户都可以访问测试文件夹主页?
【问题讨论】:
-
“简单”的方法是让
postgres用户成为/home下所有内容的组所有者,并将权限设置为775(或770)。更明智的方法是(即使它很丑陋)使用subprocess并在没有密码的情况下为sudo mkdir /home/*授予 postgres 用户 sudo 权限。 -
感谢工作正常:),但用户不是自己家的所有者组?
-
这无关紧要,只要 postgres 用户是 postgres 组的唯一成员。
标签: linux postgresql permissions