linux /etc/security/limits.conf的相关说明(转帖)

本文介绍如何通过Linux的limits.conf文件和ulimit命令来限制用户资源使用,包括核心文件大小、最大文件数量、进程数量等,并展示了如何为特定用户设置这些限制。

nux limits.conf 配置 limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话。
limits.conf的格式如下:
username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。
resource:
core - 限制内核文件的大小
date - 最大数据大小
fsize - 最大文件大小
memlock - 最大锁定内存地址空间
nofile - 打开文件的最大数目
rss - 最大持久设置大小
stack - 最大栈大小
cpu - 以分钟为单位的最多 CPU 时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:
session required /lib/security/pam_limits.so






按下面说的,可以用ulimit -n 32768设置最大描述符,不过只对当前会话有用,而且要root,这个不好办
或者修改/etc/security/limits.conf,但要重启
另外,没查到linux究竟最大描述符有没有限制,其他几个限制要不要改


http://www.nsfocus.net/index.php?act=magazine&do=view&mid=134
如何限制和监视用户

PAM 大多数的LINUX都内建了PAM支持。PAM的一个功能是系统环境设置,例如设置某个用户允许使用的系统内存大小等。在Red Hat和Caldera这

两个发行版本的 /etc/security/ 目录下包含了许多可配置文件。最有趣的当属 /etc/security/limits.conf 文件,它允许你定义用户或用户

组规则,规则是“软(soft)”或“硬(hard)”,规则的内容(如CPU、内存、最大文件大小等)。例如:

*    hard    core    0
bob    soft    nproc    100
bob    hard    nproc    150

第一行规则禁止所有人产生core文件,第二行规则(软)定义用户bob的最大进程数为100, 第三行规则(硬)定义用户bob的最大进程数为150

。可以超出软规则的限制(警告),但不 能超过硬规则的限制。你可以想像得到,这些规则定义到所有用户的登录SHELL和FTP等服务 时是很

有帮助的。

Bash
Bash内建了一个限制器"ulimit"。注意任何硬限制都不能设置得太高,因此如果你在/etc/profile或用户的 .bash_profile (用户不能编辑或

删除这些文件)中定义了限制规则,你就能对用户的Bash shell实施限制。这对于缺少PAM支持的LINUX旧发行版本是很有用的。你还必须确保

用户不能改变他们的登录shell。限制的设置与PAM相似。例如:

ulimit –Sc 0
ulimit –Su 100
ulimit –Hu 150


http://www.ringkee.com/jims/read_folder/books/LinuxHackingExposed
Ulimit命令
设置限制     可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义
限制。
命令参数
-a      显示所有限制
-c      core文件大小的上限
-d      进程数据段大小的上限
-f      shell所能创建的文件大小的上限
-m     驻留内存大小的上限
-s      堆栈大小的上限
-t      每秒可占用的CPU时间上限
-p     管道大小
-n     打开文件数的上限
-u     进程数的上限
-v     虚拟内存的上限
除可用Ulimit命令设置外,也可以在/etc/security/limits.conf文件中定义限制。
domino type item value
domino是以符号@开头的用户名或组名,*表示所有用户,type设置为hard or soft。item指
定想限制的资源。如cpu,core nproc or maxlogins
。value是相应的限制值。


http://tech.blogchina.com/123/2005-06-10/372941.html
Unix、Linux下常用监控和管理命令工具
检查编写的程序打开的文件数。   

  sysctl:显示(或设置)系统内核参数   

  sysctl -a 显示所有内核参数  

  sysctl -w 参数名=参数值   

  例如:sysctl -w fs.file-max=10240 设置系统允许同时打开的最大文件数为10240。   

  内核参数fs.file-nr包括三个参数值,第一个参数表示系统中曾经同时打开过的文件数峰值,   
  第二个参数表示空闲(分配后已释放)的文件数,   

  第三个参数表示可以打开的最大文件数,其值等于fs.file-max。   

  当前打开的文件数 = 第一个参数值 - 第二个参数值   

  例如:   

  fs.file-nr = 977 223 10240   

  当前打开的文件数 = 977 - 233 = 744   

  设置内核参数时务必小心,如果设置不当会导致系统异常,甚至当机。   

  ulimit:显示(或设置)用户可以使用的资源限制   

  ulimit -a 显示用户可以使用的资源限制   

  ulimit unlimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)   

  和可同时运行的最大进程数(max user processes)无效   

  ulimit -n <可以同时打开的文件数> 设置用户可以同时打开的最大文件数(max open files)

  例如:ulimit -n 8192   

  如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误   

  ulimit -u <可以运行的最大并发进程数> 设置用户可以同时运行的最大进程数(max user processes)   

  例如:ulimit -u 1024 


http://www-128.ibm.com/developerworks/cn/linux/es-JavaVirtualMachinePerformance.html?ca=dwcn-newsletter-linux


IBM JVM for Linux on POWER 的性能调优技巧
用户限制设置
为了获得最佳性能,让运行 JVM 进程的用户拥有经过正确配置的用户设置是很重要的。这些参数可以设置成以下两种形式之一:

暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件之一(例如 ~/.profile),即特定于 shell 的用户资源文件;或者

通过编辑 /etc/security/limits.conf。

建议设置成无限制(unlimited)的一些重要设置是:

数据段长度:ulimit –d unlimited
最大内存大小:ulimit –m unlimited
堆栈大小:ulimit –s unlimited
CPU 时间:ulimit –t unlimited
虚拟内存:ulimit –v unlimited

对于需要做许多套接字连接并使它们处于打开状态的 Java 应用程序而言,最好通过使用 ulimit –n,或者通过设置

/etc/security/limits.conf 中的 nofile 参数,为用户把文件描述符的数量设置得比默认值高一些。 




提高 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

 

 原文地址 http://www.lupaworld.com/action_viewstutorial_itemid_3073.html

<think>我们正在处理用户关于使用vi编辑/etc/security/limits.conf文件时无法修改的问题。 根据之前的对话,用户已经知道如何解决只读文件的问题(通过sudo或修改权限),但这次是特定文件/etc/security/limits.conf。 同时,用户提供了引用资料,这些资料虽然主要是关于limits.conf配置生效条件的,但我们现在要解决的是编辑权限问题。 注意:/etc/security/limits.conf 是系统级配置文件,通常需要管理员权限才能修改。 因此,解决方法应该是使用sudo来编辑文件,或者先修改文件权限(不推荐,因为该文件权限设置很重要)再编辑。 然而,用户提到“无法修改”,可能的原因包括: 1. 文件是只读的(权限为444),普通用户没有写权限。 2. 用户试图在vi中保存时没有使用管理员权限。 根据之前我们教给用户的方法,有两种方式: 方法1:在vi中使用:w !sudo tee % 来强制保存(需要输入sudo密码) 方法2:在命令行使用sudo vi来打开文件 另外,用户提供的引用中提到了limits.conf的配置生效条件,但这与编辑权限无关,所以我们不需要在解决编辑权限问题时涉及。 但是,用户可能会在编辑后遇到配置不生效的问题,我们可以稍微提一下(但不是当前问题的重点),并引导用户参考引用中的说明。 步骤: 1. 使用sudo打开文件(推荐方式) 2. 或者先修改权限再编辑(不推荐,因为可能破坏系统默认权限设置) 由于用户要求尽可能参考上一次的问题和回答,我们之前已经给出了两种方法。因此这次我们针对这个特定文件,推荐使用sudo方式。 注意:在修改系统配置文件时,务必小心,建议备份。 同时,生成相关问题。 </think>要解决使用 `vi` 编辑 `/etc/security/limits.conf` 文件时无法修改的问题,需解决权限和配置生效问题,下面是完整解决方案: --- ### 🔒 解决方案:编辑权限问题(核心问题) #### 1. **使用管理员权限编辑文件**(推荐) 在终端执行: ```bash sudo vi /etc/security/limits.conf ``` - 输入管理员密码后即可正常修改保存 - 原理:系统配置文件默认权限为 `-rw-r--r--`(644),普通用户无写权限[^4] #### 2. **临时提升文件权限** ```bash sudo chmod u+w /etc/security/limits.conf # 添加写权限 vi /etc/security/limits.conf # 编辑文件 sudo chmod u-w /etc/security/limits.conf # 恢复权限 ``` > ️ 注意:操作后需恢复权限,避免安全隐患 --- ### ⚙️ 配置生效问题(编辑后无效) 编辑后需确保配置生效: #### 1. **验证 PAM 模块加载** 检查 `/etc/pam.d/login` 文件是否包含: ```bash session required pam_limits.so ``` 若无则追加该行并保存(需 `sudo`)[^2] #### 2. **重新登录或重启服务** - 用户级限制:退出当前会话**完全重新登录** - 服务级限制:重启相关服务(如 SSH) ```bash sudo systemctl restart sshd ``` #### 3. **Systemd 服务的特殊处理** 对 systemd 管理的服务(如 nginx、mysql): ```bash # 修改服务单元文件,例如: sudo systemctl edit nginx ``` 添加: ```ini [Service] LimitNOFILE=65535 ``` > 因 `/etc/security/limits.conf` 对 systemd 服务无效[^3] --- ### 📝 配置示例 ```bash # /etc/security/limits.conf * soft nofile 10240 # 所有用户文件打开数 root hard nproc 10000 # root用户进程数限制 tom soft memlock unlimited # 用户tom内存锁定无限制 ``` 资源限制计算公式: $$ \text{实际限制} = \min(\text{hard limit}, \max(\text{soft limit}, \text{用户请求值})) $$ --- ### ️ 关键注意事项 1. **权限恢复**:编辑后检查权限是否为 `-rw-r--r--`(`644`) ```bash sudo chmod 644 /etc/security/limits.conf ``` 2. **配置冲突**:优先使用 `/etc/security/limits.d/` 目录的配置 3. **root 豁免**:root 用户通常不受限制(配置中以 `root` 开头的行除外) 4. **生产环境**:修改前备份文件! ```bash sudo cp /etc/security/limits.conf{,.bak} ``` --- ### ❓ 相关问题 1. 如何验证资源限制是否已成功应用到当前会话? 2. `systemctl show sshd` 输出的资源限制与 `limits.conf` 不一致时应如何处理?[^3] 3. 为什么 `ulimit -n` 显示的值与 `limits.conf` 配置不同? 4. 如何在 Docker 容器中正确继承宿主机的资源限制? 5. `/proc/<PID>/limits` 文件如何解读各项资源限制? > 引用说明:系统配置生效依赖 PAM 模块加载[^2],且 systemd 服务需单独配置[^3],修改后需重新登录或重启服务[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值