OpenDKIM 的 UNIX 套接字和“其他”的权限

OpenDKIM 的 UNIX 套接字和“其他”的权限

Postfix 安装程序创建了一个系统用户postfix及其主要组,postfix而 OpenDKIM 的安装程序创建了一个系统用户opendkim及其主要组opendkim

为了使 Postfix 和 OpenDKIM 能够协同工作,大多数管理员会做两件事:

A

他们将一个次要组附加opendkim到 Postfix。

他们使用以下三(两)行设置 OpenDKIM 配置文件/etc/opendkim.conf来创建 UNIX 套接字:

UMask                   002
PidFile                 /var/run/opendkim/opendkim.pid
Socket                  local:/var/spool/postfix/opendkim/opendkim.sock

OpenDKIM 官方文档对配置参数进行了如下说明UMask

请求用于文件创建的特定权限掩码。这实际上仅适用于当 Socket 指定 UNIX 域套接字时创建套接字,以及 PidFile(如果有);

我知道 UNIX 套接字很方便,因为它们可以限制用户权限。就我而言,我希望 OpenDKIM 尽可能安全地与 Postfix 配合使用。但是UMask设置为002UNIX 套接字将创建所有权opendkim:opendkim和权限664= rw-rw-r--

我理解组成员(Postfix)需要读写 UNIX 套接字,但我不明白为什么网上几乎所有的教程(AC...)给其他人留下读取权限吗?

UMask这是普遍的误解吗?难道不是合理的值吗007?此外,PID 文件是使用相同权限创建的...

如果我检查系统上的任何其他 UNIX 套接字,其中一些也拥有其他套接字的权限...为什么这很重要?

┌───┐
│ # │ root > mailer > ~
└─┬─┘
  └─> ss -x -l | head -n 10
Netid State  Recv-Q Send-Q                               Local Address:Port                                   Peer Address:Port                                 
u_dgr UNCONN 0      0                              /run/systemd/notify 14848                                             * 0                                    
u_str LISTEN 0      128               /var/run/dovecot/director-userdb 13957121                                          * 0                                    
u_str LISTEN 0      128                           /run/systemd/private 14852                                             * 0                                    
u_str LISTEN 0      100                          /var/run/dovecot/dict 13957125                                          * 0                                    
u_str LISTEN 0      128                    /var/run/dovecot/dict-async 13957129                                          * 0                                    
u_str LISTEN 0      1                      /var/run/irqbalance568.sock 17673                                             * 0                                    
u_dgr UNCONN 0      0                      /run/systemd/journal/syslog 14859                                             * 0                                    
u_str LISTEN 0      128                        /var/run/dovecot/config 13957133                                          * 0                                    
u_str LISTEN 0      128                   /var/run/dovecot/login/login 13957135                                          * 0                                    

┌───┐
│ # │ root > mailer > ~
└─┬─┘
  └─> ls -l /var/run/dovecot/config 
srw------- 1 root root 0 Dec 31 07:35 /var/run/dovecot/config

┌───┐
│ # │ root > mailer > ~
└─┬─┘
  └─> ls -l /var/run/dovecot/login/login 
srw-rw-rw- 1 root root 0 Dec 31 07:35 /var/run/dovecot/login/login

答案1

使用 umask002可能受到常见默认 umask 的影响022- 这也是 opendkim 示例配置引用

由于 opendkim 对 pidfile 使用一个 umask 设置套接字文件,可能需要允许其他人对 pidfile 进行读取访问,以便也创建具有其他人读取权限的套接字文件,作为副作用

如果您甚至没有启用 pidfile 创建(例如,使用 systemd 时您不需要它)并且将 postfix 用户添加到 opendkim 组,那么 umask 是007有意义的。


或者,您可以让 opendkim 在只有 opendkim 和 postfix 可以访问的目录中创建套接字,如下所示:

$ cat /etc/tmpfiles.d/opendkim.conf 
d /run/opendkim-postfix 0750 opendkim postfix -

opendkim 主配置片段:

UMask   000
Socket local:/run/opendkim-postfix/opendkim.sock

其结果是:

# find /run/opendkim-postfix -printf '%M %m %p\n'
drwxr-x--- 750 /run/opendkim-postfix
srwxrwxrwx 777 /run/opendkim-postfix/opendkim.sock

这样,您就不必将 postfix 用户添加到 opendkim 组。


您引用的教程质量可能有限,因为一些云提供商将其技术文档外包给客户,然后客户通过云积分获得激励。因此,可以想象,这样的教程可能会使用其他现有教程和示例配置,而不会受到太多批评。

相关内容