CentOS6.x 下 /etc/security/limits.conf 被改错的故障经历
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 -)
解决方法:
像前面文章 一次本地提权的实战演练 有提到的:
- 普通用户登录
- 用 DirtyCow(脏牛)本地提权
- 然后把 /etc/security/limits.conf 改回去。
原因:
- 配置文件 /etc/security/limits.conf 中 nofile 的参数,其最大值不能大于 kernel 参数 NR_OPEN 的限制
- 而 kernel 2.6.32 里,NR_OPEN 的值缺省为 1024*1024=1048576
- 这里的 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 被改错的故障经历的更多相关文章
- Linux资源使用配置文件 /etc/security/limits.conf
Linux资源使用配置文件 /etc/security/limits.conf http://www.linuxidc.com/Linux/2012-05/59489.htm Linux就这个范儿P5 ...
- 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运维的同学们,相信都遇到过这个问题. 在 ...
- 理解RHEL上安装oracle的配置参数 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login
无论安装什么版本的Oracle,在安装之前,都需要配置 /etc/pam.d/login /etc/profile /etc/security/limits.conf这三个文件 那这三个文件究 ...
- 转载:/etc/security/limits.conf 控制文件描述符,进程数,栈大小
原文地址:http://ilikedo.iteye.com/blog/1554822 linux下安装Oracle 一般都会修改/etc/security/limits.conf这个文件,但是这里面的 ...
- /etc/security/limits.conf 详解与配置
目录 一. /etc/security/limits.conf 详解 /etc/security/limits.conf 配置解析 /etc/security/limits.d/ 目录 二. ulim ...
- /etc/security/limits.conf配置文件详解
这个文件主要是用来限制用户对系统资源的使用.是/lib64/security/pam_limits.so模块对应的/etc/serurity/pam_limits的配置文件. # /etc/secur ...
- [转帖]linux文件描述符文件/etc/security/limits.conf
linux文件描述符文件/etc/security/limits.conf https://blog.csdn.net/fanren224/article/details/79971359 需要多学习 ...
- CentOS 6 修改/etc/security/limits.conf不生效办法
我们使用CentOS系统,在部署新的服务经常会遇到 打开最大文件数限制 too many open files的警告,通常我们只需要修改/etc/security/limits.conf该文件,增加两 ...
- linux资源使用配置文件 /etc/security/limits.conf和ulimit
limits.conf文件实际上是linux PAM中pam_limits.so的配置文件,而且只针对于单个会话. limits.conf的格式如下: <domain> <type& ...
随机推荐
- 爬虫四大金刚:requests,selenium,BeautifulSoup,Scrapy
一.简介爬虫 1.什么是爬虫 #1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. #2.互联网建立的目的? 互联网的核心价值在于数据的共 ...
- 第三周java学习总结
学号 20175206 <Java程序设计>第三周学习总结 教材学习内容总结 本周为第四章的学习,分为以下几个方面: 1.包与代码组织 2.String类 3.对象创建 4.包装类 经过代 ...
- java基础 关于final修饰符
final作为一个修饰符,可以修饰类.变量.函数. 1.被final修饰的类不可以被继承(保护封装性),为了避免被继承,被子类复写: 2.被final修饰的函数不可以被复写 3.被final修饰的变量 ...
- Arduino—运算符
赋值运算符: = += -+ *= /= %= 取余等于 &= 与等于 &=(与等于)对某个变量的值按位进行与运算,例如:G&=x ...
- 认识Modbus协议
1.什么是Modbus? Modbus协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间,控制器经由网络(例如以太网)和其它设备之间可以通信.Modbus协议定义了一个控制器能认识使用 ...
- 一些C++的语法
一.类的析构函数 类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行. 析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何 ...
- JSP+MySQL验证登录的实现方式
用IDEA连接MySQL验证登录实现方式核心部分代码 用setString的方法对从数据库中的提取的信息经行比对: try { Class.forName("com.mysql.jdbc.D ...
- mvc RedirectToAction、mobile 重定向地址栏未改变
@using (Html.BeginForm("actionName", "controllerName", FormMethod.Post, new { da ...
- eval()和$.parseJSON()注意事项
在前后端分离大行其道XXX(巴拉巴拉的废话不多讲了).描述实际应用场景:后台组装数据,返回到前台调用. 刚开始没有注意“后台返回字符串_1”的形式,使用eval()处理. 只是返回了字符串,不是严格意 ...
- 解析查询 queryString 请求参数的函数
quety string 请求参数 本质上可以理解为一种序列化的格式,与 json 类似,它是一种字典类型的容器,里面可以保存键值对(key-value pair).只不过 querystring 这 ...