題 為什麼mysqld將/ var / log / mysql的用戶/組設置為's'權限?


在Ubuntu, sudo apt-get install mysql-server,包裹將:

  • 創建一個帳戶 mysql
  • 創建存儲目錄 /var/lib/mysql 經許可 drwx------ 4 mysql mysql
  • 創建日誌目錄 /var/log/mysql 經許可 drwxr-s--- 2 mysql adm

為什麼?在我看來,是的許可 /var/log/mysql 應該 drwxr-x--- 4 mysql mysql。 你能給我一些關於這個問題的見解/約定嗎? s 位和'adm'組?


3
2018-02-05 02:39


起源


歸結為 SetGID 設置。那背後的邏輯?不確定。希望有人會發布一個很好的答案來解釋使用 s 在這種情況下。 - JakeGould


答案:


克+ RX

因為mysqld運行在 mysql 帳戶,已經是 所有者 的 /var/lib/mysql,只有“用戶”權限位適用;完全沒有必要授予對該組的任何訪問權限。 (如果一個無能的管理員將常規用戶添加到網絡中,它甚至可能會產生安全問題 mysql 組;如果目錄是g + rx,則允許此類用戶繞過MySQL權限檢查。)

克+ S

在目錄上, “setgid”g + s位 表示在裡面創建的新項目將從目錄繼承其組,而不是從進程繼承。這意味著所有日誌文件都將由:adm擁有,無論mysqld本身屬於哪個組。

ADM

授予對系統日誌文件的讀訪問權限實際上是“adm”的唯一目的。 (過去,那些過去常被留在 /usr/adm,這當然是主頁目錄 adm 用戶帳號。)

我並不完全確定其名稱的來源,儘管我的猜測是區別在於執行系統管理的“運營商”和根據系統使用日誌負責會計和支付的“管理員”。


2
2018-02-05 07:59



非常明確的解釋。 - ShenLei