无论安装什么版本的Oracle,在安装之前,都需要配置 /etc/pam.d/login   /etc/profile   /etc/security/limits.conf这三个文件

那这三个文件究竟是做什么用的呢?答案就是设置对oracle用户的shell limits。下面就仔细分析一下这几个文件

首先需要编辑/etc/security/limits.conf文件(用户限制配置文件)

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

然后编辑/etc/pam.d/login文件   (将配置文件加入到登录验证模块)

Session    required    pam_limits.so

最后编辑/etc/profile文件(环境变量文件)

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

 

PAM的起源和功能

Linux PAM(插件式认证模块,Pluggable Authentication Modules)

为安全起见,计算机系统只有经过授权的合法用户才能访问。这就需要程序提供鉴别登陆用户身份信息的代码。原本实现鉴别功能的代码是作为应用程序的一部分,这种情况下,如果发现所用算法存在某些缺陷或想采用另一种鉴别方法时,用户不得

不重写然后重新编译原本的整个程序。很显然这种鉴别方式缺乏灵活性。因此,人们开始寻找一种更好的鉴别方案:一方面,要把鉴别功能代码从应用中独立出来,形成独立模块,单独进行维护,另一方面,为这些鉴别模块建立标准API,以便各应用程序能方便地使用他们提供的各种功能。插件式鉴别模块(PAM)机制采用模块化设计和插件功能,使得我们可以轻易地在应用程序中插入新的鉴别模块或替换原先的组件,而不必对应用程序做任何修改,从而使软件的定制、维持和升级更加轻松

1995年SUN公司提出PAM方式,实现了以上要求,达到了应用程序和鉴别机制的分离,并且PAM可以集成多种鉴别机制,轻松实现应用程序的鉴别部分的灵活性。

除了具体实现不同外,各种版本 Unix 系统上的 PAM 的框架是相同的,所以我们在这里介绍的 Linux PAM 框架知识具有普遍性。因此在本文介绍其框架的过程中可以看到,我们并没有刻意区分 PAM 与 Linux-PAM 这两个术语。

PAM的分层体系结构

PAM 为了实现其插件功能和易用性,它采取了分层设计思想:让各鉴别模块从应用程序中独立出来,然后通过PAM
API作为两者联系的纽带,这样应用程序就可以根据需要灵活地在其中"插入"所需鉴别功能模块,从而真正实现了"鉴别功能,随需应变"。PAM体系结构如下图所示

在rhel中,

PAM的验证模块,存放位置在/lib/security,如pam_limits.so、pam_group.so等

PAM验证模块的配置文件,存放位置 /etc/security中,如pam_limits.so验证模块对应的配置文件limits.conf,pam_group.so验证模块对应的配置文件group.conf。

PAM验证模块和应用程序的对应关系,存放位置/etc/pam.d文件夹。通过修改此文件夹下的配置文件,可以为应用选定具体的验证模块

要使/etc/security/limits.conf 文件配置生效,必须要确保 PAM验证模块pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:
         session  required  /lib/security/pam_limits.so

64位地址是:/lib64/security/pam_limits.so 否则本地即使输入正确密码也无法登陆。

PAM验证模块与应用程序对应关系的配置文件,即/etc/pam.d下的文件,这里以/etc/pam.d/login为例进行语法分析,/etc/pam.d/目录下的所有文件的语法相同。

Pam.d文件夹下配置文件的语法为

Service  model_type  control_flag  model_path  options

Service :使用PAM验证模块的应用程序,如ftp、telnet、login等。其中other一行指本文件中没有单独列出的其他应用程序

验证模块的类型,主要有以下几种

auth :鉴别类模块            account:账户类模块

session:会话类模块       password:口令类模块

每行只能指定一中类型模块,如果应用程序需要多种模块组合使用,则需要在多行中分别规定。

Control_flag:对模块验证成功或者失败的结果的处理情况

Required:该模块验证成功是用户通过鉴别的必要条件。只有当应用程序对应的所有带有required标记的模块全部成功后,该应用程序才能通过 鉴别。同时,如果任何带有required标记的模块出现了错误,PAM并不立刻将错误信息返回给应用程序,而是在所有模块都调用完毕后,再将错误信息返回给调用它的应用程序。

Requisite:与required相似,只有带有此标记的模块返回成功后,用户才能通过鉴别,不同之处在于,一旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束。

Optiona: 即使该模块验证失败,用户仍能通过鉴别。在PAM体系中,带有该标记的模块失败后,将继续处理下一模块。

:指出PAM模块的位置。

:用于向特定模块传递相关的选项,然后由模块分析解释这些任选项。比如使用此栏打开模块调试,或向某模块传递诸如超时值之类的参数等。另外,它还用于支持口令映射技术。

PAM验证模块的配置文件放在/etc/security/下,这里只介绍limits.conf文件。

Limits文件限制用户进程解析

PAM验证模块/lib/security/pam_limits.so主要是限制用户会话过程中对各种系统资源的使用。其对应的配置文件/etc/security/limits.conf其格式为

Domain  type item

用户名/组名软/硬限制 项目

Domain:指被限制的用户名或组

Soft:当前系统生效的设置值(soft限制不能比hard限制高)

-      :同时设置了soft和hard的值

data——最大数据大小(KB)

memlock——最大可用内存空间(KB)

nofile——最大可以打开的文件数量

stack——最大堆栈空间(KB)

nproc——最大运行进程数

maxlogins——用户可以登录到系统最多次数

四、理解环境变量文件用户进程限制

而最后对于环境变量文件/etc/profile的更改也是为了修改对当前用户的进程限制。

-n:设置内核可以同时打开的文件描述符的最大值。

-u:设置用户最多可开启的程序数目。

数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited。
虚拟内存:ulimit -v unlimited

ulimit: max user processes: cannot modifylimit: 不允许的操作

这种情况是因为liunx对用户有默认的ulimits限制,这个默认的限制是保存在/etc/security/limits.conf中,其中的hard配置是个上限,超出上限的修改就会出“不允许的操作”这样的错误,这就是为什么前面要修改limits.conf文件的原因。

如umask 022,就是设定文件权限为777-022=755

.NET/blog/yhc13429826359/22832521

理解RHEL上安装oracle的配置参数 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login的更多相关文章

  1. 理解RHEL上安装oracle的配置参数

    无论安装什么版本的oracle,在安装之前,都需要配置 /etc/pam.d/login   /etc/profile   /etc/security/limits.conf这三个文件 那这三个文件究 ...

  2. /etc/security/limits.conf 详解与配置

    目录 一. /etc/security/limits.conf 详解 /etc/security/limits.conf 配置解析 /etc/security/limits.d/ 目录 二. ulim ...

  3. 静默安装oracle 11g及参数配置优化详解

    一.安装前准备工作1.修改主机名#vi /etc/hosts   //并添加内网IP地址对应的hostname,如下127.0.0.1           localhost::1           ...

  4. 在CentOS6.0上安装Oracle 11gR2 (11.2.0.1)以及基本的配置(一)

    首先安装CentOS6.0   就不用说了.安装即可.唯一需要注意的就是后面Oracle 11G Installation guide中的Checking the Software Requireme ...

  5. [转载]在rhel 6 x86_64 上安装oracle 11g xe

    原文地址:在rhel 6 x86_64 上安装oracle 11g xe作者:pccom Oracle 11g xe for linux目前只有x86_64 版本,没有i386, i686 版本,如果 ...

  6. redhat5.1上安装oracle 10.2g客户端及配置使用

    一)安装 1.命令 rpm -q gcc make binutils setarch compat-db compat-gcc compat-gcc-c++ compat-libstdc++ comp ...

  7. Linux上安装Oracle的辛酸史

    下个礼拜就要开始学习Oracle了,得嘞先在我的CentOS7上装一个(貌似听说Oracle装在Oracle Linux能得到更好的性能,不过懒得下Oracle Linux镜像,在CentOS7上装个 ...

  8. Red Hat Enterprise Linux x86-64 上安装 oracle 11gR2

    一.以root用户登录 二.安装依赖包 #rpm -qa | grep 包名    ----查看包 binutils-2.20.51.0.2-5.11.el6 (x86_64)            ...

  9. 在Fedora20上安装Oracle 12c

    本文将引导大家在Fedora20的环境下成功安装Oracle12c. 安装前的准备 编辑/etc/hosts文件,添加本机名称 编辑/etc/selinux/config文件 编辑/etc/redha ...

随机推荐

  1. 多线程系列(1)多线程基础和Thread

    因为现项目中有用到多线程和并发的知识,所以打算近期补习一下多线程相关的内容.第一篇文章从最基础的开始,就是如何开启一个线程,如何启动线程和阻塞线程等,这篇文章分以下几点进行总结. 多线程初印象 多线程 ...

  2. 【C#数据结构系列】查找

    一:查找 1.1 基本概念和术语 查找(Search)是在数据结构中确定是否存在关键码等于给定关键码的记录的过程.关键码有主关键码和次关键码.主关键码能够唯一区分各个不同的记录,次关键码通常不能唯一区 ...

  3. JavaScript弹出窗口方法

    本文实例汇总了常用的JavaScript弹出窗口方法,供大家对比参考,希望能对大家有所帮助.详细方法如下: 1.无提示刷新网页: 大家有没有发现,有些网页,刷新的时候,会弹出一个提示窗口,点“确定”才 ...

  4. DVWA的安装

    DVWA(Dam Vulnerable Web Application)是基于PHP+Mysql的一套用于常规Web漏洞教学和检测Web脆弱性测试程序,包含了SQL注入,Xss,盲注等常用的一些安全漏 ...

  5. css翻译名词术语

    原文 本书译法 其它译法(未采用) CSS - 层叠样式表.级联样式表.样式单 cascade 层叠(机制) 级联 fallback 回退(机制.措施.方案) 后备.回落.降级 selector 选择 ...

  6. w3school前端教程合集

    有关前端开发的w3c教程合集. http://caibaojian.com/w3school/ 地图 ajax教程 Canvas教程 CSS教程 CSS3教程 CSS3选择器 CSS参考手册 DHTM ...

  7. element-ui Message组件源码分析整理笔记(八)

    Message组件源码: main.js import Vue from 'vue'; import Main from './main.vue'; import { PopupManager } f ...

  8. 浅析ARM公司在物联网领域的战略布局

    From: http://www.cnblogs.com/yefanqiu/p/3447769.html 浅析ARM公司在物联网领域的战略布局 随着ARM芯片的出货量越来越多,自信满满的ARM公司统一 ...

  9. Hive lateral view explode

    select 'hello', x from dual lateral view explode(array(1,2,3,4,5)) vt as x 结果是: hello   1 hello   2 ...

  10. pages bookmarks for machine learning domain

    http://www.ai-start.com/dl2017/html/lesson4-week2.html  达叔深度学习笔记 http://cs231n.github.io/convolution ...