目 录
一、前言:nobody是不是可疑用户?
在前面一篇文章"Linux安全问题,如何查看哪个用户是可疑用户?如何批量删除这些用户?( http://t.csdnimg.cn/e3zKy)"中,有一段描述:
第三个参数:1000以上的,就是后面建的用户了,也就是普通用户;其它则为系统的用户.可以使用如下命令:
awk -F: '$3>1000{print $1,$3}' /etc/passwd
实际操作效果如下:
[yunwei@ecs-52a1 ~]$ awk -F: '$3>1000{print $1,$3}' /etc/passwd
nobody 65534
clamav 1001
vidisit 1002
yunwei 1003
这里有一个nobody 65534,文章中没有详细解释。所以有的伙伴就问了,这个nobody是不是可疑用户啊,你的机器是不是被人入侵了?
首先感谢伙伴们的关心和支持,其实我们机器一切正常。这里nobody其实是一个特殊的用户,它是系统里面的,不是可疑用户。下面,我们就详细解释一下nobody。
二、Linux系统中的nobody用户?
在Linux系统中,"nobody"是一个特殊的用户名,通常用于运行那些不需要(也不应该)具有系统级权限的服务或进程。它是一个非特权用户,这意味着它没有任何特殊的系统权限。其UID(用户标识符)和GID(组标识符)也不提供任何特权,通常只能访问人人皆可读写的文件。在passwd文件中,nobody的那一行表述如下:
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
nobody是一个特殊用户,UID 和 GID都是65534,它的shell设置为/usr/sbin/nologin,表示这个用户不能登录系统。
由此可以看出,nobody的特点有:
1、权限很低,用户ID和组ID都是65534,接近最低权限,也就是任何人都可以用这个账号访问某个服务,但是其 UID 和 GID 不提供任何特权,该uid和gid只能访问人人皆可读写的文件。
2、用户描述是Kernel Overflow,表示该用户是一个低权限账户,用于运行可能存在风险的服务或进程。
3、是nologin,也就是它是不允许登录系统的。
Linux的 一些服务进程如apache,aquid,nginx等都采用一些特殊的帐号来运行,比如nobody, news, games等等,这是就可以防止程序本身有安全问题的时候,不会被黑客获得root权限。
二、有nobody用户存在,安全吗?
"nobody"用户的设计初衷其实为了增强系统的安全性。通过使用这个用户来运行服务或进程,可以实现权限最小化,防止潜在的攻击者利用漏洞获得过多的系统权限。即使攻击者成功地利用了某个以"nobody"用户身份运行的服务的漏洞,他们也只能获得非常有限的访问权限,无法对系统造成严重的破坏。
"nobody"用户还用于隔离风险。通过将不同的服务或进程以不同的用户身份运行,可以实现风险的隔离,确保一个服务的安全漏洞不会影响到其他服务。
使用"nobody"用户运行服务或进程有以下几个安全相关的特点:
- 权限最小化:由于"nobody"用户没有任何特权,因此,任何以该用户身份运行的进程都无法访问或修改系统的重要文件或资源。这有助于减少潜在的安全风险,因为即使攻击者成功地利用了某个以"nobody"用户身份运行的服务的漏洞,他们也只能获得非常有限的访问权限。
- 防止特权提升:在Linux系统中,如果一个进程具有过多的权限,那么攻击者可能会利用该进程的漏洞来提升自己的权限,从而完全控制整个系统。但是,如果进程以"nobody"用户身份运行,那么攻击者就无法利用该进程的漏洞来提升权限,因为他们已经处于最低权限级别。
- 隔离风险:通过将不同的服务或进程以不同的用户身份运行,可以实现风险隔离。即使一个以"nobody"用户身份运行的服务被攻击,攻击者也无法利用该漏洞来访问或控制其他以不同用户身份运行的服务。
总之,"nobody"是Linux系统中的一个特殊用户名,用于增强系统的安全性和隔离风险, 是Linux系统中的一个重要安全机制,它有助于减少系统的安全风险并提高系统的整体安全性。
因此,nobody用户的存在,对linux不断没有风险,而且由于有了nobody的这种机制,对系统是安全的。