oracle操作系统OS认证和密码文件认证

ops/2024/9/23 6:38:35/

1 说明

1.1 常见认证方式

Oracle登录认证方式主要涉及到如何验证用户身份以访问数据库。Oracle数据库提供了多种认证机制来确保数据的安全性和访问控制,每种方式都有其特定的使用场景和安全性考虑。以下是Oracle中常见的登录认证方式:

1、基于操作系统的认证(OS认证)

在基于操作系统的认证中,Oracle依赖底层操作系统的用户身份验证机制。当使用OS认证时,Oracle进程以操作系统用户的身份运行,并继承该用户的权限。这种认证方式通常用于本地连接,特别是在Unix/Linux系统上。

2、密码文件认证(Password File)

密码文件(通常称为“口令文件”)是Oracle提供的一种认证机制,用于在数据库未完全启动或无法访问数据字典时,允许具有SYSDBA或SYSOPER权限的用户进行连接。密码文件通常存放在数据库服务器的特定目录下,并包含加密的用户名和密码信息。

3、数据库认证

数据库认证是最常用的认证方式,它依赖于Oracle数据字典中存储的用户名和密码信息。当用户尝试连接到数据库时,Oracle会查询数据字典以验证提供的用户名和密码是否匹配。普通用户就是使用这种认证方式。与前两种不同的地方在于,在数据库关闭的时候用户不能登录。

4、外部认证

如果配置了os_authent_prefix参数,如默认值为 ops$,当数据库中存在用户 ops$lu9up,且对该用户启用了外部验证。那么在操作系统上以lu9up用户登录成功后,就可以直接键入 sqlplus / ,登录用户是 ops$lu9up,密码由操作系统外部提供,不是数据字典认证。

1.2 数据库管理员身份验证

DBA经常执行一些特殊操作,如关闭数据库、启动数据库、修改参数等。由于只有DBA才能执行这些操作,所以DBA的数据库账号需要一种安全的身份验证方案。

DBA身份验证一般使用上面四种常见的登录认证的前两种:

  • os认证;
  • 口令文件认证。

下面就来着重讲讲这两种认证。

2 基于操作系统的认证(OS认证)

2.1 OSDBA & OSOPER

OSDBA和OSOPER是两个特殊操作系统组,如果操作系统用户属于OSDBA组或者OSOPER组,就能够通过操作系统而不是数据库用户名和密码来认证到数据库,这就是操作系统认证。这两个操作系统组通常被称为OSDBA和OSOPER。熟悉数据库安装的同学都应该有印象,OSDBA和OSOPER这两个组就是在进行操作系统(Linux)配置的时候创建的:

groupadd -g 1001 dba  
groupadd -g 1002 oper

如果操作系统用户属于dba组或者oper组,那么在登录操作系统后,登录数据库的方式为:

  • 如果用户是dba组的成员,并在连接到数据库时指定了as sysdba,那么将以sysdba系统特权连接到数据库。如:sqlplua / as sysdba
  • 如果用户是oper组的成员,并在连接到数据库时指定了as sysoper,那么您将以sysoper系统特权连接到数据库。如:sqlplua / as sysoper
  • 如果用户不是这两个操作系统组的成员,却尝试以SYSDBA或SYSOPER身份连接,那么CONNECT命令将失败。ORA-01017: invalid username/password; logon denied。

下面来试验一下:

创建一个新的操作系统用户lu9up,暂时不添加任何组:

image.png

切换到lu9up用户,尝试指定as sysdba连接数据库

image.png

手动配置一下环境变量,要不然没有sqlplus的路径。

因为lu9up用户不属于dba组,所以OS认证不通过,指定as sysdba连接数据库失败。

给lu9up用户添加dba组,再一次尝试指定as sysdba连接数据库

image.png

3 密码文件认证(Password File)

oracle密码文件用于存储拥有部分特权用户的口令。

是sysdba或者sysoper身份的用户的远程认证密码文件,主要用于sys用户(严格来说是具有sysdba系统权限的用户)的远程登录认证。

这个密码文件的作用就是当数据库未启动的时候,可以通过密码验证的方式登录数据库并进行一系列的mount和open操作。在口令文件丢失或被破坏的情况下,SYS用户仍然可以以本地sysdba身份验证登录到数据库中(OS认证),但不能以sysdba远程登录了。

密码文件通常位于Oracle用户下的$ORACLE_HOME/dbs目录中,并命名为orapw<ORACLE_SID>。在创建数据库时,会生成密码文件,但也可以使用ORAPWD工具手动创建。创建密码文件时,需要指定文件名、SYS账号的口令以及密码文件中可以存放的最大用户数。

在使用密码文件时,需要设置初始化参数REMOTE_LOGIN_PASSWORDFILE来控制其使用状态。这个参数可以设置为EXCLUSIVE、SHARED或NONE,以确定密码文件的使用方式和搜索顺序。

查看初始化参数REMOTE_LOGIN_PASSWORDFILE

image.png

参数值解释:

  • shared:密码文件可供多个数据库实例使用,可以包含sys用户和非sys用户。
  • exclusive:默认值,密码文件只能用于单个数据库实例,可以包含sys用户和非sys用户。
  • none:系统不使用密码文件,特权用户的只能依靠OS认证登录连接数据。

创建一个密码文件

image.png

说明:

  • file:密码文件的文件名为orapworcl;
  • entries:允许5个不同的用户拥有sysdba或者sysoper系统权限;
  • force:覆盖存在的密码文件;
  • password:sys用户的密码。

尝试进行远程登录

image.png

参数REMOTE_LOGIN_PASSWORDFILE当前值为exclusive,允许使用密码文件。当前服务器ip地址为56.3,ssh远程登录到56.2服务器,sqlplus sys/lu9up@192.168.56.3/orcl as sysdba命令连接数据库

将参数REMOTE_LOGIN_PASSWORDFILE设置为none

image.png

说明:

  • issys_mod=false,说明修改参数不能立刻生效,需要重启后才生效;
  • startup force为强制重启。

参数设置为none后再次远程连接,这次应该是连不上了

image.png


http://www.ppmy.cn/ops/12719.html

相关文章

数据分析-pandas1

数据分析-pandas Pandas 是 Wes McKinney 在2008年开发的一个强大的分析结构化数据的工具集。Pandas 以 NumPy 为基础&#xff08;实现数据存储和运算&#xff09;&#xff0c;提供了专门用于数据分析的类型、方法和函数&#xff0c;对数据分析和数据挖掘提供了很好的支持&…

3.SpringCloud版本

1.SpringCloud与SpringBoot之间版本对应 2.服务拆分的注意事项 1.不同微服务&#xff0c;不要重复开发相同业务。 2.微服务的数据独立&#xff0c;每个微服务都有自己独立的数据库&#xff0c;不要访问其他微服务的数据库。 3.微服务可以将自己的的业务暴露为接口&#xff…

考研党打印资料怎么使用云打印服务?

对于准备考研的同学们来说&#xff0c;在备考的时候需要准备许多资料&#xff0c;这些资料的打印费用成为了考研党的巨额支出。那么在生活费有限的情况下&#xff0c;考研党打印资料最好是选择云打印服务&#xff0c;因为易绘创云打印服务低至5分钱/页还包邮。那么考研党打印资…

【Java】怎么处理Oracle的Clob类型字段

Oracle 数据库中的 CLOB&#xff08;Character Large Object&#xff09;字段类型用于存储大量文本数据&#xff0c;例如长文本、大型文档或 XML 数据等。 这个类型在 Java 中&#xff0c;可以使用 java.sql.Clob 类型来接收 Oracle 数据库中的 CLOB&#xff08;Character Lar…

React 19 的新增功能:Action Hooks

React 是前端开发领域最流行的框架之一。我喜欢 React 是因为它背后的团队和社区对它的热情。当社区提出新功能和改进的需求时,团队会倾听,React 的未来是令人兴奋和有趣的。 让我们来看一下 React 19 中令开发人员提升开发效率的新特性。对于每个钩子,我将解释它的作用并给…

使用WebSocket实现答题积分排名实时更新的功能

需求分析 接到一个需求&#xff0c;是一个答题积分小程序&#xff0c;其中有一个功能需求是需要实时更新答题积分排名的。之前通常比较常见的需求&#xff0c;都是指定某个时间点才更新答题排行榜的数据的。 经过技术调研&#xff0c;要实现答题积分排名实时更新的功能&#…

Tomcat核心组件深度解析

Server组件 Service组件 连接器Connector组件 容器Container组件

用flutter实现类似startActivityForResult和onActivityResult功能

今年实在是大卷元年呀&#xff0c;莫名其妙的flutter就开始在各大公司火了起来&#xff0c;然后就是全员学习flutter&#xff0c;公司可以不用&#xff0c;但是你必须得会。隔壁IOS同事瑟瑟发抖&#xff0c;咋啦&#xff1f;意思就是我走咯&#xff1f; 不管怎么说&#xff0c;…