共用方式為


Linux 上的 SQL Server - 安全性和權限指南

本文說明 Linux 上 SQL Server 所需的服務帳戶和檔案系統許可權。 如需 Windows 上 SQL Server 權限的詳細資訊,請參閱 設定 Windows 服務帳戶和權限

內建 Windows 主體

即使 Linux 上的 SQL Server 是在作業系統帳戶 mssql 下執行,SQL Server 層仍存在下列 Windows 身分以確保相容性。 除非您完全了解風險,否則不要刪除或否認它們。

校長 預設 SQL Server 角色 詳細資訊
BUILTIN\Administrators sysadmin 對應至主機的根層級管理員。 某些系統物件會在此帳戶的內容中執行。
NT AUTHORITY\SYSTEM public 保留給 Windows SYSTEM 帳戶的服務識別碼(SID)。 仍然會創建,以確保期望它的跨平台腳本能夠成功運行。
NT AUTHORITY\NETWORK SERVICE 系統管理員 (無固定角色) 歷來是 Windows 上數個 SQL Server 服務的預設啟動帳戶。 僅為向後相容性而存在。 Linux 上的 SQL Server 資料庫引擎本身不會使用此功能。

檔案和目錄擁有權

資料夾/var/opt/mssql下的所有檔案都必須由mssql使用者,並且由mssql群組 (mssql:mssql) 擁有,兩者都具有讀取和寫入存取權。 如果您變更預設 umask (0022) 或使用替代掛載點,則必須手動重新套用這些權限。

資料夾的 mssql 預設權限如下:

drwxr-xr-x  3 root  root  4096 May 14 17:17 ./
drwxr-xr-x 13 root  root  4096 Jan  7  2025 ../
drwxrwx---  7 mssql mssql 4096 May 14 17:17 mssql/

資料夾內容 mssql 的預設權限如下:

drwxrwx--- 7 mssql mssql 4096 May 14 17:17 ./
drwxr-xr-x 3 root  root  4096 May 14 17:17 ../
drwxr-xr-x 5 mssql mssql 4096 May 14 17:17 .system/
drwxr-xr-x 2 mssql mssql 4096 May 14 17:17 data/
drwxr-xr-x 3 mssql mssql 4096 Sep 16 22:57 log/
-rw-r--r-- 1 root  root    85 May 14 17:17 mssql.conf
drwxrwxr-x 2 mssql mssql 4096 May 14 17:17 secrets/
drwxr-xr-x 2 mssql mssql 4096 May 14 17:17 security/

如需如何變更使用者資料位置、記錄檔位置或系統資料庫和記錄位置的詳細資訊,請參閱 使用 mssql-conf 工具在 Linux 上設定 SQL Server

一般 SQL Server 目錄

目標 預設路徑 詳細資訊
系統和使用者資料庫 /var/opt/mssql/data 包括 mastermodeltempdb 和任何新的資料庫,除非 mssql-conf 重新導向它們。 如需詳細資訊,請參閱 變更系統資料庫的預設位置
交易記錄 (如果分開) /var/opt/mssql/data,或透過 mssql-conf set filelocation.defaultlogdir設定的路徑。 如果您移動交易日誌,請保留相同的擁有權。 如需詳細資訊,請參閱 變更預設資料或記錄目錄位置
Backups /var/opt/mssql/data 在第一次備份之前,或者在映射磁區或目錄時,請先建立和設定 chown 。 如需詳細資訊,請參閱 變更預設備份目錄位置
錯誤日誌和擴充事件 (XE) 日誌 /var/opt/mssql/log 也會承載預設的系統健康狀態 XE 工作階段。 如需詳細資訊,請參閱 變更預設錯誤記錄檔目錄位置
記憶體轉儲 /var/opt/mssql/log 用於核心傾印和 DBCC CHECK* 傾印。 如需詳細資訊,請參閱 變更預設儲存目錄位置
安全秘密 /var/opt/mssql/secrets 儲存 TLS 憑證、資料行主金鑰等。

每個代理的最低 SQL Server 角色

代理人 執行方式 (Linux) 連線到 必要的資料庫角色/權限
快照代理程式 mssql (透過 SQL 代理程式作業) Distributor db_owner 在分佈數據庫中;在快照資料夾上讀取/寫入
記錄讀取器代理程式 mssql 出版商和發行商 db_owner 在發佈資料庫和分配中。 使用從備份初始化時可能需要 sysadmin
分發代理程式(推送) mssql 從分銷商至訂戶 db_owner 在發佈中; db_owner 在訂閱資料庫中。 讀取快照資料夾。 PAL 成員。
分發代理程式 (pull) mssql (在訂戶上) 訂閱者轉為經銷商
供應商到訂戶
與分發代理 (推送方式) 相同,但快照共用權限設定會套用在訂閱者主機上
合併代理程式 mssql 出版商、分銷商、訂閱者 db_owner 分銷中。 PAL 成員。 讀取快照資料夾。 在發佈和訂閱資料庫中讀取/寫入。
佇列讀取器代理程式 mssql Distributor db_owner 分銷中。 使用出版資料庫中的 db_owner 連線到 Publisher。

最佳做法

mssql根據預設,SQL Server 使用的使用者和群組是非登入帳戶,而且應該保持這種狀態。 基於安全性考慮,請盡可能對 Linux 上的 SQL Server 使用 Windows 驗證。 如需如何設定 Linux 上 SQL Server 的 Windows 驗證的詳細資訊,請參閱 教學課程:使用 adutil 設定 Linux 上 SQL Server 的 Active Directory 驗證

每當目錄不需要群組存取時,請進一步限制檔案許可權 (使用命令 chmod 700)。

將主機目錄或 NFS 共用繫結至容器或虛擬機器時,請先建立它們、它們,並對應 UID 10001 (預設值為 mssql)。

避免將 系統管理員 授與應用程式登入。 請改用細微角色和 EXECUTE AS 包裝函式。 建立另一個sa帳戶後,請停用或重新命名帳戶。 如需詳細資訊,請參閱 停用 SA 帳戶作為最佳實務