必须用oinstall和dba组,因Oracle安装程序强制校验:oinstall为主组以控制Oracle Home及oraInventory写入权限,dba为辅组以支持sqlplus / as sysdba等特权操作;主辅组顺序不可颠倒,否则chown后权限失效导致Permission denied。

为什么必须用 oinstall 和 dba 这两个组
Oracle 安装程序在启动时会校验当前用户是否属于 oinstall(软件安装组)和 dba(数据库管理组)。缺一不可,否则静默安装会直接报错 PRVF-0002 : could not retrieve group information,图形界面则卡在“检查操作系统组”步骤。
这两个组的语义不能替换:oinstall 控制 Oracle Home 目录所有权和清单(oraInventory)写入权限;dba 决定能否连接本地数据库实例(sqlplus / as sysdba)、执行启动/关闭等特权操作。混用其他组名(如 inventory、manage)会导致后续权限链断裂。
useradd -g oinstall -G dba oracle 的参数顺序不能颠倒
命令中 -g 指定主组(primary group),-G 指定附加组(supplementary groups)。Oracle 要求 oinstall 是主组,否则 chown -R oracle:oinstall /u01 后,oracle 用户对目录的实际属组仍是其默认主组(通常是 oracle),导致安装时提示 Permission denied。
验证方式:运行 id oracle,输出应为 uid=1000(oracle) gid=501(oinstall) groups=501(oinstall),502(dba) —— 注意 gid= 对应的是 oinstall,不是 dba。
创建后必须立即设置密码并验证登录能力
即使你计划用密钥登录或仅用于后台服务,Oracle 安装过程(尤其是 runInstaller)仍会尝试以该用户身份执行 shell 命令。若密码为空或未设置,会出现 Authentication failure 或卡在 “Copying files to target location” 阶段。
实操建议:
- 用
passwd oracle设置密码(避免使用--stdin,某些 Oracle Linux 版本不支持) - 切换用户测试:
su - oracle -c "echo $HOME",确认能成功进入且环境变量加载正常 - 检查
/etc/shadow中oracle行,第二字段不应是!!或*(表示锁定/无密码)
常见权限误操作:目录 chown 时漏掉 -R 或路径写错
安装目录结构里,/u01/app/oracle、/u01/app/oraInventory、/u01/app/oracle/product/19.3.0/dbhome_1 这三处必须全部归属 oracle:oinstall。只改最上层 /u01 而忽略子目录,或把路径写成 /u01/app/oracle/product/19c(实际解压后是 dbhome_1),都会导致安装中途失败,错误日志里反复出现 Permission denied 但不指明具体文件。
安全做法是分步执行:
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 /u01/app/oraInventory-
chown -R oracle:oinstall /u01/app(注意是/u01/app,不是/u01全局) -
chmod -R 775 /u01/app(775 确保组成员可读写,但非递归到根目录)
最关键的细节:Oracle 用户的家目录(/home/oracle)不需要也归属 oinstall 组——它只影响安装过程中的临时文件和响应文件存放,不影响核心权限链。别为了“统一”而盲目 chown 家目录,反而可能破坏 SSH 登录。


















