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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

CentOS6.x 下 /etc/security/limits.conf 被改错的故障经历的更多相关文章

  1. Linux资源使用配置文件 /etc/security/limits.conf

    Linux资源使用配置文件 /etc/security/limits.conf http://www.linuxidc.com/Linux/2012-05/59489.htm Linux就这个范儿P5 ...

  2. linux /proc/sys/fs/file-nr /proc/sys/fs/file-max /etc/security/limits.conf 三者的关联

    ulimit -n 对应 /etc/security/limits.conf 文件设置 问题: Can’t open so many files 对于linux运维的同学们,相信都遇到过这个问题. 在 ...

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

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

  4. 转载:/etc/security/limits.conf 控制文件描述符,进程数,栈大小

    原文地址:http://ilikedo.iteye.com/blog/1554822 linux下安装Oracle 一般都会修改/etc/security/limits.conf这个文件,但是这里面的 ...

  5. /etc/security/limits.conf 详解与配置

    目录 一. /etc/security/limits.conf 详解 /etc/security/limits.conf 配置解析 /etc/security/limits.d/ 目录 二. ulim ...

  6. /etc/security/limits.conf配置文件详解

    这个文件主要是用来限制用户对系统资源的使用.是/lib64/security/pam_limits.so模块对应的/etc/serurity/pam_limits的配置文件. # /etc/secur ...

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

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

  8. CentOS 6 修改/etc/security/limits.conf不生效办法

    我们使用CentOS系统,在部署新的服务经常会遇到 打开最大文件数限制 too many open files的警告,通常我们只需要修改/etc/security/limits.conf该文件,增加两 ...

  9. linux资源使用配置文件 /etc/security/limits.conf和ulimit

    limits.conf文件实际上是linux PAM中pam_limits.so的配置文件,而且只针对于单个会话. limits.conf的格式如下: <domain> <type& ...

随机推荐

  1. python第十天

    函数 1.函数:完成特定功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数 在现实中,很多问题要通过一些工具进行处理==>可以将工具提前生产出来,并命名==>通过名字就可以找 ...

  2. Linux(Centos)设置ip

    一.Linux(Centos7)安装完毕后,重启电脑后,输入用户名(root),密码(**********). 在命令行中输入nmtui命令.选择Edit a connection,选择对应的链接端口 ...

  3. 072、一文搞懂各种Docker网络 (2019-04-17 周三)

    参考https://www.cnblogs.com/CloudMan6/p/7587532.html   前面各个小节我们学习了 Docker Overlay .Macvlan .Flannel.We ...

  4. Koa与Node.js开发实战(1)——Koa安装搭建(视频演示)

    学习架构: 由于Koa2已经支持ES6及更高版本,包括支持async方法,所以请读者保证Node.js版本在7.6.0以上.如果需要在低于7.6的版本中应用Koa的async方法,建议使用Babel ...

  5. QButtonGroup按钮组

    继承  QObject 提供 一个抽象的按钮容器, 可以将多个按钮划分为一组,不具备可视化的效果,一般放的都是可以被检查的按钮 import sys from PyQt5.QtWidgets impo ...

  6. Python文件格式 .py .pyc .pyw .pyo .pyd的主要区别

    Python是一种面向对象.解释型计算机程序设计语言.Python 语法简洁.清晰,具有丰富和强大的类库.Python源代码遵循 GPL (GNU General Public License) 协议 ...

  7. python3: 自动化测试框架pytest

    最近在学习web自动化,所以在这里总结一下pytest框架. 其实pytest 和 unittest 都是自动化测试框架,但是pytest更好用一些,有以下几个优点:1)可以根据标签执行用例:2)?? ...

  8. vue较深入的知识点

    1 理解何为虚拟节点 虚拟dom是什么? 虚拟dom就是通过js对象来模拟描述dom树,包括tag,attr, children等属性来代表标签名,属性,子元素等.由于不需要有操作dom的方法,所以比 ...

  9. (Linux)初探cmake .和make命令

    cmake编译OpenCV工程 首先我们看到文件夹中有一cpp文件,CMakeLists.txt文件和一张图片 首先进行cmake .命令 接着进行make命令 . 然后就得到了可执行文件,也就是说可 ...

  10. JAVA_Sprint学习(一)

    保存用户信息的编程思维 传统的思想,就是建立一个类之后,然后将用户的姓名和密码,以及添加用户等操作都放在一个main中, 按照抽象编程的思想而言, 首先建立一个类User,用来是表示用户的具体信息Us ...