AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1096470
Accepted
Alexx Roche
Alexx Roche
Asked: 2022-03-19 03:57:50 +0800 CST2022-03-19 03:57:50 +0800 CST 2022-03-19 03:57:50 +0800 CST

如何安全地阻止 postfix 对 sqlite 数据库的组权限挑剔?

  • 772

背景

我使用 sqlite 设置了一个示例 postfix 服务器来存储别名和邮箱详细信息,(这样它们就可以实时更新,并拥有一个单一的事实来源作为数据库。)

为了安全起见,我在可能的情况下运行 chroot 的 postfix 部分,因此数据库(mail.sqlite)位于 /var/lib/postfix/ 中(一切正常。)

所需功能

我编写了一个 Web 前端来让用户添加新的电子邮件地址。Web 前端作为 www-data 运行。

我将 www-data 添加到 postfix 组,以便chmod g+rw /var/lib/postfix/mail.sqlite /var/lib/postfix/使 Web 前端能够更新数据库。

电子邮件进进出出。Web 前端可以创建远程更新删除别名。我重新启动 postfix 并检查日志:

postfix/postfix-script[26524]: warning: group or other writable: /var/lib/postfix/.
postfix/postfix-script[26525]: warning: group or other writable: /var/lib/postfix/./mail.sqlite

如果我chmod g-w /var/lib/postfix/mail.sqlite让 postfix 很高兴,但我的 Web 前端无法添加新的别名。

我可以有一个 cron 脚本来用权威的 /var/www/admin/app/mail.sqlite 替换 /var/lib/postfix/mail.sqlite,但这闻起来像竞争条件,或者至少是不雅的。

(我想知道为什么配置为时,postfix 将数据库称为“/var/lib/postfix/./mail.sqlite” dbpath = /var/lib/postfix/mail.sqlite?)

问题

如何让我的 cgi Web 前端写入访问 postfix 的数据库,而不将其作为postfix运行并保持 postfix 满意?(我认为我必须在添加 SELinux 策略之前解决这个问题。)

编辑:

我有 main.cf

virtual_mailbox_maps = sqlite:/etc/postfix/sqlite_mailbox.cf
virtual_alias_maps = sqlite:/etc/postfix/sqlite_alias.cf
virtual_mailbox_domains = sqlite:/etc/postfix/sqlite_domains.cf

并尝试过proxymap:

virtual_mailbox_maps = proxy:sqlite:/etc/postfix/sqlite_mailbox.cf
virtual_alias_maps = proxy:sqlite:/etc/postfix/sqlite_alias.cf
virtual_mailbox_domains = proxy:sqlite:/etc/postfix/sqlite_domains.cf

两者似乎同样适用于电子邮件处理,但在重新启动后缀后,两者仍然记录:

postfix/postfix-script[957]: warning: group or other writable: /var/lib/postfix/.             
postfix/postfix-script[958]: warning: group or other writable: /var/lib/postfix/./mail.sqlite
permissions postfix sqlite
  • 1 1 个回答
  • 49 Views

1 个回答

  • Voted
  1. Best Answer
    Matthew Ife
    2022-03-25T07:05:24+08:002022-03-25T07:05:24+08:00

    这个错误的来源是此时的脚本“postfix-script”:

    find $queue_directory/. $queue_directory/pid \
        -prune \( -perm -020 -o -perm -002 \) \
        -exec $WARN group or other writable: {} \;
    ..
    find $todo \( -perm -020 -o -perm -002 \) \
        -exec $WARN group or other writable: {} \;
    ..
    find $data_directory/. \( -perm -020 -o -perm -002 \) \
        -exec $WARN group or other writable: {} \;
    ..
    

    $todo实际上是config_directory, shlib_directory,daemon_directory和meta_directory作为一个列表。

    您可以运行该postconf命令来确定这些变量是什么。

    $ postconf queue_directory config_directory daemon_directory meta_directory shlib_directory data_directory
    queue_directory = /var/spool/postfix
    config_directory = /etc/postfix
    daemon_directory = /usr/libexec/postfix
    meta_directory = /etc/postfix
    shlib_directory = /usr/lib64/postfix
    data_directory = /var/lib/postfix
    

    这似乎表明,如果您将实际的 sqlite 数据库保留在这些目录之外,postfix-script 将不知道检查它们。

    因此,您可以创建由 Web 服务器和邮件服务器共享的新内容,例如 -/srv/maildb/根据您的偏好设置所有权并像这样绕过它。

    哦,我要指出您可能想要更改您的 chroot 环境以支持加载数据。您可能会使用硬链接,但感觉就像是 hack。

    • 2

相关问题

  • 如何在 Exchange 2007 中设置资源邮箱日历的忙/闲权限?

  • 共享文件夹中某些文件的访问被拒绝错误

  • Bash 脚本:要求脚本以 root 身份运行(或使用 sudo)

  • 如何授予用户安装 Windows 服务的能力?

  • 限制用户向电子邮件地址发送电子邮件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve