先来看看 /etc/passwd文件的内容。
[[email protected] ~]# cat /etc/passwd | head
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
扩展:
head命令用来查看文件内容的前多少行或多少字节的内容。
命令用法
-c 用来获取前多少字节的内容,还可加上单位,默认是字节。1(byte) 、1k(1KB)、1m(1MB)
-n用于获取前多少行
-q 获取多个文件的时候不显示文件头部
-v 获取多个文件的内容是显示头部,也是默认选项
http://blog.sina.com.cn/s/blog_167f23bf50102x8ql.html (详细链接)
head前面的“|”叫做管道符,它的作用是把前面命令的输出再输入给后面的命令。(管道符常用,需熟记)
/etc/passwd解说
/etc/passwd由“:”分割成 7 个字段,每个字段的具体含义是:
(1)用户名(如第一行中的root就是用户名),代表用户账号的字符串。用户名字符可以是大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位为点时,另外减号也不建议使用,因为容易造成混淆。
(2)第二个字段存放的是该账号的口令,这是为什么显示是“x”呢?早期的Unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到“/etc/shadow”中了,在这里只用一个“x”代替。
(3)这个数代表用户标识号,也叫作uid。系统识别用户身份就是通过这个数字来的,0就是root,也就是说我们可以修改test用户的uid为0,那么系统会认为test和root为同一个账户。uid的取值范围是0~65535(但实际上已经可以支持到4294967294),0是超级用户root的标识号,1~499由系统保留,作为管理账号,普通用户的标识号从500开始,如果我们自定义建立一个普通用户,你会看到该账号的标识号是大于或等于500的。
(4)表示组标识号,也叫作gid。这个字段对应着/etc/group中的一条记录,其实/etc/group和/etc/passwd基本上类似。
(5)注释说明,该字段没有实际意义。通常记录该用户的一些属性,例如姓名、电话、地址等等。不过,当你使用finger(finger用来显示用户名、用户全名、终端设备号和登录时间等信息)的功能时就会显示这些信息的。
(6)用户的家目录,当用户登录时就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,用户家目录是可以自定义的。比如,建立一个普通用户test1,要想让test1的家目录在/data目录下,只要修改/etc/passwd文件中对应该用户那行中的文本字段为/data即可。
(7)用户的shell。用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有很多种sh、csh、ksh、tcsh、bash等。而Redhat/ContOS的shell就是bash.查看/etc/passwd文件,该字段除了/bin/bash外还有/sbin/nologin比较多,他表示不允许该账号登录,那么就可以把该字段改成/sbin/nologin
默认是/bin/bash。