温馨提示×

Ubuntu Oracle权限设置技巧

小樊
45
2025-10-08 06:37:55
栏目: 云计算

Ubuntu系统上Oracle数据库权限设置技巧

一、操作系统层面权限设置

1. 用户与组管理:遵循最小权限原则

为Oracle创建专用用户及分组,隔离系统权限。通常需创建以下组:

  • oinstall:安装组,拥有Oracle软件目录的读写权限;
  • dba:数据库管理员组,拥有数据库管理操作权限(如启动/停止数据库);
  • 可选:oper(操作员组,执行备份/恢复)、backupdba(备份管理员组)等。
    创建用户并分配组:
sudo groupadd oinstall sudo groupadd dba sudo useradd -g oinstall -G dba -d /home/oracle -s /bin/bash oracle sudo passwd oracle # 设置用户密码 

关键技巧:避免将Oracle用户加入sudo组,减少系统级权限风险。

2. 目录权限:精细化控制访问范围

Oracle软件目录(如/u01/app/oracle/product/19.0.0/dbhome_1)和数据目录(如/u01/app/oracle/oradata)需严格设置权限:

sudo mkdir -p /u01/app/oracle/{product/19.0.0/dbhome_1,oradata} sudo chown -R oracle:oinstall /u01 # 所有者:oracle;所属组:oinstall sudo chmod -R 775 /u01 # 目录权限:所有者可读/写/执行,组可读/执行,其他用户无权限 

关键技巧:数据目录(如oradata)应限制为oracle用户专属访问,避免其他用户修改数据库文件。

3. 系统内核参数:优化Oracle运行环境

修改/etc/sysctl.conf文件,调整以下关键参数(根据服务器内存调整数值):

kernel.shmmax = 2147483648 # 最大共享内存段大小(建议为物理内存的一半) kernel.shmall = 524288 # 共享内存总页数(shmmax/页大小,页大小通常为4KB) kernel.shmmni = 4096 # 共享内存段最大数量 fs.file-max = 6815744 # 系统最大文件描述符数 net.ipv4.ip_local_port_range = 9000 65500 # 数据库监听端口范围 

使参数生效:

sudo sysctl -p 

关键技巧:参数设置过大会导致系统资源耗尽,需根据实际内存调整。

4. 用户资源限制:防止资源滥用

修改/etc/security/limits.conf文件,添加Oracle用户的资源限制:

oracle soft nproc 2047 # 最大进程数(软限制) oracle hard nproc 16384 # 最大进程数(硬限制) oracle soft nofile 1024 # 最大文件描述符数(软限制) oracle hard nofile 65536 # 最大文件描述符数(硬限制) 

关键技巧:软限制是用户可自行调整的上限,硬限制是系统允许的最大值,需合理设置避免资源耗尽。

二、Oracle数据库层面权限管理

1. 登录数据库:使用高权限账户

sysdba身份登录(需切换至oracle用户):

su - oracle sqlplus / as sysdba 

2. 用户创建:关联角色与权限

创建用户时,建议分配角色(如RESOURCE)而非直接授予大量系统权限:

CREATE USER myuser IDENTIFIED BY StrongPassword; -- 创建用户 GRANT CONNECT, RESOURCE TO myuser; -- 授予连接和资源权限 

关键技巧RESOURCE角色包含创建表、视图等常用权限,避免直接授予DBA角色。

3. 权限分配:层级化与最小化

  • 系统权限:按需授予(如CREATE SESSION用于连接数据库,CREATE TABLE用于创建表);
  • 对象权限:针对特定对象(如表、视图)授权(如GRANT SELECT, INSERT ON mytable TO myuser);
  • 角色管理:创建自定义角色(如myrole),将权限分配给角色后再分配给用户,实现权限复用:
CREATE ROLE myrole; GRANT SELECT ON mytable TO myrole; GRANT myrole TO myuser; 

关键技巧:角色化管理简化了权限维护,避免重复授权。

4. 权限维护:定期审计与调整

  • 查看用户权限
    -- 查看用户拥有的系统权限 SELECT * FROM USER_SYS_PRIVS; -- 查看用户拥有的对象权限 SELECT * FROM USER_TAB_PRIVS WHERE GRANTEE = 'MYUSER'; 
  • 撤销权限
    REVOKE CREATE TABLE FROM myuser; -- 撤销系统权限 REVOKE SELECT ON mytable FROM myuser; -- 撤销对象权限 
  • 定期审计:每月检查一次用户权限,移除不必要的权限(如离职用户的权限)。

三、安全增强技巧

1. 使用AppArmor进行高级权限控制

安装并配置AppArmor,限制Oracle进程的访问范围:

sudo apt-get install apparmor apparmor-utils sudo aa-enforce /etc/apparmor.d/usr.sbin.oracle # 启用Oracle配置文件 sudo aa-status # 查看AppArmor状态 

关键技巧:AppArmor可防止Oracle进程越权访问系统文件,提升安全性。

2. 防火墙限制:仅开放必要端口

使用UFW限制Oracle监听端口(默认1521)的访问:

sudo ufw allow 22/tcp # 允许SSH sudo ufw allow 1521/tcp # 允许Oracle监听 sudo ufw enable # 启用防火墙 

关键技巧:仅开放必要的端口,减少外部攻击面。

0