用户组存在的原因主要还是方便分配权限。而用户本身和权限的差别不是很大,各个用户之间主要的不同是:是否拥有密码;home目录(普通用户可以有一个以自己用户名命名的home目录,存放的地址是/home/username,root用户的home目录是:/root);shell。
像nobody这样用来执行Nginx的工作进程的用户,一般不分配密码和shell,甚至连home目录都没有。为什么不分配密码?如果设置了密码,程序无法自动使用。由于不会有人使用这个用户登录系统,所以就没有必要分配shell。(备注:其实严格上说是有分配shell,只是分配的shell是/sbin/nologin这个特殊的shell,没有任何其他功能,主要功能是防止你登陆。)
所有用户都可以通过查看/etc/passwd查看。文件的每一行代表着一个用户,每一行由冒号“:”分割成7个字段,其结构如下:
UID:UID 0 root用户;UID 1~999 是占坑用户,即一写无法登录的用户(以前是系统是1~499,最近刚改);UID 1000 以上是正常的可登录用户。
GID:前面说了一个用户可以属于多个用户组,但这里只有一个,表示的是专职用户组,即一个用户只有一个专职用户组,其属于其他用户组的关联关系存储在/etc/group 文件中。
其中比较特殊的是密码字段,统一由x代替了,看/etc/passwd就知道一开始Linux是将密码存在这个文件里的,由于考虑到/etc/passwd可以被所有人查看,所以将统一存储到/etc/shadow文件(只有root权限可以访问)中。
其结构如下:
再来看看/etc/group文件,其结构如下:
正常的使用中很少会用到用户组密码,其存储在/etc/gshadow中。用户组文件比较特特殊的是“”用户组内的用户名”,其实就是这个组下的用户列表,每个用户之间用逗号“,”分割;本字段可以为空;如果字段为空表示用户组为GID的用户名普通用户的权限非常的低,就连在系统里安装软件的权限都没有,很多时候可以临时给普通用户以特权,就是sudo(在命令前添加sudo)。
最后来学习下常用的shell命令:
useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。语法 : useradd(选项)(参数)
上一个教程:Linux文件权限命令的软硬连接区别
下一个教程:这五个问题搞明白,Linux学习就会变简单?