ref:linux用户和组管理,/etc/passwd,/etc/shadow和/etc/group 文件内容解释

ref:https://www.cnblogs.com/xuha0/p/5519232.htmlhtml

与用户相关的系统配置文件主要有/etc/passwd 和/etc/shadow,其中/etc/shadow是用户资讯的加密文件,好比用户的密码口令的加密保存等;/etc/passwd 和/etc/shadow 文件是互补的;linux

/etc/passwd 是系统识别用户的一个文件,系统全部的用户都在这里有登陆记载;当咱们以beinan 这个帐号登陆时,系统首先会查阅 /etc/passwd
文件,看是否有beinan 这个帐号,而后肯定beinan的UID,经过UID 来确认用户和身份,若是存在则读取/etc/shadow影子文件中所对应的beinan的密码;若是密码核实无误则登陆系统,读取用户的配置文件;shell

1)/etc/passwd 的内容理解:
  在/etc/passwd 中,每一行都表示的是一个用户的信息;一行有7个段位;每一个段位用:号分割,例如:安全

   beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
   linuxsir:x:501:502::/home/linuxsir:/bin/bashbash

  第一字段:用户名(也被称为登陆名);在上面的例子中,咱们看到这两个用户的用户名分别是 beinan 和linuxsir;
  第二字段:口令;在例子中咱们看到的是一个x,其实密码已被映射到/etc/shadow 文件中
  第三字段:UID ;请参看本文的UID的解说;
  第四字段:GID;请参看本文的GID的解说;
  第五字段:用户名全称,这是可选的,能够不设置,在beinan这个用户中,用户的全称是beinan sun ;而linuxsir 这个用户是没有设置全称;
  第六字段:用户的家目录所在位置;beinan 这个用户是/home/beinan ,而linuxsir 这个用户是/home/linuxsir ;
  第七字段:用户所用SHELL 的类型,beinan和linuxsir 都用的是 bash ;因此设置为/bin/bash ;(用户使用的shell,若是换成/sbin/nologin/就是默认没有登陆环境的。)服务器

2)关于UID 的理解:
  UID 是用户的ID 值,在系统中每一个用户的UID的值是惟一的,更确切的说每一个用户都要对应一个惟一的UID,系统管理员应该确保这一规则。系统用户的UID的值从0开始,是一个正整数,至于最大值能够在/etc/login.defsm能够查到,通常Linux发行版约定为60000;
  UID 是确认用户权限的标识,用户登陆系统所处的角色是经过UID 来实现的,而非用户名,切记; 在Linux 中,root的UID是0,拥有系统最高权限;好比我在/etc/passwd 中把beinan的UID改成0后,你设想会发生什么呢?beinan这个用户会被确认为root用户。beinan这个账号能够进行全部root的操做;
  通常状况下,每一个Linux的发行版都会预留必定的UID和GID给系统虚拟用户占用,虚拟用户通常是系统安装时就有的,是为了完成系统任务所必须的用户,但虚拟用户是不能登陆系统的,好比ftp、nobody、adm、rpm、bin、shutdown等;预留数量以各个系统中/etc/login.defs中的 UID_MIN 的最小值为准;好比Fedora 系统 login.defs的UID_MIN是500,而UID_MAX值为60000,也就是说咱们经过adduser默认添加的用户的UID的值是500到60000之间;less

二、关于/etc/shadow ;
  1)/etc/shadow 概说;
  /etc/shadow文件是/etc/passwd 的影子文件,这个文件并不禁/etc/passwd而产生的,这两个文件是应该是对应互补的;shadow内容包括用户及被加密的密码以及其它/etc/passwd不能包括的信息,好比用户的有效期限等;这个文件只有root权限能够读取和操做,权限以下:-r——– 1 root root 1.5K 10月 16 09:49 /etc/shadow工具

  2)/etc/shadow 的内容分析;
  /etc/shadow 文件的内容包括9个段位,每一个段位之间用:号分割;咱们以以下的例子说明;ui

  beinan:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
  linuxsir:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:加密

  第一字段:用户名(也被称为登陆名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一块儿;这个字段是非空的;
  第二字段:密码(已被加密),若是是有些用户在这段是x,表示这个用户不能登陆到系统;这个字段是非空的;
  第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您能够经过passwd 来修改用户的密码,而后查看/etc/shadow中此字段的变化;
  第四字段:两次修改口令间隔最少的天数;若是设置为0,则禁用此功能;也就是说用户必须通过多少天才能修改其口令;此项功能用处不是太大;默认值是经过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
  第五字段:两次修改口令间隔最多的天数;这个能加强管理员管理用户口令的时效性,应该说在加强了系统的安全性;若是是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
  第六字段:提早多少天警告用户口令将过时;当用户登陆系统后,系统登陆程序提醒用户口令将要做废;若是是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
  第七字段:在口令过时以后多少天禁用此用户;此字段表示用户口令做废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登陆,也不会提示用户过时,是彻底禁用;
  第八字段:用户过时日期;此字段指定了用户做废的天数(从1970年的1月1日开始的天数),若是这个字段的值为空,账号永久可用;
  第九字段:保留字段,目前为空,以备未来Linux发展之用;
  若是更为详细的,请用 man shadow来查看帮助,您会获得更为详尽的资料;

2、关于用户组;
  具备某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件;
  一、/etc/group 解说;
       文件是用户组的配置文件,内容包括用户和用户组,而且能显示出用户是归属哪一个用户组或哪几个用户组,由于一个用户能够归属一个或多个不一样的用户组;同一用户组的用户之间具备类似的特征。

二、/etc/group 内容具体分析
  /etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每一个用户组一条记录;格式以下:
  group_name:passwd:GID:user_list
  在/etc/group 中的每条记录分四个字段:
  第一字段:用户组名称;
  第二字段:用户组密码;
  第三字段:GID
  第四字段:用户列表,每一个用户之间用,号分割;本字段能够为空;若是字段为空表示用户组为GID的用户名;
  咱们举个例子:
  root:x:0:root,linuxsir 注:用户组root,x是密码段,表示没有设置密码,GID是0,root用户组下包括root、linuxsir以及GID为0的其它用户(能够经过/etc/passwd查看)

二、关于GID ;
  GID和UID相似,是一个正整数或0,GID从0开始,GID为0的组让系统付予给root用户组;系统会预留一些较靠前的GID给系统虚拟
用户(也被称为假装用户)之用;查看系统添加用户组默认的GID范围应该查看 /etc/login.defs 中的 GID_MIN 和GID_MAX 值;
  咱们能够对照/etc/passwd和/etc/group 两个文件;咱们会发现有默认用户组之说;即当一个用属于多个组时会有一个默认的组;在建立目录和文件时,会使用默认的用户组;

三、/etc/gshadow 解说;
  /etc/gshadow是/etc/group的加密资讯文件,好比用户组(Group)管理密码就是存放在这个文件。/etc
/gshadow和/etc/group是互补的两个文件;对于大型服务器,针对不少用户和组,定制一些关系结构比较复杂的权限模型,设置用户组密码是极
有必要的。好比咱们不想让一些非用户组成员永久拥有用户组的权限和特性,这时咱们能够经过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用
到用户组密码;
  /etc/gshadow 格式以下,每一个用户组独占一行;
  groupname:password:admin,admin,…:member,member,…
  第一字段:用户组
  第二字段:用户组密码,这个段能够是空的或!,若是是空的或有!,表示没有密码;
  第三字段:用户组管理者,这个字段也可为空,若是有多个用户组管理者,用,号分割;
  第四字段:组成员,若是有多个成员,用,号分割;
  举例:
  beinan:!::linuxsir
   linuxsir:oUS/q7NH75RhQ::linuxsir
  第一字段:这个例子中,有两个用户组beinan用linuxsir
  第二字段:用户组的密码,beinan用户组无密码;linuxsir用户组有已经,已经加密;
  第三字段:用户组管理者,二者都为空;
  第四字段:beinan用户组所拥有的成员是linuxsir ,而后还要对照一下/etc/group和/etc/passwd
查看是否还有其它用户,通常默认添加的用户,有时同时也会建立用户组和用户名同名称; linuxsir 用户组有成员linuxisir ;
  如何设置用户组的密码? 咱们能够经过 gpasswd 来实现;不过通常的状况下,没有必要设置用户组的密码;不过本身实践一下也有必要;下面是一个为linuxsir用户组设置密码的例子;
  gpasswd 的用法: gpasswd 用户组

3、经过用户和用户组配置文件来查询或管理用户;
  一、用户和用户组查询的方法;
  1)经过查看用户(User)和用户组的配置文件的办法来查看用户信息
  咱们已经用户(User)和用户组(Group)的配置文件已经有个基本的了解,经过查看用户(User)和用户组的配置文件,咱们就能作到对系统用户的了解,固然您也能够经过id 或finger 等工具来进行用户的查询等任务。
  对于文件的查看,咱们能够经过 more 或cat 来查看,好比 more /etc/passwd 或cat /etc/passwd ;其它工具也同样,能对文本查看就行,好比less 也好
  好比咱们能够经过more 、cat 、less命令对/etc/passwd 的查看,虽然命令不一样,但达到的目的是同样的, 都是获得/etc/passwd 的内容;
  [root@localhost ~]# more /etc/passwd
   [root@localhost ~]# cat /etc/passwd
   [root@localhost ~]# less /etc/passwd
  2)经过id和finger 工具来获取用户信息;
  除了直接查看用户(User)和用户组(Group)配置文件的办法除外,咱们还有id和finger工具可用,咱们同样经过命令行的操做,来
完成对用户的查询;id和finger,是两个各有测重的工具,id工具更测重用户、用户所归属的用户组、UID 和GID 的查看;而finger
测重用户资讯的查询,好比用户名(登陆名)、电话、家目录、登陆SHELL类型、真实姓名、空闲时间等等;
  id 命令用法;
  id 选项 用户名
  好比:我想查询beinan和linuxsir 用户的UID、GID 以及归属用户组的状况:
  [root@localhost ~]# id beinan
   uid=500(beinan) gid=500(beinan) groups=500(beinan)  注:beinan的UID 是 500,默认用户组是beinan,默认用户组的GID 是500,归属于beinan用户组;  [root@localhost ~]# id linuxsir   uid=505(linuxsir) gid=502(linuxsir) groups=502(linuxsir),0(root),500(beinan)  注:linuxsir的UID 是505,默认用户组是linuxsir ,默认用户组的GID 是502,归属于linuxsir(GID为502)、root(GID为0),beinan(GID为500);  关于id的详细用法,我会在专门用户查询的文章来介绍;您能够经过man id 来查看用法,用起来仍是比较简单的;    若是finger 不加任何参数和用户,会显示出当前在线用户,和w命令相似;对比一下;不过各有测重;  [root@localhost ~]# w   14:02:42 up 1:03, 3 users, load average: 0.04, 0.15, 0.18   USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT   linuxsir tty1 - 13:39 22:51 0.01s 0.01s -bash   beinan tty2 - 13:53 8:48 11.62s 0.00s /bin/sh /usr/X1

相关文章
相关标签/搜索