/etc/security/limits.conf

#<domain>      <type>  <item>         <value>
#

#*               soft    core            0              禁止創建core文件
#*               hard    rss             10000     非root用戶最多使用10M內存
#@student        hard    nproc        20     最多進程數限制在20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

limits.conf的工作原理: 
limits.conf的后端是這樣工作的:limits.conf是pam_limits.so的設置文件,然后/etc/pam.d/下的應用程式調用pam_***.so模塊。譬如說,當用戶訪問服務器,服務程式將請求發送到PAM模塊,PAM模塊根據服務名稱在/etc/pam.d目錄下選擇一個對應的服務文件,然后根據服務文件的內容選擇具體的PAM模塊進行處理。 

例:限制admin用戶登錄到sshd的服務不能超過2個 

在/etc/pam.d/sshd 中添加 session required pam_limits.so 

在/etc/security/limits.conf中添加 admin - maxlogins 2 

查看應用程式能否被PAM支持,用ldd 

limits.conf文件的參數 
Limits.conf文件的參數能設置成以下兩種形式之一: 
暫時地,適用于通過 ulimit 命令登錄 shell 會話期間。 
永久地,通過將一個相應的 ulimit 語句添加到由登錄 shell 讀取的文件之一(例如 ~/.profile),即特定于 shell 的用戶資源文件;或通過編輯 /etc/security/limits.conf。 
1.core - 限制內核文件的大小 
何謂core文件,當一個程式崩潰時,在進程當前工作目錄的core文件中復制了該進程的存儲圖像。core文件僅僅是個內存映象(同時加上調試信息),主要是用來調試的。 core文件是個二進制文件,需要用相應的工具來分析程式崩潰時的內存映像。 
系統默認core文件的大小為0,所以沒有創建

能用ulimit命令查看和修改core文件的大小。 
$ulimit -c
0
$ ulimit -c 1000
$ ulimit -c
1000 
-c 指定修改core文件的大小,1000指定了core文件大小。也能對core文件的大小不做限制,如: 
# ulimit -c unlimited
#ulimit -c
unlimited 
如果想讓修改永久生效,則需要修改設置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf。 
2.nofile - 打開文件的最大數目 

對于需要做許多套接字連接并使他們處于打開狀態的應用程式而言,最佳通過使用 ulimit ?n,或通過設置nofile 參數,為用戶把文件描述符的數量設置得比默認值高一些。

 

limits.conf的格式如下:

username|@groupname type resource limit

username|@groupname:設置需要被限制的用戶名,組名前面加@和用戶名區別。也可以用通配符*來做所有用戶的限制。

type:有 soft,hard 和 -,soft 指的是當前系統生效的設置值。hard 表明系統中所能設定的最大值。soft 的限制不能比har 限制高。用 - 就表明同時設置了 soft 和 hard 的值。

resource:

core - 內核文件的大小

date - 最大數據大小

fsize - 最大文件大小

memlock - 最大鎖定內存地址空間

nofile - 打開文件的最大數目

rss - 最大持久設置大小

stack - 最大棧大小

cpu - 以分鐘為單位的最多 CPU 時間

noproc - 進程的最大數目

as - 地址空間限制

maxlogins - 此用戶允許登錄的最大數目

要使 limits.conf 文件配置生效,必須要確保 pam_limits.so 文件被加入到啟動文件中。查看 /etc/pam.d/login 文件中有:

session required /lib/security/pam_limits.so

按下面說的,可以用ulimit -n 32768設置最大描述符,不過只對當前會話有用,而且要root,這個不好辦

或者修改/etc/security/limits.conf,但要重啟

另外,沒查到linux究竟最大描述符有沒有限制,其他幾個限制要不要改