1. 程式人生 > >理解RHEL上安裝oracle的配置參數 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login

理解RHEL上安裝oracle的配置參數 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login

ulimit req else white splay 分層 64位 pass content


無論安裝什麽版本的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