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数据字典),便于恢复。 - 文档记录:记录权限变更原因、时间及操作人,便于追溯。
以上就是关于“Oracle在Linux上的权限设置方法”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm