当一个用户被创建的时候会调用login.defs与default/useradd配置文件,再将创建好的用户信息写入到passwd与shadow中
一、/etc/passwd 保存用户信息
- 1.文件的内容非常规律,每行代表一个用户
- 2.这些用户中的绝大多数是系统或服务正常运行所必需的用户
- 3.系统用户是不能登录系统的,但是这些用户同样也不能被删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
用户名称:密码标志:UID:用户的组ID(GID):用户说明:
- 用户名称
第一个字段中保存的是用户名称。不过大家需要注意,用户名称只是为了方便管理员记忆,Linux 系统是通过用户 ID (UID) 来区分不同用户、分配用户权限的。而用户名称和 UID 的对应正是通过 /etc/passwd 这个文件来定义的。 - 密码标志
这里的"x"代表的是密码标志,只有一个"x"代表用户是拥有密码的,而不是真正的密码,真正的密码是保存在 /etc/shadow 文件中的。
如果删除了密码标志"x",那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(当然只能在使用无密码登录,远程是不可以的) - UID
0:超级用户 UID。1-999系统用户(伪用户)UID,1000-65535普通用户 - GID
- 组 ID(GID)也就是这个用户的初始组的标志号
- 所谓初始组,指用户一登陆录就立刻拥有这个用户组的相关权限。每个用户的初始组只能有一个,一般就是将和这个用户的用户名相同的组名作为这个用户的初始组。举例来说,我们手工添加用户hyf,在建立用户 hyf 的同时就会建立 hyf 组作为 hyf用户的初始组。
- 所谓附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组要把用户再加入其他的用户组外,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。举例来说,刚刚的 hyf用户除属于初始组 hyf外,我又把它加入了 users 组,那么 hyf用户同时属于 hyf组、users 组,其中 hyf是初始组,users 是附加组。
- 用户说明
第五个字段是这个用户的简单说明,没有什么特殊作用,可以不写。 - 家目录
第六个字段是这个用户的家目录,也就是用户登录后有操作权限的访问目录,我们把这个目录称为用户的家目录。 - 登录之后的Shell
Linux 的标准 Shell 就是 /bin/bash
我手工添加了 hyf用户,它的登录 Shell 是 /bin/bash,那么这个用户就可以使用普通用户的所有权限。
如果我把 hyf用户的 Shell 修改为 /sbin/nologin,例如:hyf:1000:1000:hyf:/home/hyf:/sbin/nologin那么这个用户就不能登录了,因为 /sbin/nologin 就是禁止登录的 Shell
二、/etc/shadow 保存用户密码
root:$6$NPTs0R1H$Xgl8Nl8tIOEePe/GrXRGvf9.pBWip8HQ/Vr/:18061:0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::
adm:*:17632:0:99999:7:::
以":"作为分隔,可分成9位,每个代表含义为:
- 帐号名称
- 密码:
- 这个才是真正的密码
- 需要特别留意的是, 虽然这些加密过的密码很难被解出来,但是‘很难’不等于‘不会’,所以只有 root 才可以读写
- 你得随时注意,不要不小心更动了这个档案的属性
- 如果是在密码栏的第一个字元为‘ * ’或者是‘ ! ’,表示这个帐号并不会被用来登入的意思。 所以万一哪一天你的某个使用者不乖时,可以先在这个档案中,将他的密码栏位的最前面多加一个 * !他就无法使用该帐号
- 最近更动密码的日期:
- 这个栏位记录了‘更动密码的那一天’的日期
- 这个是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1
- 密码不可被更动的天数:
- 记录了这个帐号的密码需要经过几天才可以被变更
- 如果是 0 的话, 表示密码随时可以更动的意思。如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码
- 密码需要重新变更的天数:
- 你必须要在这个时间之内重新设定你的密码,否则这个帐号将会暂时失效。
- 而如果像上面的 99999 的话,那就表示密码不需要重新输入
- 密码需要变更期限前的警告期限:
- 当帐号的密码失效期限快要到的时候, 就是上面那个‘必须变更密码’的那个时间时, 系统会依据这个栏位的设定,发出‘警告’言论给这个帐号,提醒他‘再过 n 天你的密码就要失效了,请尽快重新设定你的密码
- 密码过期的恕限时间:
- 如果用户过了警告期限没有重新输入密码, 使得密码失效了,也就是说,你在‘必须变更密码的期限前,并没有变更你的密码!’ 那么该组密码就称为‘失效的密码
- 当密码失效后,你还可以用这个密码在 n 天内进行登入的意思。 而如果在这个天数后还是没有变更密码,呵呵!那么您的帐号就失效了!无法登入!
- 帐号失效日期:
- 这个日期跟第三个栏位一样,都是使用 1970 年以来的总日数设定。这个栏位表示: 这个帐号在此栏位规定的日期之后,将无法再使用。 这个栏位会被使用通常应该是在‘收费服务’的系统中, 你可以规定一个日期让该帐号不能再使用啦!
- 保留:最后一个栏位是保留的,看以后有没有新功能加入。
- 常常听到:我的密码忘记或者被更动了?怎么办?
- 有的时候会发生这样的情况,就是说,你的 root 密码忘记了!要怎么办?重新安装吗?另外, 有的时候是被入侵了, root 的密码被更动过,该如何是好?
- 这个时候就必须要使用到 /etc/shadow 这个资料了!我们刚刚知道密码是存在这个档案中的, 所以只要你能够以各种可行的方法开机进入 Linux ,例如单人维护模式,或者是以 live CD (KNOPPIX) 来进入 Linux 系统。之后,将硬碟顺利挂载,然后进入 /etc/shadow 这个档案中,将 root 的密码这一栏全部清空!然后再登入 Linux 一次,这个时候 root 将不需要密码 (有的时候需要输入空白字元) 就可以登入了!这个时候请赶快以 passwd 设定 root 密码即可。
三、/etc/group 保存组信息
- 用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件。
- 将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不 同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
组名:口令:组标识号:组内用户列表
组名:
- 组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
口令:
- 口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
组标识号:
- 组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.
组内用户列表:
- 是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
- 我们以root: x :0:root,linuxsir 为例: 用户组root,x是密码段,表示没有设置密码,GID是0,root用户组下包括root、linuxsir以及GID为0的其它用户。
四、/etc/login.defs 用户属性限制,密码过期时间,密码最大长度等限制(创建用户时候需要用到的文件)
- 该文件里的配置对root用户无效。
- /etc/shadow的配置优先级高于/etc/login.defs
MAIL_DIR /var/spool/mail
#创建用户时,要在目录/var/spool/mail中创建一个用户mail文件
PASS_MAX_DAYS
#密码最大有效期
PASS_MIN_DAYS
#两次修改密码的最小间隔时间
PASS_MIN_LEN
#密码最小长度,对于root无效
PASS_WARN_AGE
#密码过期前多少天开始提示
UID_MIN 500
#用户ID的最小值
UID_MAX 60000
#用户ID的最大值
GID_MIN 500
#组ID的最小值
GID_MAX 60000
#组ID的最大值
USERDEL_CMD /usr/sbin/userdel_local
#当删除用户的时候执行的脚本
CREATE_HOME yes
#使用useradd的时候是够创建用户目录
USERGROUPS_ENAB yes
#用MD5加密密码
五、/etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
1、GROUP=100 表示用户组id
2、HOME=/home 把用户的家路径健在/home中
3、INACTIVE=-1 是否启用账户过期停权,-1表示生存时间无限
4、EXPIRE= 账号是否启用过期设置,不设置表示不启用
5、SHELL=/bin/bash 新用户默认所用的shell类型
6、SKEL=/etc/skel 表示账号使用默认文件内容,可以理解为添加用户的目录默认文件存放位置。
也就是说,当用户用useradd添加用户时,用户主目录下的文件都是从这个目录中复制的
7、CREATE_MAIL_SPOOL=yes 表示是否创建邮箱缓存