1. linux系統/etc/security/limits.conf文件什麼作用
limits.conf
文件實際是
Linux
PAM(插入式認證模塊,Pluggable
Authentication
Moles)中
pam_limits.so
的配置文件,而且只針對於單個會話。limits.conf的格式如下:username@groupname
type
resource
limitusername@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
文件中有:ls
/lib/security/pam_limits.so
如果不作限制,可能一行代碼就讓你很慘了,甚至需要你重啟一下。
你可以把下面這行代碼復制粘貼到終端里執行測試一下是否需要限制
:(){
::;
};
:例如我的:*
soft
core
0*
hard
rss
102400truth
soft
nproc
2047truth
hard
nproc
16384truth
soft
nofile
1024truth
hard
nofile
65536truth
hard
cpu
10同時編輯sudo
gedit
/etc/pam.d/login加入#禁止調試文件session
required
/lib/security/pam_limits.so系統重啟後可嘗試
:(){
::;
};
:這時會出現bash:
fork:
資源臨時不可用
2. 如何修改linux最大文件打開數
進程最大打開文件描述符數:user limit中nofile的soft limit
a. 查看
$ ulimit -n
1700000
2. 設置
a. 臨時性:通過ulimit -Sn設置最大打開文件描述符數的 limit,注意soft limit不能大於hard limit(ulimit -Hn可查看hard limit),另外ulimit -n默認查看的是soft limit,但是ulimit -n 1800000則是同時設置soft limit和hard limit。對於非root用戶只能設置比原來小的hard limit。
查看hard limit:
$ ulimit -Hn
1700000
設置soft limit,必須小於hard limit:
$ ulimit -Sn 1600000
2. 永久性:上面的方法只是臨時性的,注銷重新登錄就失效了,而且不能增大hard limit,只能在hard limit范圍內修改soft limit。若要使修改永久有效,則需要在/etc/security/limits.conf中進行設置(需要root許可權),可添加如下兩行,表示用戶chanon最大打開文件描述符數的soft limit為1800000,hard limit為2000000。以下設置需要注銷之後重新登錄才能生效:
chanon soft nofile 1800000
chanon hard nofile 2000000
設置nofile的hard limit還有一點要注意的就是hard limit不能大於/proc/sys/fs/nr_open,假如hard limit大於nr_open,注銷後無法正常登錄。可以修改nr_open的值:
# echo 2000000 > /proc/sys/fs/nr_open
3. 查看linux哪個用戶的最大的文件打開數
linux系統下查看進程復打開文製件
在/proc下,對應每個進程有一個以進程號命名的目錄,該目錄下有一個fd目錄,該目錄下面的每個文件是一個符號連接,其文件名對應該進程佔用的一個文件描述符,而連接指向的內容表示文件描述符對應的實際文件,有多少個文件描述符表示該進程打開了多少文件。
另外Linux
默認的進程打開文件上限是1024個,可以通過ulimit
-n查看。很多系統上限可以通過修改/etc/security/limits.conf文件改變,這個文件有詳細的注釋,對如何修改做了說明。如果希望
把所有用戶的進程打開文件上限改為65536,可以加入下面兩行
* soft nofile 65535
* hard nofile 65535
還可以只真對某個用戶或某個組做修改,具體方法參見文件注釋。修改後需要重新啟動系統才能生效
4. Linux默認的文件及文件夾的許可權分別是多少
在linux中,來一位用戶在創建源文件和目錄時,對其具有的許可權都是一樣的,
在linux系統中任何文件/目錄都有一定的許可權,對於新創建的文件或目錄,也會有默認的訪問許可權。可能是出於安全的考慮,linux系統linux系統新建文件默認沒有執行許可權,其最大許可權為rw-rw-rw-(666),新建目錄的最大許可權為rwx-rwx-rwx(777)。而默認的許可權與umask命令有關。
、umask介紹
umask指定當前用戶在新建文件和目錄時的默認許可權,其值可以通過umask命令得到,其值的含義與chmod 命令是補碼的關系。也可以通過umask -S直接查看默認許可權。
注意:umask -S 顯示的是目錄的默認許可權>
例如:umask 0002
新建文件的許可權為(最大許可權666-002)664,即rw-rw-r--
新建目錄的許可權為最大許可權(777-002)775,即rwxrwxr-x
5. linux文件許可權包括
linux文件許可權包括:對文件所有者本人、同組用戶、以及其他用戶的可讀、可寫、可執行許可權。
文件的特殊許可權有三種:1、suid,2、sgid,3、sticky,其中,suid和sgid用於累加提升許可權,簡單來說就是如果原來的用戶可以訪問,反而切換到的用戶或者組不能訪問,這時候照樣是可以訪問的。
理解文件許可權
文件許可權,是指對文件的訪問許可權,包括對文件的讀、寫、刪除、執行。通常Linux 將一個文件或目錄與一個用戶和組聯系起來。
與文件許可權相關聯的是第一、第三、第四個域。第三個域是文件的所有者,第四個域是文件的所屬組,而第一個域則限制了文件的訪問許可權。在這個例子中,文件的 所有者是 root,所屬的組是 root,文件的訪問許可權是 drwxr-xr-x。對於文件和目錄講,每個文件和目錄都有一組許可權標志和它們結合在一起,在上例中就是第一個域中的內容。
6. linux下limit知識
一般新機器,在非root用戶下部署java項目之前,一定需要新調整下機器的參數,這里與我們的java進程息息相關的就是 /etc/ecurity/limits 這里的配置。
/etc/ecurity/limits 限制住了系統用戶下所有的文件句柄數,線程數,cpu時間片等等。我們這里只需要關注文件 句柄數和線程數 。
可以查看系統的資源限制,如下:
上面的 open files (-n) 65536 和 max user processes (-u) 4096 是我們重點關注的。它限制了文件最大句柄數和線程數。
編輯 /etc/security/limits.conf , 修改如下配置:
注意 :還需要修改一個地方,否則我們進程的最大限制會被重置掉,筆者之前在這個地方踩了不少坑。需要編輯 /etc/security/limits.d/ 下的文件。
這個 * 會有一個軟線程的最大限制為 4096,會覆蓋 /etc/security/limits.conf 里的配置。一般程序啟動的線程都是屬於 soft nproc 。
網上的說法是修改了 limit 後,重啟linux系統才會奏效。事實上不是這樣,修改了之後,新啟動的進程會使用新的limit限制參數,而之前起的進程還是會使用老的配置,所以只需要重啟進程即可。
可以評估一個應用的指標情況,可以看他的句柄數、線程數等等, 在 /proc/{pid}/fd/ 可以查看進程所有打開的文件,socket連接也是一個文件,當存在很多socket沒有釋放的話,說明open 文件沒有關閉或者釋放。