ulimit 失效问题

背景 : 直接连接 bs 用户操作系统 发现root上的ulimit的设置失效,然而从root 用户su - bs 用户后发现生效
首先root用户
vi /etc/security/limits.conf

  • soft   nofile  65535
    
  • hard   nofile  65535
    
  •  soft    nproc   65535
    
  •  hard    nproc   65535
    

bs soft nproc 65535
bs hard nproc 65535

此参数修改如果只有root生效,普通用户不生效,那么多加一条,然后退出当前连接再次登入系统,发现生效。如果是es配置 需要65536

在这里插入图片描述

在这里插入图片描述
echo ulimit -n 65535 >>/etc/profile
source /etc/profile
ulimit -n

centos7 配置
open_files_limit
因为默认配置为5000,想要增大数量
一般帖子里说如果 ulimit -n
是多大,open就是多大,但是现在限制是65535,而open还是5000
根据网上提示修改了/etc/systemd/system/mysql.service里面LimitNOFILE=65535
LimitMEMLOCK=65535,发现不生效,在/etc/my.cnf里面配置
open_files_limit=65535发现不生效,
看到帖子
https://www.cnblogs.com/wangdong/p/9805943.html
CentOS 7下Limit的配置由下面配置文件来决定
全局设置:/etc/systemd/system.conf(如DefaultLimitNOFILE=65535)
在这里插入图片描述
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535

配置完毕后按理说应该生效,然而发生了开始描述的错误,下面为解决方法 (部分文字引用)
用bs用户登入系统时发现报错
ulimit: open files: cannot modify limit: Operation not permitted
解决
通过这部判断出,ulimit配置生效,可能是由于ssh的原因导致修改的limit.confs文件失效。
网上查资料发现,openssh 7.3之后版本中的ssh登陆PAM认证过程发生了变化。/etc/pam.d下没有单独认证授权配置文件。导致没有成功的加载limits.conf的配置。
因此需要通过修改sshd的认证方式,使其在用户登录认证的时调用pam_limits.so这个模块应用/etc/security/limits.conf中所修改的限制值
解决方法1
vim /etc/ssh/sshd_conf
UseLogin yes
说明:
• 一旦开启该选项,表示调用系统的login进行登录验证
• login会调用系统的/etc/pam.d/login进行相应的验证授权和会话记录等控制。
• 在/etc/pam.d/login中已经有配置 session required pam_limits.so 因此会应用上针对limit.conf的修改。
重启服务,重启服务过程中,报出一个提示:
Starting sshd:/etc/ssh/sshd_config line 95: Deprecated option UseLogin
这个说明ssh 不推荐使用这个配置。
原因是:
• 如果开启此选项,那么 X11Forwarding 将会被禁止,因为 login 命令不知道如何处理 xauth cookies 。
• 同时login命令是禁止用于远程执行命令的。
• 所以需要同时保证UsePrivilegeSeparation开启,那么它将在认证完成后被禁用,该选项为缺省开启。
重新ssh登录后用ulimit -u检查,发现已经应用上文件数限制的修改。

方法2
/etc/ssh/sshd_conf
UsePAM yes
说明:
• 一旦开启该选项,表示调用独立的pam认证文件进行登录验证
• 需要在/etc/pam.d/目录创建名为sshd的pam配置文件。
• 在pam配置文件中需保证有session required pam_limits.so部分
为了省事。可直接将login的配置文件复制成sshd或者也可以直接创建名为sshd的login符号链接,如下:
ln -sf /etc/pam.d/login /etc/pam.d/sshd
重启服务。
注:
• 有可能重启服务后报错,错误提示为,不支持UsePAM yes这个选项。
• 这说明,之前在编译安装openssh的时候,没有加上-with-pam选项,需要重新编译安装。

发布了26 篇原创文章 · 获赞 5 · 访问量 4447

猜你喜欢

转载自blog.csdn.net/weixin_40143280/article/details/105273199