Linux系统/etc/security/limits.conf文件啥作用??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统/etc/security/limits.conf文件啥作用??相关的知识,希望对你有一定的参考价值。

Linux系统/etc/security/limits.conf文件主要起什么作用??

/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 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 文件中有:session required /lib/security/pam_limits.so按下面说的,可以用ulimit -n 32768设置最大描述符,不过只对当前会话有用,而且要root,这个不好办或者修改/etc/security/limits.conf,但要重启另外,没查到linux究竟最大描述符有没有限制,其他几个限制要不要改
参考技术A 主要是对用户的资源使用进行限制。比如:限制文件打开的数量。core产生的大小等等 参考技术B limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 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: 资源临时不可用

linux 系统调优

1,用户最大进程数配置 

Centos5环境修改/etc/security/limits.conf文件 
Centos6环境修改/etc/security/limits.d/90-nproc.conf文件

  [email protected]:/data/tools/db# vim /etc/security/limits.conf 

*               soft nofile          65535
*               soft nproc           65535
*                hard nofile         65535
*                hard nproc          65535

 [email protected]:/data/tools/db# cd /etc/security/limits.d/

  [email protected]:/etc/security/limits.d# vim 90-nofile.conf

* soft nofile 65535
* hard nofile 65535
root soft nofile unlimited


内核调优

vim /etc/sysctl.conf 修改后 sysctl -p 生效




# 内核panic时,30秒后自动重启

kernel.panic = 30

#

# # 允许更多的PIDs (减少滚动翻转问题); may break some programs 32768

kernel.pid_max = 32768

#

# # 内核所允许的最大共享内存段的大小(bytes)

kernel.shmmax = 16777216

#

# # 在任何给定时刻,系统上可以使用的共享内存的总量(pages)

kernel.shmall = 4194304

#

# # 设定程序core时生成的文件名格式

kernel.core_pattern = core_%e

#

# # 当发生oom时,自动转换为panic

vm.panic_on_oom = 1

#

# # 表示强制Linux VM最低保留多少空闲内存(Kbytes)

                                                                     38,1          11%

#

# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and

# sysctl.conf(5) for more details.


# Controls IP packet forwarding

net.


# 内核panic时,30秒后自动重启

kernel.panic = 30

#

# # 允许更多的PIDs (减少滚动翻转问题); may break some programs 32768

kernel.pid_max = 32768

#

# # 内核所允许的最大共享内存段的大小(bytes)

kernel.shmmax = 16777216

                                                                     4,1            0%

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

#

# # 表示是否启用以一种比超时重发更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为>了实现更好的性能应该启用这个选项

net.ipv4.tcp_timestamps = 1

#

# # 表示本机向外发起TCP SYN连接超时重传的次数

net.ipv4.tcp_syn_retries = 4


# Controls the System Request debugging functionality of the kernel

kernel.sysrq = 0


kernel.core_uses_pid = 1


# Controls the default maxmimum size of a mesage queue

kernel.msgmnb = 65536


# Controls the maximum size of a message, in bytes

kernel.msgmax = 65536


# 内核panic时,30秒后自动重启

kernel.panic = 30

#

# # 允许更多的PIDs (减少滚动翻转问题); may break some programs 32768

kernel.pid_max = 32768

#

# # 内核所允许的最大共享内存段的大小(bytes)

kernel.shmmax = 16777216

#

# # 在任何给定时刻,系统上可以使用的共享内存的总量(pages)

kernel.shmall = 4194304

#

# # 设定程序core时生成的文件名格式

kernel.core_pattern = core_%e

                                                                     11,0-1         6%

net.ipv4.tcp_synack_retries = 4

#

# # 减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。

net.ipv4.tcp_fin_timeout = 30

#

# # 减少TCP KeepAlive连接侦测的时间,使系统可以处理更多的连接。

# # 如果某个TCP连接在idle 300秒后,内核才发起probe.如果probe 2次(每次2秒)不成功,内核才彻

底放弃,认为该连接已失效.

net.ipv4.tcp_keepalive_time = 300

net.ipv4.tcp_keepalive_probes = 2

net.ipv4.tcp_keepalive_intvl = 2

#

# # 系统所能处理不属于任何进程的TCP sockets最大数量

net.ipv4.tcp_max_orphans = 262144

#

# # 系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清>除并打印警告信息。

net.ipv4.tcp_max_tw_buckets = 40000

#

# # arp_table的缓存限制优化

net.ipv4.neigh.default.gc_thresh1 = 256

net.ipv4.neigh.default.gc_thresh2 = 1024

net.ipv4.neigh.default.gc_thresh3 = 8192

net.ipv4.neigh.default.gc_stale_time=120

net.ipv4.conf.all.arp_announce=2

net.ipv4.conf.lo.arp_announce=2



以上是关于Linux系统/etc/security/limits.conf文件啥作用??的主要内容,如果未能解决你的问题,请参考以下文章

linux下修改/etc/security/limits.d/90-nproc.conf用不用重启

如何让/etc/security/user做的修改马上生效

linux /var/log目录下没有messages和secure文件

CentOS6.x 下 /etc/security/limits.conf 被改错的故障经历

Linux /var/log下的各种日志文件

python脚本分析/var/log/secure登录日志并处理