無論安裝什么版本的oracle,在安裝之前,都需要配置 /etc/pam.d/login /etc/profile /etc/security/limits.conf這三個文件
那這三個文件究竟是做什么用的呢?答案就是設(shè)置對oracle用戶的shell limits。下面就仔細(xì)分析一下這幾個文件
首先需要編輯/etc/security/limits.conf文件(用戶限制配置文件)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
然后編輯/etc/pam.d/login文件 (將配置文件加入到登錄驗(yàn)證模塊)
Session required pam_limits.so
最后編輯/etc/profile文件(環(huán)境變量文件)
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
要弄明白這些文件的作用,我們首先需要了解PAM驗(yàn)證機(jī)制
一、理解PAM驗(yàn)證模塊機(jī)制
PAM的起源和功能
Linux PAM(插件式認(rèn)證模塊,Pluggable Authentication Modules)
為安全起見,計(jì)算機(jī)系統(tǒng)只有經(jīng)過授權(quán)的合法用戶才能訪問。這就需要程序提供鑒別登陸用戶身份信息的代碼。原本實(shí)現(xiàn)鑒別功能的代碼是作為應(yīng)用程序的一部分,這種情況下,如果發(fā)現(xiàn)所用算法存在某些缺陷或想采用另一種鑒別方法時,用戶不得 不重寫然后重新編譯原本的整個程序。很顯然這種鑒別方式缺乏靈活性。因此,人們開始尋找一種更好的鑒別方案:一方面,要把鑒別功能代碼從應(yīng)用中獨(dú)立出來,形成獨(dú)立模塊,單獨(dú)進(jìn)行維護(hù),另一方面,為這些鑒別模塊建立標(biāo)準(zhǔn)API,以便各應(yīng)用程序能方便地使用他們提供的各種功能。插件式鑒別模塊(PAM)機(jī)制采用模塊化設(shè)計(jì)和插件功能,使得我們可以輕易地在應(yīng)用程序中插入新的鑒別模塊或替換原先的組件,而不必對應(yīng)用程序做任何修改,從而使軟件的定制、維持和升級更加輕松
1995年SUN公司提出PAM方式,實(shí)現(xiàn)了以上要求,達(dá)到了應(yīng)用程序和鑒別機(jī)制的分離,并且PAM可以集成多種鑒別機(jī)制,輕松實(shí)現(xiàn)應(yīng)用程序的鑒別部分的靈活性。
除了具體實(shí)現(xiàn)不同外,各種版本 Unix 系統(tǒng)上的 PAM 的框架是相同的,所以我們在這里介紹的 Linux PAM 框架知識具有普遍性。因此在本文介紹其框架的過程中可以看到,我們并沒有刻意區(qū)分 PAM 與 Linux-PAM 這兩個術(shù)語。
PAM的分層體系結(jié)構(gòu)
PAM 為了實(shí)現(xiàn)其插件功能和易用性,它采取了分層設(shè)計(jì)思想:讓各鑒別模塊從應(yīng)用程序中獨(dú)立出來,然后通過PAM API作為兩者聯(lián)系的紐帶,這樣應(yīng)用程序就可以根據(jù)需要靈活地在其中"插入"所需鑒別功能模塊,從而真正實(shí)現(xiàn)了"鑒別功能,隨需應(yīng)變"。PAM體系結(jié)構(gòu)如下圖所示

在rhel中,
PAM的驗(yàn)證模塊,存放位置在/lib/security,如pam_limits.so、pam_group.so等
PAM驗(yàn)證模塊的配置文件,存放位置 /etc/security中,如pam_limits.so驗(yàn)證模塊對應(yīng)的配置文件limits.conf,pam_group.so驗(yàn)證模塊對應(yīng)的配置文件group.conf。
PAM驗(yàn)證模塊和應(yīng)用程序的對應(yīng)關(guān)系,存放位置/etc/pam.d文件夾。通過修改此文件夾下的配置文件,可以為應(yīng)用選定具體的驗(yàn)證模塊
二、理解PAM驗(yàn)證模塊與應(yīng)用程序?qū)?yīng)關(guān)系的配置文件
要使/etc/security/limits.conf 文件配置生效,必須要確保 PAM驗(yàn)證模塊pam_limits.so 文件被加入到啟動文件中。查看 /etc/pam.d/login 文件中有:
session required /lib/security/pam_limits.so
64位地址是:/lib64/security/pam_limits.so 否則本地即使輸入正確密碼也無法登陸。
PAM驗(yàn)證模塊與應(yīng)用程序?qū)?yīng)關(guān)系的配置文件,即/etc/pam.d下的文件,這里以/etc/pam.d/login為例進(jìn)行語法分析,/etc/pam.d/目錄下的所有文件的語法相同。
Pam.d文件夾下配置文件的語法為
Service model_type control_flag model_path options
Service :使用PAM驗(yàn)證模塊的應(yīng)用程序,如ftp、telnet、login等。其中other一行指本文件中沒有單獨(dú)列出的其他應(yīng)用程序
model_type :應(yīng)用程序所用的PAM 驗(yàn)證模塊的類型,主要有以下幾種
auth :鑒別類模塊 account:賬戶類模塊
session:會話類模塊 password:口令類模塊
每行只能指定一中類型模塊,如果應(yīng)用程序需要多種模塊組合使用,則需要在多行中分別規(guī)定。
Control_flag:對模塊驗(yàn)證成功或者失敗的結(jié)果的處理情況
Required:該模塊驗(yàn)證成功是用戶通過鑒別的必要條件。只有當(dāng)應(yīng)用程序?qū)?yīng)的所有帶有required標(biāo)記的模塊全部成功后,該應(yīng)用程序才能通過 鑒別。同時,如果任何帶有required標(biāo)記的模塊出現(xiàn)了錯誤,PAM并不立刻將錯誤信息返回給應(yīng)用程序,而是在所有模塊都調(diào)用完畢后,再將錯誤信息返回給調(diào)用它的應(yīng)用程序。
Requisite:與required相似,只有帶有此標(biāo)記的模塊返回成功后,用戶才能通過鑒別,不同之處在于,一旦失敗就不再執(zhí)行堆中后面的其他模塊,并且鑒別過程到此結(jié)束。
Optiona: 即使該模塊驗(yàn)證失敗,用戶仍能通過鑒別。在PAM體系中,帶有該標(biāo)記的模塊失敗后,將繼續(xù)處理下一模塊。
Sufficiet:該模塊取得成功是用戶通過鑒別的充分條件,也就是說只要標(biāo)記sufficient的模塊一旦成功,那么PAM便立即向應(yīng)用程序返回成功而不必嘗試任何其他模塊。當(dāng)標(biāo)記為sufficient的模塊失敗時,sufficient模塊當(dāng)做 optional對待。
Model_path:指出PAM模塊的位置。
Options:用于向特定模塊傳遞相關(guān)的選項(xiàng),然后由模塊分析解釋這些任選項(xiàng)。比如使用此欄打開模塊調(diào)試,或向某模塊傳遞諸如超時值之類的參數(shù)等。另外,它還用于支持口令映射技術(shù)。
三、理解PAM驗(yàn)證模塊的配置文件
PAM驗(yàn)證模塊的配置文件放在/etc/security/下,這里只介紹limits.conf文件。
Limits文件限制用戶進(jìn)程解析
PAM驗(yàn)證模塊/lib/security/pam_limits.so主要是限制用戶會話過程中對各種系統(tǒng)資源的使用。其對應(yīng)的配置文件/etc/security/limits.conf其格式為
Domain type item
用戶名/組名軟/硬限制 項(xiàng)目
Domain:指被限制的用戶名或組
Type:
Soft:當(dāng)前系統(tǒng)生效的設(shè)置值(soft限制不能比hard限制高)
Hard:系統(tǒng)中所能設(shè)置的最大值
- :同時設(shè)置了soft和hard的值
Item:限制用戶的資源類型
core——core文件大小(KB)
data——最大數(shù)據(jù)大小(KB)
fsize——最大文件大小(KB)
memlock——最大可用內(nèi)存空間(KB)
nofile——最大可以打開的文件數(shù)量
rss——最大可駐留空間(KB)
stack——最大堆??臻g(KB)
cpu——最大CPU使用時間(MIN)
nproc——最大運(yùn)行進(jìn)程數(shù)
as——地址空間限制
maxlogins——用戶可以登錄到系統(tǒng)最多次數(shù)
locks——最大鎖定文件數(shù)目
四、理解環(huán)境變量文件用戶進(jìn)程限制
而最后對于環(huán)境變量文件/etc/profile的更改也是為了修改對當(dāng)前用戶的進(jìn)程限制。
Ulimit:設(shè)定shell啟動進(jìn)程所占用的資源。
-n:設(shè)置內(nèi)核可以同時打開的文件描述符的最大值。
-p:設(shè)置管道緩沖區(qū)的最大值。
-u:設(shè)置用戶最多可開啟的程序數(shù)目。
Linux默認(rèn)限制了系統(tǒng)用戶的最大進(jìn)程數(shù)。為了提高性能,可以根據(jù)設(shè)備資源情況,設(shè)置各linux用戶的最大進(jìn)程數(shù)。其中一些設(shè)置也可以把參數(shù)設(shè)置成unlimited,即不加限制。如
數(shù)據(jù)段長度:ulimit -d unlimited
最大內(nèi)存大?。簎limit -m unlimited
堆棧大?。簎limit -s unlimited
CPU 時間:ulimit -t unlimited。
虛擬內(nèi)存:ulimit -v unlimited
此外,如果單方面在這個位置為用戶設(shè)置一些參數(shù),有可能會遇到錯誤提示如下:
ulimit: max user processes: cannot modifylimit: 不允許的操作
ulimit: open files: cannot modify limit: 不允許的操作
這種情況是因?yàn)閘iunx對用戶有默認(rèn)的ulimits限制,這個默認(rèn)的限制是保存在/etc/security/limits.conf中,其中的hard配置是個上限,超出上限的修改就會出“不允許的操作”這樣的錯誤,這就是為什么前面要修改limits.conf文件的原因。
而umask是反碼的意思。它是為該用戶新建的文件設(shè)定權(quán)限信息。
如umask 022,就是設(shè)定文件權(quán)限為777-022=755
Umask002,就是設(shè)定文件權(quán)限為777-002=775。
原文地址:http://m.blog.csdn.net/blog/yhc13429826359/22832521
|