在Ubuntu系统中,/etc目录下,有三个文件:passwd shadow group,可能我们已经在用了,但是没有注意到其详细。

这三个配置文件用于系统帐号管理,都是文本文件,可用vi等文本编辑器打开。/etc/passwd用于存放用户帐号信息,/etc/shadow 用于存放每个用户加密的密码,/etc/group用于存放用户的组信息。

1. /etc/passwd

/etc/passwd文件的内容如下:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4::sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
...

每一行是由分号分隔的字串组成,它的格式如下:

username:password:uid:gid:gecos:homedir:shell
各域对应的中文说明如下:
用户名:密码:用户ID:组ID:用户全名:主目录:登录shell
gecos是通用电子计算机操作系统的缩写,是Bell实验室中的一台大型主机。

Unix系统最初是用明文保存密码的,后来由于安全的考虑,采用crypt()算法加密密码并存放在/etc/passwd文件。现在,由 于计算机处理能力的提高,使密码破解变得越来越容易。/etc/passwd文件是所有合法用户都可访问的,大家都可互相看到密码的加密字符串,这给系统 带来很大的安全威胁。现代的Unix系统使用影子密码系统,它把密码从/etc/pa sswd文件中分离出来,真正的密码保存在/etc/shadow文件中,shadow文件只能由超级用户访问。这样入侵者就不能获得加密密码串,用于破 解。使用shadow密码文件后,/etc/passwd文件中所有帐户的password域的内容为"x",如果password域的内容为"*",则 该帐号被停用。使用passwd这个程序可修改用户的密。

2. /etc/shadow

/etc/shadow存放加密的口令,该文件只能由root读取和修改。下面是shadow文件的内容:

root:$1$43ZR5j08$kuduq1uH36ihQuiqUGi/E9::0::7:::
daemon:*::0::7:::
bin:*::0::7:::
sys:*::0::7:::
sync:*::0::7:::
...

我们可用chage命令显示test用户的帐号信息:
debian:~# chage -l test
最小: 0
最大:
警告日: 7
失效日: -1
最后修改: 7月 09 2005
密码过期: 从不
密码失效: 从不
帐户过期: 从不

/etc/shadow文件的格式如下:

username:password:last_change:min_change:max_change:warm:failed_expire:expiration:reserved
各字段的简要说明:
last_change:表示自从Linux使用以来,口令被修改的天数。可用chage -d命令修改。
min_change:表示口令的最小修改间隔。可用chage -m命令修改。
max_change:

它的格式如下:

groupname:password:gid:members

这里的password代表组口令,很少用到。它可使原先不在这个群组中的用户可以通过newgrp命令暂时继承该组的权限,使用 newgrp命令时会新开一个shell。口令的加密方式和passwd文件中的口令一样,所以如果需设置组口令,要用passwd程序虚设一个用户,再 把该用户password节中的加密口令拷贝到/etc/group文件中。members列代表组成员,我们可把需加入该组的用户以逗号分隔添加到这里 即可。同一组的成员可继承该组所拥有的权限。

这样,用户帐户本身在 /etc/passwd 中定义。Linux 系统包含一个 /etc/passwd 的同伴文件,叫做 /etc/shadow。该文件不像 /etc/passwd,只有对于 root 用户来说是可读的,并且包含加密的密码信息。我们来看一看 /etc/shadow 的一个样本行:

CODE:
drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

每一行给一个特殊帐户定义密码信息,同样的,每个字段用 : 隔开。第一个字段定义与这个 shadow 条目相关联的特殊用户帐户。第二个字段包含一个加密的密码。其余的字段在下表中描述:

字段 3 自 1/1/1970 起,密码被修改的天数 
字段 4 密码将被允许修改之前的天数(0 表示“可在任何时间修改”) 
字段 5 系统将强制用户修改为新密码之前的天数(1 表示“永远都不能修改”) 
字段 6 密码过期之前,用户将被警告过期的天数(-1 表示“没有警告”) 
字段 7 密码过期之后,系统自动禁用帐户的天数(-1 表示“永远不会禁用”) 
字段 8 该帐户被禁用的天数(-1 表示“该帐户被启用”) 
字段 9 保留供将来使用

shadow 是 passwd 的影子文件。
在linux中,口令文件在/etc/passwd中,早期的这个文件直接存放加密后的密码,前两位是"盐"值,是一个随机数,后面跟的是加密的密码。为了安全,现在的linux都提供了 /etc/shadow这个影子文件,密码放在这个文件里面,并且是只有root可读的。
/etc/passwd文件的每个条目有7个域,分别是名字:密码:用户id:组id:用户信息:主目录:shell
例如:ynguo:x:509:510::/home/ynguo:/bin/bash
在利用了shadow文件的情况下,密码用一个x表示,普通用户看不到任何密码信息。影子口令文件保存加密的口令;/etc/passwd文件中的密码全部变成x。Shadow只能是root可读,从而保证了安全。
/etc/shadow文件每一行的格式如下:用户名:加密口令:上一次修改的时间(从1970年1月1日起的天数):口令在两次修改间的最小天数:口令修改之前向用户发出警告的天数:口令终止后账号被禁用的天数:从1970年1月1日起账号被禁用的天数:保留域。
例如:root:$1$t4sFPHBq$JXgSGgvkgBDD/D7FVVBBm0:11037:0:99999:7:-1:-1:1075498172

3. /etc/group

/etc/group 文件是用户组的配置文件内容包括用户和用户组并且能显示出用户是归属哪个用户组或哪几个用户组因为一个用户可以归属一个或多个不同的用户组;同一用 户组的用户之间具有相似的特征。比如我们把某一用户加入到root用户组那么这个用户就可以浏览root用户家目录的文件如果root用户把某个文件 的读写执行权限开放root用户组的所有用户都可以修改此文件如果是可执行的文件(比如脚本)root用户组的用户也是可以执行的; 用户组的特性在系统管理中为系统管理员提供了极大的方便但安全性也是值得关注的如某个用户下有对系统管理有最重要的内容最好让用户拥有独立的用户 组或者是把用户下的文件的权限设置为完全私有;另外root用户组一般不要轻易把普通用户加入进去.

/etc/group 内容具体分析
/etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User)每个用户组一条记录;格式如下:

group_name:passwd:GID:user_list

在/etc/group 中的每条记录分四个字段:
第一字段:用户组名称;
第二字段:用户组密码;
第三字段:GID
第四字段:用户列表每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名; 我们举个例子:

root:x:0:root,linuxsir 注:用户组rootx是密码段表示没有设置密码GID是0,root用户组下包括root、linuxsir以及GID为0的其它用户(可以通过/etc/passwd查看);
beinan:x:500:linuxsir 注:用户组beinanx是密码段表示没有设置密码GID是500,beinan用户组下包括linuxsir用户及GID为500的用户(可以通过/etc/passwd查看);
linuxsir:x:502:linuxsir 注:用户组linuxsirx是密码段表示没有设置密码GID是502,linuxsir用户组下包用户linuxsir及GID为502的用户(可以通过/etc/passwd查看);
helloer:x:503:   注:用户组helloerx是密码段表示没有设置密码GID是503,helloer用户组下包括GID为503的用户可以通过/etc/passwd查看;

而/etc/passwd 对应的相关的记录为:

root:x:0:0:root:/root:/bin/bash
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash
helloer:x:502:503::/home/helloer:/bin/bash

由此可以看出helloer用户组包括 helloer用户;所以我们查看一个用户组所拥有的用户可以通过对比/etc/passwd和/etc/group来得到;

关于GID ;
GID和UID类似是一个正整数或0GID从0开始GID为0的组让系统付予给root用户组;系统会预留一些较靠前的GID给系统虚拟用户(也被 称为伪装用户)之用;每个系统预留的GID都有所不同比如Fedora 预留了500个我们添加新用户组时用户组是从500开始的;而Slackware 是把前100个GID预留新添加的用户组是从100开始;查看系统添加用户组默认的GID范围应该查看 /etc/login.defs 中的 GID_MIN 和GID_MAX 值; 我们可以对照/etc/passwd和/etc/group 两个文件;我们会发现有默认用户组之说;我们在 /etc/passwd 中的每条用户记录会发现用户默认的GID ;在/etc/group我们也会发现每个用户组下有多少个用户;在创建目录和文件会使用默认的用户组;我们还是举个例子; 比如我把linuxsir 加为root用户组在/etc/passwd 和/etc/group 中的记录相关记录为:
linuxsir用户在 /etc/passwd 中的记录;我们在这条记录中看到linuxsir用户默认的GID为502;而502的GID 在/etc/group中查到是linuxsir用户组;

linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash

linuxsir 用户在 /etc/group 中的相关记录;在这里我们看到linuxsir用户组的GID 为502而linuxsir 用户归属为root、beinan用户组;

root:x:0:root,linuxsir
beinan:x:500:linuxsir
linuxsir:x:502:linuxsir

我们用linuxsir 来创建一个目录以观察linuxsir用户创建目录的权限归属;

[linuxsir@localhost ~]$ mkdir testdir
[linuxsir@localhost ~]$ ls -lh
总用量 4.0K
drwxrwxr-x  2 linuxsir linuxsir 4.0K 10月 17 11:42 testdir

通过我们用linuxsir 来创建目录时发现testdir的权限归属仍然是linuxsir用户和linuxsir用户组的;而没有归属root和beinan用户组明白了吧; 但值得注意的是判断用户的访问权限时默认的GID 并不是最重要的只要一个目录让同组用户可以访问的权限那么同组用户就可以拥有该目录的访问权在这时用户的默认GID 并不是最重要的;

4. /etc/gshadow

/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 用户组

root@localhost ~]# gpasswdlinuxsir

正在修改 linuxsir 组的密码
新密码:
请重新输入新密码:

 newgrp

用户组之间的切换,应该用 newgrp ,这个有点象用户之间切换的su ;我先举个例子:

[beinan@localhost ~]$ newgrp linuxsir
密码:
[beinan@localhost ~]$ mkdir lingroup
[beinan@localhost ~]$ ls -ld lingroup/
drwxr-xr-x  2 beinan linuxsir 4096 10月 18 15:56lingroup/
[beinan@localhost ~]$ newgrp beinan
[beinan@localhost ~]$ mkdir beinangrouptest
[beinan@localhost ~]$ ls -ld beinangrouptest
drwxrwxr-x  2 beinan beinan 4096 10月 18 15:56beinangrouptest

说明:我是以beinan用户组切换到linuxsir用户组,并且建了一个目录,然后再切换回beinan用户组,又建了一个目录,请观察两个目录属用户组的不同;还是自己体会吧;

转载请注明出处:http://www.cnblogs.com/haochuang/ 8年IT工作经验,5年测试技术与管理,2年产品与项目管理,曾参与过云计算\云存储\车联网产品研发工作; 业余自媒体人,有技术类垂直微信公众号;如有招聘或求职方面需求,请Mail to uetest@qq.com ;或通过 QQ:363573922 微博:@念槐聚 联系;

关于Ubuntu中passwd、shadow、group等文件相关推荐

  1. linux共享文件可读写,在Ubuntu中设置samba共享可读写文件夹

    在Ubuntu中设置samba共享可读写文件夹 发布时间:2007-03-15 01:01:08来源:红联作者:XLooking 首先当然是要安装samba了,呵呵: sudo apt-get ins ...

  2. ubuntu中由apt-get获得的文件包保存在哪里?

    ubuntu中由apt-get获得的文件包保存在/var/cache/apt/archives:通过apt-get命令下载的软件包,放在/var/cache/apt/archives 目录下: 下载文 ...

  3. Ubuntu中恢复rm命令误删文件

    环境 :ubuntu16.04 extundelete介绍 extundelete是一个实用程序,可以从ext 3或ext 4分区恢复已删除的文件.ext 3和ext 4文件系统是Linux发行版(如 ...

  4. linux ./ 执行run文件,如何在Ubuntu中执行.bin和.run文件

    在解释如何在Ubuntu上执行.bin和.run文件之前,让我们首先定义这些文件扩展名到底是什么: Bin档:Ubuntu中的Binary或BIN文件指的是安装软件包,其中大多数是self-extra ...

  5. Ubuntu中给手机安装apk文件

    前言 好记性不如烂笔头,好多手写在笔记本上的知识点.技巧都因为记录载体的丢失而丢失了,(来回搬家,东西不好带),用网络做一个备份应该会比较合适,这个系列挺多挺杂的,好多都是不知道什么时候从哪个地方摘抄 ...

  6. linux中编辑pdf文件,如何在Ubuntu中创建和编辑PDF文件

    在打印,共享和通过电子邮件发送文档(尤其是大型文档)时,PDF或可移植文档格式通常是我们的首选.对于Windows和MacOS,您可能非常熟悉,也依赖于广泛使用的Acrobat产品来进行pdf创建,查 ...

  7. ubuntu中非常好用的文件比较工具meld

    ubuntu中非常好用的文件比较工具meld 类似于windows中的beyondcompare,非常好用,安装好之后,直接在命令行写meld即可

  8. 16.linux用户和组详解演练,useradd,usermod,chage,userdel,id,su,groups,passwd,shadow,group,gshadow等命令和文件

    前言 本小节会详细介绍用户和组的关系,UID和GID,初始组和附加组,同时详细介绍groups,passwd,shadow,group,gshadow,login.defs,useradd 等文件含义 ...

  9. 【Linux】用户配置文件(passwd shadow | group gshadow)

    摘要 本文将讨论 Linux 用户管理中涉及的四个配置文件. 引言 这四个文件是用户管理的核心,系统中用户和用户组的任何操作,最终的落脚点就是这四个文件.这四个文件可以分为两组,第一组文件中存放着用户 ...

最新文章

  1. 8月第3周回顾:四巨头发三大新闻 一报告引多家争议
  2. 《深入浅出Google Android》即将隆重上市!
  3. 验证码实现(随机背景色及字体颜色,带扰乱线条)
  4. Spring @EventListener 异步中使用condition的问题
  5. Hadoop hdfs 获取文件列表代码示例
  6. BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞
  7. 显示计算机硬盘驱动器更改,计算机更换硬盘驱动器后蓝屏发生了什么
  8. 数据产品经理进阶之路
  9. [Unity] ACT 战斗系统学习 7:使用 ScriptableObject 制作角色属性 2
  10. Poj 1755Triathlon 未Ac,先mark
  11. struts2教程_Struts 2教程– Struts2教程
  12. 轻量级java开发工具_C++主流开发工具推荐
  13. PS教您与粗壮的胳膊拜拜
  14. 应用程序热补丁(二):自动生成热补丁
  15. 一个模仿Struct的Action类
  16. Java Swing 如何让界面更加美观
  17. Thinksystem ST550安装windows2008R2
  18. PyTorch中文教程 | (11) 聊天机器人教程
  19. 通过css布局实现去掉window.print()打印界面的页眉页脚
  20. React Native入门——布局实践:开发京东客户端首页

热门文章

  1. IDEA 不提示报错 和有波浪线
  2. android怎么增量编译,Android Transform增量编译
  3. win10禁用计算机维护,win10哪些服务可以禁用 服务哪些可以禁止启动
  4. python mysql捕获异常_python mysql无法捕获异常
  5. ocr 超时小票识别_票总管-发票识别核验利器
  6. matlab network_无所不能的 MATLAB
  7. python类的构造方法名称_Python的面向对象、Class 概念与使用
  8. c语言二维数组每行最小值,编写一个函数,用于计算具有n行和m列的二维数组中指定列的平均值以及数组各行的和的最小值。...
  9. .desktop 桌面快捷_Ubuntu 桌面手动添加应用快捷方式
  10. 北京大学生物信息学(8)