溫馨提示×

Oracle在Linux上的權限設置方法

小樊
46
2025-09-23 05:24:40
欄目: 云計算

Oracle在Linux上的權限設置方法
在Linux環境中,Oracle數據庫的權限設置需兼顧操作系統層面(用戶、目錄、文件權限)與數據庫層面(系統權限、對象權限、角色管理),兩者結合才能確保數據庫安全穩定運行。

一、操作系統層面權限設置

1. 創建專用Oracle用戶及組

Oracle數據庫需以專用用戶(如oracle)運行,避免使用root等高權限賬戶。首先創建用戶組(oinstall用于軟件安裝,dba用于數據庫管理),再創建用戶并加入對應組:

# 創建組
groupadd oinstall
groupadd dba
# 創建用戶(歸屬oinstall組,附加dba組)
useradd -g oinstall -G dba oracle
# 設置密碼
passwd oracle

2. 配置Oracle用戶環境變量

編輯Oracle用戶的~/.bash_profile(或~/.bashrc),添加Oracle環境變量,確保數據庫命令可全局調用:

# 設置Oracle安裝目錄、SID等變量
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1  # 根據實際路徑調整
export ORACLE_SID=orcl                                   # 數據庫實例名
export PATH=$PATH:$ORACLE_HOME/bin                       # 添加Oracle bin目錄到PATH
# 生效配置
source ~/.bash_profile

3. 設置目錄權限

Oracle的關鍵目錄(安裝目錄、數據文件目錄、配置文件目錄)需嚴格限制權限,防止未授權訪問:

# 安裝目錄(所有者:oracle;組:oinstall;權限:755,所有者可讀寫執行,組和其他用戶可讀執行)
chown -R oracle:oinstall /u01/app/oracle
chmod -R 755 /u01/app/oracle

# 數據文件目錄(所有者:oracle;組:dba;權限:775,所有者可讀寫執行,組可讀寫執行,其他用戶可讀執行)
chown -R oracle:dba /u01/oradata
chmod -R 775 /u01/oradata

# 配置文件目錄(如listener.ora、tnsnames.ora,所有者:oracle;組:oinstall)
chown oracle:oinstall /u01/app/oracle/network/admin/listener.ora
chown oracle:oinstall /u01/app/oracle/network/admin/tnsnames.ora
chmod 644 /u01/app/oracle/network/admin/*.ora

4. 配置SELinux(若啟用)

若系統啟用SELinux,需調整上下文以允許Oracle訪問相關資源:

# 設置Oracle Home目錄上下文
chcon -R -t oracle_home_t /u01/app/oracle
# 設置數據文件目錄上下文
chcon -R -t oracle_db_t /u01/oradata

5. 配置sudo權限(可選)

為Oracle用戶配置特定命令的免密執行權限,簡化日常運維(如啟動監聽、備份):

sudo visudo
# 添加以下內容(允許oracle用戶無需密碼執行lsnrctl和rman命令)
oracle ALL=(ALL) NOPASSWD: /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start, \
                           /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl stop, \
                           /u01/app/oracle/product/19.0.0/dbhome_1/bin/rman target /

二、數據庫層面權限設置

1. 系統權限管理

系統權限允許用戶執行數據庫級操作(如創建會話、建表、備份)。通過GRANT語句授予,遵循最小權限原則

-- 授予連接數據庫權限
GRANT CREATE SESSION TO test_user;
-- 授予建表、建視圖、建序列權限
GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO test_user;
-- 授予DBA權限(謹慎使用,僅給管理員)
GRANT DBA TO admin_user;

2. 對象權限管理

對象權限允許用戶操作特定數據庫對象(如表、視圖、存儲過程)。通過GRANT語句授予,可細化到列級:

-- 授予對employees表的查詢、更新權限
GRANT SELECT, UPDATE ON hr.employees TO test_user;
-- 授予對departments表的插入權限(僅針對name列)
GRANT INSERT(name) ON hr.departments TO test_user;
-- 授予執行存儲過程的權限
GRANT EXECUTE ON hr.calc_salary TO test_user;

3. 角色管理

角色是權限的集合,可簡化多用戶權限分配。創建角色→授予權限→分配角色:

-- 創建角色
CREATE ROLE hr_manager;
-- 授予角色權限
GRANT SELECT ON hr.employees, INSERT ON hr.departments TO hr_manager;
-- 分配角色給用戶
GRANT hr_manager TO hr_emp1, hr_emp2;
-- 角色可級聯授權(WITH ADMIN OPTION)
GRANT hr_manager TO dept_head WITH ADMIN OPTION;

4. 權限審計與撤銷

定期審計權限,撤銷不必要的權限,防止權限濫用:

-- 查看用戶系統權限
SELECT * FROM dba_sys_privs WHERE grantee = 'TEST_USER';
-- 查看用戶對象權限
SELECT * FROM dba_tab_privs WHERE grantee = 'TEST_USER';
-- 撤銷權限
REVOKE SELECT ON hr.employees FROM test_user;
REVOKE hr_manager FROM hr_emp1;

5. 密碼策略設置

通過PROFILE設置密碼復雜度、生命周期,增強賬戶安全性:

-- 創建密碼策略(可選,需先創建PROFILE)
CREATE PROFILE strict_profile LIMIT
  PASSWORD_LIFE_TIME 90 DAYS,       -- 密碼有效期90天
  PASSWORD_GRACE_TIME 7 DAYS,       -- 密碼過期前7天提醒
  PASSWORD_REUSE_TIME 365 DAYS,     -- 密碼重復使用間隔365天
  PASSWORD_COMPLEXITY CHECK (UPPER(SUBSTR(PASSWORD,1,1)) = UPPER(SUBSTR(PASSWORD,1,1))); -- 密碼首字母大寫

-- 將策略分配給用戶
ALTER USER test_user PROFILE strict_profile;

注意事項

  • 最小權限原則:僅授予用戶完成任務所需的最低權限,避免過度授權。
  • 定期審計:每月檢查權限分配情況,及時撤銷閑置或多余的權限。
  • 備份權限設置:修改權限前備份相關配置(如/etc/passwd、/etc/group、Oracle數據字典),便于恢復。
  • 文檔記錄:記錄權限變更原因、時間及操作人,便于追溯。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女