Intro

我司本小厂,每个员工都是身兼数职,所以开发人员直接登录线上服务器改东西是常态。有些开发人员,自持水平较高(的确水平也是较高,但缺乏对系统的敬畏),所以总是越俎代庖,改一些本身应该是线上运维人员改动的配置。本文提到的 /etc/security/limits.conf 两次改错导致的事故,皆是因为于此。

In details

The first time

第一次是在 /etc/security/limits.conf 中加了两句:

*   soft    nofile  unlimited
*   hard    nofile  unlimited

结果就是:
所有用户无法登录。一登录,马上被踢出来。

最后解决方法:
单用户进系统把文件 /etc/security/limits.conf 改回来。

原因:
配置文件 /etc/security/limits.conf 中 nofile 的参数,只支持数字,"unlimited" 显然系统不认。

The second time

第二次也是在 /etc/security/limits.conf 中加了两句:

root    soft    nofile  2000000
root    hard    nofile  2000000

结果是:

  • root 用户一登录,就被踢
  • 普通用户可登录,但 sudo su - 一切成 root 马上会被踢(但普通用户只支持 sudo su -

解决方法:
像前面文章 一次本地提权的实战演练 有提到的:

  1. 普通用户登录
  2. 用 DirtyCow(脏牛)本地提权
  3. 然后把 /etc/security/limits.conf 改回去。

原因:

  1. 配置文件 /etc/security/limits.conf 中 nofile 的参数,其最大值不能大于 kernel 参数 NR_OPEN 的限制
  2. 而 kernel 2.6.32 里,NR_OPEN 的值缺省为 1024*1024=1048576
  3. 这里的 2000000>1048576,所以出错被踢

稍稍延展一下,如果我一定要将 nofile 参数设置为 2000000呢?
其实这也有办法,提高 kernel 里 NR_OPEN 的值即可,具体方法是:

[[ ! -e /etc/sysctl.d ]] && mkdir /etc/sysctl.d;
echo "fs.nr_open = 2000000" > /etc/sysctl.d/nr_open.conf;
sysctl -w fs.nr_open=2000000;

总结

总而言之,言而总之:Linux 下配置文件 /etc/security/limits.conf 文件不要随意改动。我其实还是倾向于在启动服务的启动脚本里手工用 ulimit 命令来设置相关参数而不要直接在 /etc/security/limits.conf 文件里改。

作者:haw_haw
链接:https://www.jianshu.com/p/e3e7411f8afb
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

转载于:https://www.cnblogs.com/augusite/p/10775115.html

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

  1. [转帖]linux文件描述符文件/etc/security/limits.conf

    linux文件描述符文件/etc/security/limits.conf https://blog.csdn.net/fanren224/article/details/79971359 需要多学习 ...

  2. /etc/security/limits.conf的相关说明

    /etc/security/limits.conf的相关说明 通过ulimit -n命令可以查看Linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小,所以有 ...

  3. /etc/security/limits.conf 控制文件描述符,进程数,栈大小等

    linux下安装Oracle 一般都会修改/etc/security/limits.conf这个文件,但是这里面的具体含义未必每个人都会,刚开始我也不是很清除,只知道要修改,每次安装按照文档配置就可以 ...

  4. 理解RHEL上安装oracle的配置参数 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login

    无论安装什么版本的oracle,在安装之前,都需要配置 /etc/pam.d/login   /etc/profile   /etc/security/limits.conf这三个文件 那这三个文件究 ...

  5. 【Linux】 /etc/security/limits.conf 配置文件说明

    linux资源限制配置文件是/etc/security/limits.conf:限制用户进程的数量对于linux系统的稳定性非常重要. limits.conf文件限制着用户可以使用的最大文件数,最大线 ...

  6. linux系统最大打开文件数(/etc/security/limits.conf:待更新其他设置)

    Linux系统对文件打开的数量有最大的限制,它通常设置为1024,这个数值很容易会达到,从而造成系统程序或者系统的瓶颈.因此,本文从进程本身和系统上说明如何更改linux最大文件数的限制! 1.首先通 ...

  7. Oracle在Linux平台安装时涉及的/etc/security/limits.conf

    在Linux平台上安装Oracle数据库时,会涉及到一个资源限制的问题,与之相关的是一个/etc/security/limits.conf文件.用Linux命令man limits.conf可获得关于 ...

  8. ubuntu 创建 es 集群报错 These can be adjusted by modifying /etc/security/limits.conf

    1.今天 改测试环境的elasticsearch-7.1.1 从单机改成集群 2.把生产的拿过来改配置 elasticsearch.yml #action.destructive_requires_n ...

  9. Centos6/7下静默安装oracle10g

    Centos6/7下静默安装Oracle10g 远程安装oracle10g,通过网上资料,不断摸索成功安装.先在本地虚拟机Centos7上做实验,快照恢复快照恢复,安装了几十次成功之后,再在服务器Ce ...

最新文章

  1. 初中计算机指导教师意见,初中信息技术教学计划(推荐3篇)
  2. win7/8SVN必备的4个服务
  3. php减少损耗的方法之一 缓存对象
  4. OC高效率52之理解消息转发机制
  5. 树莓派下的apache
  6. HTTP请求方法对照表(15种全部解释)
  7. leetcode 82. 删除排序链表中的重复元素 II(map)
  8. python sort函数返回值_python中 sort方法 和sorted函数
  9. STM32之外部中断
  10. Java爬虫框架调研
  11. 张口就问“CCIE”月薪多少
  12. MATLAB实现滚动密钥密码
  13. html平面图绘制,如何利用Word绘制校园平面图?
  14. 扫码枪收银有手续费吗_收银系统怎么选
  15. vtk体绘制代码报错的解决办法(代码在vtk7,8,9中都能运行),以及VTK数据集网站
  16. 【嵌入式学习】嵌入式开发的第一课
  17. 超链接点击页面不调转
  18. 综合案例注册(register)
  19. 计算机信息的容量单位是什么,信息的基本容量单位是
  20. win10 磁盘100%

热门文章

  1. rxjs的一个例子:什么是rxjs的OperatorFunction?
  2. SAP Fiori Launchpad launchpad Designer组件和configuration组件的重要存储表一览
  3. SAP UI5里xml fragment getContent方法的实现
  4. Minikube的启动日志
  5. 如何将一个PDF文件里的图片批量导出
  6. SAP成都研究院大卫哥:SAP C4C中国本地化之微信小程序集成
  7. 使用DOM Breakpoints找到修改属性的Javascript代码
  8. cap理论具体含义_分布式事务的CAP理论
  9. 10自带sftp服务器_WinSCP v5.15.3 免费的 开源图形化 SFTP 客户端
  10. python修改文件后缀_python实现遍历文件夹修改文件后缀