Linux系统参数配置简介

Linux服务器在对应用程序进行优化配置的时候,经常使用到sysctl和PAM两个模块对服务器进行优化。关于这两块的介绍也很多,这里主要集中了相关内容,并整体做了一个介绍。

sysctl内核参数配置


使用“sysctl -a”命令可以查看所有正在使用的内核参数。内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。

注:安装的组件和使用的方式不一样,正在使用的内核参数是不一样的。所有的内核参数的说明文档是放到linux-source-code\Documentation\sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说明文档。

sysctl内核参数有两种修改方法

1) 命令设置的方式,对应内核运行配置参数
2) 文件设置的方式,对应内核静态配置参数

sysctl内核动态系统参数配置

其参数保存的主要位置为/proc/sys

使用“sysctl -w 参数名=值”的方式
例如:把net.ipv4.ip_forward的值修改为1,使用命令“sysctl -w net.ipv4.ip_forward=1”。

修改内核参数对应的proc文件
内核参数位于/proc/sys/之下,参数名称是以文件所在的路径,并将“/”以“.”来取代。举例来说,/proc/sys/net/ip_forward的参数名称为net.ipv4.ip_forward。
例如:把net.ipv4.ip_forward的值修改为1,使用命令“echo “1” > /proc/sys/net/ipv4/ip_forward”。

注意,这里proc文件跟普通的文件不一样。一般一个文件用echo写入内容之后,会变成一个文本文件,但echo修改proc文件之后还是个空文件。

sysctl内核静态系统参数配置

其参数保存的主要位置为/etc/sysctl.conf,针对整个系统参数配置。文件方式的好处是内核参数设置的值可以用文件保留下来。

内核参数默认保存在/etc/sysctl.conf文件中。修改的时候可以直接用vi编辑sysctl.conf文件,增加要修改的内核参数内容,修改的格式为:参数名=值。
例如,把net.ipv4.ip_forward的值修改为1,在sysctl.conf中增加下面这行内容:

net.ipv4.ip_forward=1

文件修改好后,进行保存。

使用“sysctl -p 配置文件名”来使配置生效
如果配置文件是默认的,可以不用输配置文件名,即使用“sysctl -p”。

系统重启,通过配置文件启动内核生效
之前认为修改后的内核参数放在文件中,系统启动的时候会读这个文件,重启后设置应该不会失效。但经过验证,一般会失效。需要把将默认的boot.sysctl服务打开,系统启动时就会执行这个文件的设置。或者把修改参数的命令“/sbin/sysctl -e -p /etc/sysctl.conf”写入启动执行脚本文件里/etc/rc.local,这样系统重启后配置就不会失效。

PAM插入式认证模块参数配置

其参数保存的主要位置为/etc/security/limits.conf,针对用户参数配置。

Linux PAM(插入式认证模块,Pluggable Authentication Modules)中pam_limits.so 的配置文件,突破系统的默认限制,对系统访问资源有一定保护作用。其工作原理为当用户 访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理.

注意:要使limits.conf文件配置生效,必须要确保pam_limits.so文件被加入到启动文件中。查看程序配置文件中有"session required /lib/security/pam_limits.so"

例如:限制admin用户登录到sshd的服务不能超过2个
在/etc/pam.d/sshd中添加:session required pam_limits.so

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

注意:查看应用程序能否被PAM支持,用ldd查看链接关系。


$ ldd /usr/sbin/sshd
        linux-vdso.so.1 =>  (0x00007fffcb5fe000)
        libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007fa5412ce000)
        libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fa5410aa000)
        libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fa540e9b000)
        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fa540c78000)
        libck-connector.so.0 => /usr/lib/x86_64-linux-gnu/libck-connector.so.0 (0x00007fa540a74000)
        libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fa54082e000)
        libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fa540452000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fa54024f000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa540035000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fa53fdfc000)
        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fa53fbb5000)
        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fa53f8e9000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fa53f6e5000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa53f320000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fa53f105000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa53ef01000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fa53ecc3000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa5417b0000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa53eaa4000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa53e89c000)
        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fa53e66d000)
        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fa53e461000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fa53e25d000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fa53e042000)

PAM插入式认证模块配置格式

username|@groupname   type  resource  limit

username|@groupname
设置需要被限制的用户名,组名前面加@和用户名区别。也可用通配符*来做所有用户的限制

type
类型有soft,hard 和 -,其中soft 指的是当前系统生效的设置值。hard表明系统中所能设定的最大值。soft的限制不能比har限制高。用 - 就表明同时设置了soft和hard的值。可以超出软规则的限制(警告),但不能超过硬规则的限制。

resource
表示要限制的资源

limit
表示资源数量

PAM插入式认证模块配置资源

1)core - 限制内核文件的大小,何谓core文件,当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像,系统默认core文件的大小为0,所以没有被创建。可以用ulimit命令查看和修改core文件的大小。

2)date - 最大数据大小

3)fsize - 最大文件大小

4)memlock - 最大锁定内存地址空间

5)nofile - 打开文件的最大数目,对于需要做许多套接字连接并使它们处于打开状态的应用程序而言,最好通过使用ulimit -n,或者通过设置nofile参数,为用户把文件描述符的数量设置得比默认值高一些

6)rss - 最大持久设置大小

7)stack - 最大栈大小

8)cpu - 以分钟为单位的最多 CPU 时间

9)noproc - 进程的最大数目

10)as - 地址空间限制

11)maxlogins - 此用户允许登录的最大数目

PAM插入式认证模块配置方式

1)暂时生效
适用于通过ulimit命令登录shell会话期间,Ulimit命令参数
-a      显示所有限制
-c      core文件大小的上限
-d      进程数据段大小的上限
-f      shell所能创建的文件大小的上限
-m     驻留内存大小的上限
-s      堆栈大小的上限
-t      每秒可占用的CPU时间上限
-p     管道大小
-n     打开文件数的上限
-u     进程数的上限
-v     虚拟内存的上限

2)永久生效
通过将一个相应的ulimit语句添加到由登录shell读取的文件之一(例如 ~/.profile),即特定于shell的用户资源文件;或者通过编辑/etc/security/limits.conf


PAM插入式认证模块常用配置

1)建议设置成无限制(unlimited)


数据段长度:ulimit –d unlimited

最大内存大小:ulimit –m unlimited

堆栈大小:ulimit –s unlimited

CPU 时间:ulimit –t unlimited

虚拟内存:ulimit –v unlimited

2)套接字应用程序
对于需要做许多套接字连接并使它们处于打开状态的应用程序而言,最好通过使用 ulimit –n,或者通过设置/etc/security/limits.conf中的nofile 参数,为用户把文件描述符的数量设置得比默认值高一些。

3)应用程序开发调试
# ulimit -c 1000
-c 指定修改core文件的大小,1000指定了core文件大小。也可以对core文件的大小不做限制,如: ulimit -c unlimited
注意:如果想让修改永久生效,则需要修改配置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf

4)提高 Oracle 用户的 shell 限制

首先,修改/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 /lib/security/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 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值