⽤户信息⽂件etcpasswd内容详解
这个⽂件中保存的就是系统中所有的⽤户和⽤户的主要信息。我们打开这个⽂件来看看内容到底是什么。
[root@localhost ~]# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
这个⽂件的内容⾮常规律,每⾏代表⼀个⽤户。⼤家可能会⽐较惊讶,Linux系统中默认怎么会有这么多的⽤户啊!这些⽤户中的绝⼤多数是系统或服务政策运⾏所必须的⽤户,我们把这种⽤户称为系统⽤户或伪⽤户。系统⽤户是不能登录系统的,但是这些⽤户同样也不能被删除,因为⼀旦删除,依赖这些⽤户运⾏的服务或程序就不能正常秩序,会导致系统问题。
那么我们把root⽤户这⼀⾏拿出来,看看这个⽂件中的内容具体代表的含义吧。我们会注意到,这个⽂件⽤“:”作为分隔符,划分了7个字段,我们逐个来看具体的含义。
1. ⽤户名称
第⼀个字段中保存的是⽤户名称。不过⼤家需要注意,⽤户名称只是为了⽅便管理员记忆,Linux系统是通过⽤户UID来区分不同⽤户、分配⽤户权限的。⽽⽤户名称和UID的对应是通过/etc/passwd这个⽂件来定义的。
2. 密码标志
这⾥我们说“x”代表的是密码标志,⽽不是真正的密码,真正的密码是保存在/etc/shadow⽂件中的。在早期的UNIX中,这⾥保存的就是真正的加密密码串,但是这个⽂件的权限是644,所有⽤户都可以读取/etc/passwd⽂件,这样⾮常容易导致密码泄露。虽然密码是加密的,但是采⽤暴⼒破解的⽅式是能够进⾏破解的。所以现在的Linux系统把真正的加密密码串放置在影⼦⽂件/etc/shadow中,⽽影⼦⽂件的权限是000。这个⽂件是没有任何权限的,但因为我是root⽤户,所以读取权限不受限制。当然,⽤强制修改的⽅法也是可以⼿⼯修改这个⽂件的内容的。只有root⽤户可以浏览和操作这个⽂件,这样就最⼤限度的保证了密码的安全。
所以/etc/passwd中只有⼀个“x”代表⽤户是有⽤密码的,我们把这个字段陈祚密码标志,具体密码要去/etc/shadow⽂件中查询。但是这个密码标志“x”也是不能被删除的,如果删除了密码标志“x”,那么系统会认为这个⽤户秘钥密码,从⽽导致只输⼊⽤户名⽽不⽤输⼊密码就可以登录(当然只能在本机上使⽤⽆密码登录,远程是不可以的),除⾮特殊情况(如破解⽤户密码),这当然是不可⾏的。
⽤户默认配置信息是从/etc/login.defs⽂件中读取。当系统管理员添加⼀个⽤户的时候,此时系统会将此⽤户的相关信息写⼊相关的⽂件中。在登录⽤户时就会读取这些⽂件。
shell创建文件并写入内容3. UID
第三个字段就是⽤户ID (UID,我们已经知道是通过UID来识别不同的⽤户和分配⾃户权限的。这些UID是有使⽤限制和要求的,我们需要了解。
0: 超级⽤户UID。如果⽤户UID为0,则代表这个账号是管理员账号,在Linux中如何把普通⽤户升级成管理员呢?只需把其他⽤户的UID修改为0就可以了,这点和Windows是不同的。不过不建议建⽴多个管理员账号。
1~ 499: 系统⽤户(伪⽤户)UID。这些UID是系统保留给系统⽤户的UID,也就是说UID是1~ 499范围内的⽤户是不能登录系统的,⽽是⽤来运⾏系统或服务的,其中,1~ 99是系统保留的账号,系统⾃动创建;100-499是预留给⽤户创建系统账号的。
500~65535:普通⽤户UID。建⽴的普通⽤户UID从500开始,最⼤到65535。在7.x的系统版本中是由1000开始的。
这些⽤户⾜够使⽤了,但是如果不够也不⽤害怕,2.6x内核以后的Liux系统⽤户UID已经可以⽀持232个⽤户了。
4. GID
第四个字段就是⽤户的组ID (GID),也就是这个⽤户的初始组的标志号。这⾥需要解释⼀下初始组和附加组的概念。
所谓初始组,指⽤户⼀登录就⽴刻拥有这个⽤户组的相关权限,每个⽤户的初始组只能有⼀个,⼀般就是将和这个⽤户的⽤户名相同的组名作为这个⽤户的初始组。举例来说,我们⼿⼯添加⽤户lamp,在建⽴⽤户lamp的同时就会建⽴lamp组作为lamp⽤户的初始组。
所谓附加组,指⽤户可以加⼊多个其他的⽤户组,并拥有这些组的权限。每个⽤户只能有⼀个初始组,除初始组要把⽤户再加⼊其他的⽤户组外,这些⽤户组就是这个⽤户的附加组。附加组可以有多个,⽽且⽤户可以有这些附加组的权限。举例来说,刚刚的lamp⽤户除属于初始组1amp外,我⼜把它加⼊了users组,那么lamp⽤户同时属于lamp组、uses组,其中Lamp 是初始组,users 是附加组。当
然,初始组和附加组的⾝份是可以修改的,但是我们在⼯作中般不修改初始组,只修改附加组,因为修改了初始组有时会让管理员逻辑混乱。
注意:在ecpaswd⽂件的第四个字段中看到的ID是这个⽤户的初始组。
5. ⽤户说明
第五个字段是这个⽤户的简单说明,没有什么特殊作⽤,可以不写。
6. 家⽬录
第六个字段是这个⽤户的家⽬录,也就是⽤户登录后有操作权限的访问⽬录,我们把这个⽬录称为⽤户的家⽬录。超级⽤户的家⽬录
是/root⽬录,普通⽤户在home/⽬录下建⽴和⽤户名相同的⽬录作为家⽬录,如lamp⽤户的家⽬录就是/home/lamp/⽬录。
7. 登录之后的Shell
Shel就是Linux的命令解释器。管理员输⼊的密码都是ASCII码,也就是类似abcd的英⽂。但是系统可
以识别的编码是类似0101的机器语⾔。Shell的作⽤就是把ASCII编码的命令翻译成系统可以识别的机器语⾔,同时把系统的执⾏结果翻译为⽤户可以识别的ASCII编码。Linux的标注Shell就是/bin/bash。
在/etc/passwd ⽂件中,⼤家可以把这个字段理解为⽤户登录之后锁拥有的权限。如果写⼊的是Linux的标准Shell,/bin/bash就代表这个⽤户拥有权限范围内的所有权限。例如:
[root@localhost ~]# vim /etc/passwd
lamp:x:1000:1000::/home/lamp:/bin/bash
我⼿⼯添加了lamp⽤户,它的登录Shell是/bin/bash,那么这个⽤户就可以使⽤普通⽤户的所有权限。如果我把lamp⽤户的Shell修改
为/sbin/nologin,例如:
[root@localhost ~]# vim /etc/passwd
lamp:x:1000:1000::/home/lamp:/sbin/nologin
那么这个⽤户就不能登来了,因/sbin/nologin就是禁⽌登录的Shell。这样说明⽩了吗?如果我在这⾥放⼊的是⼀个系统命令,
如/usr/bin/passwd,例如:
[root@localhost ~]# vim /etc/passwd
lamp:x:1000:1000::/home/lamp:/usr/bin/passwd
那么这个⽤户可以登录,但是登录之后就只能修改⾃⼰的密码了。但是在这⾥不能随便写⼊和登录没有关系的命令,如Is, 否则系统不会识别这些命令,也就意味着这个⽤户不能登录。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。