访问手机版  

招聘|合作 登陆|注册

网络工程师培训

当前位置:网络工程师 > 技术课程 > linux > 热点关注 > linux就该这么学

Linux学习之用户和用户组

时间:2018-06-14

越来越多的人在使用电脑的时候选择Linux系统。经常用的人们会发现,Linux的用户只有两个等级:root和非root。Linux还有一部分其他的用户:apache、mysql、nobody、ftp等,这些也都是非root用户,即普通用户。Linux的权限实际是上不同用户所能访问的文件的不同产生的假象。而这些假象的造成,还要涉及到另外一个概念——用户组。一个用户至少要属于一个用户组;一个用户可以属于多个用户组。
用户组存在的原因主要还是方便分配权限。而用户本身和权限的差别不是很大,各个用户之间主要的不同是:是否拥有密码;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(选项)(参数)