本文說明 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 |
包括 master、model、tempdb 和任何新的資料庫,除非 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 帳戶作為最佳實務。