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套接字,但我不明白為什麼幾乎所有線上教學(A,,C...)為其他人保留讀取權限?

這是普遍的誤解嗎?難道不是一個合理的價值UMask007? 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 和 postfix 存取的目錄中建立 opendkim 套接字,如下所示:

$ 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 群組。


您引用的教程的品質可能會受到限制,因為一些雲端供應商將其技術文件外包給客戶,然後客戶會受到雲端積分的激勵。因此,正如人們可以想像的那樣,這樣的教程可以使用其他現有的教程和範例配置,而無需太多批評。

相關內容