如下几个文件和linux中的用户和组相关
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/etc/passwd中的内容形如
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
其格式如下:
username:password:UID:GID:GECOS:Home Directory:Shell
/etc/shadow中的内容形如
root:$1$RwETwzjv$ifht7L/HiLCPR8Zc935fd0:13675:0:99999:7:::
对比passwd文件和shadow文件,有两个疑问
1.为什么passwd中的存在password字段却存放密码?
2.为什么需要设计一个 shadow文件来存放密码,passwd文件不行吗?
参阅了一些资料,才知道,passwd中的password字段是历史遗留,现在的linux只用一个x来标识是否存在密码,由于passwd文件中存放了除了密码以外还有一些需要被所有用户都需要访问的信息,所有passwd文件对所有用户都是可读的,如果在passwd文件中存放密码,无论是明文还是密文,都是不安全的。任何用户都可以获得passwd文件的拷贝,并对其他用户的密码进行暴力破解(brute-force cracking ).于是设计了shadow文件,以hash的方式来存放用户密码,该文件只有root用户才有读写权限。
用户使用密码进入认证还好理解,group和gshadow有什么作用?难道说用户组也需要认证?
linux下有一个newgrp命令,可以让某个用户临时性的获得默个用户组的权限,此事需要使用用户组密码
$ newgrp finance
可以使用gpasswd密码来设置用户组密码
$ gpasswd finance
参考:
http://meinit.nl/a-group-password-in-linux
http://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlshadow.html




