1. linux系统/etc/security/limits.conf文件什么作用
limits.conf
文件实际是
Linux
PAM(插入式认证模块,Pluggable
Authentication
Moles)中
pam_limits.so
的配置文件,而且只针对于单个会话。limits.conf的格式如下:username@groupname
type
resource
limitusername@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
文件中有:ls
/lib/security/pam_limits.so
如果不作限制,可能一行代码就让你很惨了,甚至需要你重启一下。
你可以把下面这行代码复制粘贴到终端里执行测试一下是否需要限制
:(){
::;
};
:例如我的:*
soft
core
0*
hard
rss
102400truth
soft
nproc
2047truth
hard
nproc
16384truth
soft
nofile
1024truth
hard
nofile
65536truth
hard
cpu
10同时编辑sudo
gedit
/etc/pam.d/login加入#禁止调试文件session
required
/lib/security/pam_limits.so系统重启后可尝试
:(){
::;
};
:这时会出现bash:
fork:
资源临时不可用
2. 如何修改linux最大文件打开数
进程最大打开文件描述符数:user limit中nofile的soft limit
a. 查看
$ ulimit -n
1700000
2. 设置
a. 临时性:通过ulimit -Sn设置最大打开文件描述符数的 limit,注意soft limit不能大于hard limit(ulimit -Hn可查看hard limit),另外ulimit -n默认查看的是soft limit,但是ulimit -n 1800000则是同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit。
查看hard limit:
$ ulimit -Hn
1700000
设置soft limit,必须小于hard limit:
$ ulimit -Sn 1600000
2. 永久性:上面的方法只是临时性的,注销重新登录就失效了,而且不能增大hard limit,只能在hard limit范围内修改soft limit。若要使修改永久有效,则需要在/etc/security/limits.conf中进行设置(需要root权限),可添加如下两行,表示用户chanon最大打开文件描述符数的soft limit为1800000,hard limit为2000000。以下设置需要注销之后重新登录才能生效:
chanon soft nofile 1800000
chanon hard nofile 2000000
设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后无法正常登录。可以修改nr_open的值:
# echo 2000000 > /proc/sys/fs/nr_open
3. 查看linux哪个用户的最大的文件打开数
linux系统下查看进程复打开文制件
在/proc下,对应每个进程有一个以进程号命名的目录,该目录下有一个fd目录,该目录下面的每个文件是一个符号连接,其文件名对应该进程占用的一个文件描述符,而连接指向的内容表示文件描述符对应的实际文件,有多少个文件描述符表示该进程打开了多少文件。
另外Linux
默认的进程打开文件上限是1024个,可以通过ulimit
-n查看。很多系统上限可以通过修改/etc/security/limits.conf文件改变,这个文件有详细的注释,对如何修改做了说明。如果希望
把所有用户的进程打开文件上限改为65536,可以加入下面两行
* soft nofile 65535
* hard nofile 65535
还可以只真对某个用户或某个组做修改,具体方法参见文件注释。修改后需要重新启动系统才能生效
4. Linux默认的文件及文件夹的权限分别是多少
在linux中,来一位用户在创建源文件和目录时,对其具有的权限都是一样的,
在linux系统中任何文件/目录都有一定的权限,对于新创建的文件或目录,也会有默认的访问权限。可能是出于安全的考虑,linux系统linux系统新建文件默认没有执行权限,其最大权限为rw-rw-rw-(666),新建目录的最大权限为rwx-rwx-rwx(777)。而默认的权限与umask命令有关。
、umask介绍
umask指定当前用户在新建文件和目录时的默认权限,其值可以通过umask命令得到,其值的含义与chmod 命令是补码的关系。也可以通过umask -S直接查看默认权限。
注意:umask -S 显示的是目录的默认权限>
例如:umask 0002
新建文件的权限为(最大权限666-002)664,即rw-rw-r--
新建目录的权限为最大权限(777-002)775,即rwxrwxr-x
5. linux文件权限包括
linux文件权限包括:对文件所有者本人、同组用户、以及其他用户的可读、可写、可执行权限。
文件的特殊权限有三种:1、suid,2、sgid,3、sticky,其中,suid和sgid用于累加提升权限,简单来说就是如果原来的用户可以访问,反而切换到的用户或者组不能访问,这时候照样是可以访问的。
理解文件权限
文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。通常Linux 将一个文件或目录与一个用户和组联系起来。
与文件权限相关联的是第一、第三、第四个域。第三个域是文件的所有者,第四个域是文件的所属组,而第一个域则限制了文件的访问权限。在这个例子中,文件的 所有者是 root,所属的组是 root,文件的访问权限是 drwxr-xr-x。对于文件和目录讲,每个文件和目录都有一组权限标志和它们结合在一起,在上例中就是第一个域中的内容。
6. linux下limit知识
一般新机器,在非root用户下部署java项目之前,一定需要新调整下机器的参数,这里与我们的java进程息息相关的就是 /etc/ecurity/limits 这里的配置。
/etc/ecurity/limits 限制住了系统用户下所有的文件句柄数,线程数,cpu时间片等等。我们这里只需要关注文件 句柄数和线程数 。
可以查看系统的资源限制,如下:
上面的 open files (-n) 65536 和 max user processes (-u) 4096 是我们重点关注的。它限制了文件最大句柄数和线程数。
编辑 /etc/security/limits.conf , 修改如下配置:
注意 :还需要修改一个地方,否则我们进程的最大限制会被重置掉,笔者之前在这个地方踩了不少坑。需要编辑 /etc/security/limits.d/ 下的文件。
这个 * 会有一个软线程的最大限制为 4096,会覆盖 /etc/security/limits.conf 里的配置。一般程序启动的线程都是属于 soft nproc 。
网上的说法是修改了 limit 后,重启linux系统才会奏效。事实上不是这样,修改了之后,新启动的进程会使用新的limit限制参数,而之前起的进程还是会使用老的配置,所以只需要重启进程即可。
可以评估一个应用的指标情况,可以看他的句柄数、线程数等等, 在 /proc/{pid}/fd/ 可以查看进程所有打开的文件,socket连接也是一个文件,当存在很多socket没有释放的话,说明open 文件没有关闭或者释放。