温馨提示×

如何在Ubuntu上配置Oracle用户权限

小樊
32
2025-11-19 04:06:27
栏目: 云计算

Ubuntu上配置Oracle用户权限的完整指南

一 操作系统层准备

  • 创建操作系统用户与组:至少需要oinstall(软件安装/属主)与dba(DBA管理)两个组,并创建oracle用户加入对应组;同时建议创建nobody组用于运行相关服务。示例命令:sudo addgroup oinstall;sudo addgroup dba;sudo addgroup nobody;sudo useradd -m -s /bin/bash oracle;sudo gpasswd -a oracle oinstall;sudo gpasswd -a oracle dba;sudo usermod -g nobody nobody;sudo passwd oracle。完成后检查:id oracle 应同时包含 oinstall 与 dba。
  • 创建目录与权限:建议将数据与软件分离,如/opt/oracle(软件)、/opt/oradata(数据)。示例:sudo mkdir -p /opt/oracle /opt/oradata;sudo chown -R oracle:oinstall /opt/ora*;sudo chmod -R 775 /opt/ora*。
  • 内核参数与资源限制:编辑/etc/sysctl.conf,加入示例值(按内存与业务调整):kernel.shmall=2097152;kernel.shmmax=2147483648;kernel.shmmni=4096;kernel.sem=250 32000 100 128;fs.file-max=65536;net.ipv4.ip_local_port_range=1024 65000;执行 sysctl -p 生效。编辑/etc/security/limits.conf,为 oracle 设置:oracle soft nofile 65536;oracle hard nofile 65536;oracle soft nproc 16384;oracle hard nproc 16384。
  • 兼容性软链接与系统标识(Oracle 10g 在 Ubuntu 上常见):sudo ln -s /usr/bin/awk /bin/awk;sudo ln -s /usr/bin/rpm /bin/rpm;sudo ln -s /usr/bin/basename /bin/basename;为安装器创建标识文件:echo “Red Hat Linux release 4.1” | sudo tee /etc/redhat-release。
  • 环境变量:以 oracle 用户编辑 ~/.bash_profile 或 /etc/bash.bashrc,设置 ORACLE_BASE、ORACLE_HOME、ORACLE_SID、PATH,例如:export ORACLE_BASE=/opt/oracle;export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1(路径按实际);export ORACLE_SID=ORCL;export PATH=$ORACLE_HOME/bin:$PATH。完成后执行 source 使生效。

二 数据库层用户与权限设计

  • 原则与角色:遵循最小权限原则,优先通过角色授予权限,避免直接授予强大的系统权限;注意 Oracle 11g 起 CONNECT 角色仅含 CREATE SESSION,如需更多权限应显式授予或自定义角色。
  • 创建用户与默认表空间:CREATE USER app1 IDENTIFIED BY DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp_ts QUOTA 500M ON users PROFILE app_profile; 临时表空间用于排序/哈希,避免占用 SYSTEM;如未显式指定临时表空间,数据库会使用创建时指定的默认临时表空间或 SYSTEM(不推荐)。
  • 授予对象权限与系统权限:按需授予,例如 GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO app1; 如需跨用户访问对象,授予对象权限:GRANT SELECT, INSERT, UPDATE, DELETE ON hr.employees TO app1; 撤销权限用 REVOKE。
  • 角色与默认角色:创建自定义角色并授予最小必要权限,再授予用户;设置默认角色,使登录自动启用:CREATE ROLE app_role; GRANT CREATE SESSION, CREATE TABLE TO app_role; GRANT app_role TO app1; ALTER USER app1 DEFAULT ROLE app_role; 默认角色在 CREATE USER 时为 ALL,后续可用 ALTER USER 调整。
  • 安全应用角色:对敏感角色,可用安全应用角色(由 PL/SQL 包控制启用条件,如 IP、时间窗)限制谁能启用该角色,提升应用层安全。

三 常用配置示例

  • 应用开发账号:CREATE USER app_dev IDENTIFIED BY DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp_ts QUOTA 1G ON users; GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO app_dev;
  • 只读报表账号:CREATE USER rpt_ro IDENTIFIED BY DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp_ts; GRANT CREATE SESSION TO rpt_ro; GRANT SELECT ON hr.employees TO rpt_ro; GRANT SELECT ON oe.orders TO rpt_ro;(按需为更多表授予 SELECT)
  • 应用专用账号(禁止直接登录):CREATE USER app_svc IDENTIFIED BY DEFAULT TABLESPACE app_ts TEMPORARY TABLESPACE temp_ts; GRANT CREATE SESSION TO app_svc;(仅授予应用所需对象权限,不授予 CREATE TABLE 等 DDL,避免人为误操作)
  • 启用安全应用角色(示例思路):先创建包校验 IP,再创建角色并设为安全应用角色,最后授予用户并配置为默认角色,仅允许来自内网的会话启用该角色。

四 验证与运维要点

  • 验证登录与权限:sqlplus app1/;执行 SHOW USER; 测试对象访问(SELECT/INSERT 等)。
  • 验证默认角色:SELECT * FROM session_roles; 确认登录后自动启用的角色集合。
  • 审计与回收:定期审计高权限使用,撤销不再需要的系统/对象权限,调整默认角色;对关键操作启用细粒度审计(可选)。
  • 系统账号安全:SYS、SYSTEM、SYSMAN、DBSNMP 为高权限管理账号,仅限授权人员使用,严禁共享与滥用;不要删除这些内置账号。

0