📑打牌 : da pai ge的个人主页
🌤️个人专栏 : da pai ge的博客专栏
☁️宝剑锋从磨砺出,梅花香自苦寒来
☁️运维工程师的职责:监控,备份,应急故障处理
目录
用户相关配置文件:
/etc/passwd:编辑
/etc/shadow:
/etc/group:编辑
/etc/gshadow
/etc/login.defs:
/etc/default/useradd:
/etc/skel/:
在 Linux 系统中各种会存在着多个用户。我们的使用者靠用户名来区分各自登陆的账
号。
如果我们的用户想要使用系统资源,就必须在系统中拥有合法的账号。在系统多个文
件中都保存了用户身份相关信息。
用户相关配置文件:
-
/etc/passwd:
在/etc/passwd 文件中用:当做分隔符,一共有 7 列。每列的内容分别是: 第一列:用户名
第二列:密码占位符(真正的密码文件在/etc/shadow)。
第三列:用户 ID(UID)
在用户 ID 中 0 是超级用户的 ID,只要 UID 是 0 就是超级用户。
在用户 ID 中 1-999 是系统用户的范围,作用是系统服务或命令在运行时会对这些账号进行调用。为保留给服务使用的账号 UID(nfsnobody 是个例外,默认安装后的 uid 为65534。是 NFS 服务的匿名访问用户的本地用户 UID)
在用户 ID 中 1000-65535 是普通用户使用,当创建一个新用户时 UID 从 1000 开始,最大到 60000。2.6.x 内核(uname -r 查看内核版本)以后的 Linux 系统 UID 可以支持 2^32 的 UID 了(修改最大 UID 范围/etc/login.defs)。
第四列:初始组 ID(GID)
为更加灵活的管理用户的权限,Linux 里还采用用户组的概念。有效组(附加组)与初始组:
在/etc/passwd 里边
第四列是 GID。这个 GID 就是初始用户组。
创建用户时如果不指定用户的初始组,则会自动创建和用户名相同的组,初始组只能 有一个。
也就是说用户登陆系统,立刻就拥有初始组的相关权限/身份。
第五列:用户描述信息(类似于“注释”,现在已经不常用)。
第六列:用户家目录
第七列:用户的 shell 类型:
用户会取得一个 shell 与系统的内核通信以进行用户的操作任务。
/bin/bash:shell 类型为 bash,bash shell 是最常用的一种 shell(能正常登陆系统)。
/sbin/nologin:不能登陆系统,可以使用系统资源。
-
/etc/shadow:
第一列:用户名。
第二列:经过加密编码的密码,$6$开头的表明是使用 SHA-512 加密。
如果密码位是“!!”或“*”代表没有密码,不能登录(我们也可以在第二列用户的密码 前面加入一个“!”或“*”,加入后都不能登录)(新建用户时,如果不设置密码,那么 第二列为“!!”)
第三列:密码最近更改时间
此段记录了改动密码的日期,日期是由 1970 年 1 月 1 日作为标准时间来计算的。时间戳转日期:
日期转时间戳:(86400 为每一天的秒数)
第四列:密码不可被更改的天数(与第三列相比)
第四列记录了这个账号的密码在最近一次修改过之后需要经过几天才可以再次修改。 如果是 0 的话,表示密码随时可以被修改。
如果设置为 5 的话,那么当你设置过密码后,需要等 5 天之后才能更改密码。第五列:密码最长有效期(与第三列相比)
为了强制用户更改密码,这个字段可以指定密码的最长有效期。 用户必须在有效期内重设密码才行。
必须在期限时间内重设密码,否则这个账号的密码会变为过期特性。 而默认的 99999(273 年)表示为 近似永久。
第六列:密码到期前的警告天数(与第五字段相比)
当账号的密码有效期快到的时候,系统会依据这个字段的设置发出“警告”给这个账 号,提醒他过 N 天后你的密码即将过期。
第七列:密码过期后的宽限天数(密码失效日,与第五字段相比)
密码过期后预留几天给账户修改密码,此时已无法使用旧密码登陆系统。 如果写入 0,那么代表密码过去就马上失效。
如果写入 5,那么代表密码会在 5 天后失效。
如果写入-1,那么代表密码永远不会失效。第八列:账号失效日期
这里同样要写时间戳,用 1970 年 1 月 1 日进行时间换算,如果超过了失效时间,用户也就失效无法使用了。
第九列:保留。
-
/etc/group:
第一列:组名称(默认组成员)。第二列:组密码占位符。
第三列:组 ID 号(GID) 第四列:组内成员列表
所以把用户添加到组内的方式有两种,一种临时,一种永久。
临时:root 用户设置组密码,把密码告知即将加入组的用户。用户使用组密码,通过newgrp 命令切换到组内。但这种方式在重新登录之后,就会失效。
永久:写入/etc/group 的方式。使用 root 用户给组添加管理员(gpasswd -A 管理员组名)然后使用组管理员用户,将用户添加到组内(gpasswd -a 用户名 组名)。这种添加后,会在/etc/group 信息中最后一列进行记录。重新登录不会失效。并且在添加之后, 用户切换的时候不用输入密码。
有效用户组与初始用户组:在/etc/passwd 文件中第四列是用户初始组 ID。也就是说用户登陆系统,立刻就拥有这个用户组的相关权限。有效组是后续添加的组。用 groups 命令来查看当前的初始组和有效组。newgrp 组名的格式用来切换当前的有效组。
-
/etc/gshadow
- :
第一列:组名称
第二列:经过加密的组密码,这个段可以为空或!,如果是空或!表示没有密码。 第三列:用户管理员,这个字段也可以为空,如果有多个用户组管理者,用,分隔。 第四列:组成员,如果有多个成员,用,分隔。
通过 gpasswd 组名的方式来为组设置密码(需要 root 用户设置)。组密码的作用:用户可以通过输入组密码的方式临时切换到组中,获取相应的组权限。如果没有设置组密码, 则只有永久加入的组内成员才能够切换组身份。
通过 gpasswd -A 账户名 组名 来为组添加管理员(拥有添加或移除组员的权限,只有root 有权限添加管理员,即使是默认初始组,也没有组管理员权限)。
通过 gpasswd -a/-d 用户名 组名 来添加/移除组成员
-
/etc/login.defs:
#当用户创建时,同时在目录/var/spool/mail 中创建一个用户 mail 文件
#指定密码保持有效最大天数。#表示修改密码的间隔时间。
#指定密码的最小长度。
#表示密码到期前多少天系统提示用户密码到期。#指定 UID 最小为 1000,也就是说创建新用户时用户的 UID 从 1000 开始。#指定最大 UID 为 60000。
#系统用户最小 201
#系统用户最大 999 #最小 GID 为 1000。
#最大 GID 为 60000。#系统组 ID 最小 201
#系统组 ID 最大 999
#指定是否创建用户家目录,yes 为创建,no 表示不创建。#创建用户时默认创建用户家目录。
#创建用户家目录权限默认掩码值。#表示 userdel 删除用户时,如果该用户初始组没有成员存在,则会删除组。
#使用 SHA512 加密方式。
-
/etc/default/useradd:
#创建用户的默认文件
#新创建用户时默认初始组的 GID 号(公共组),现在使用的都是私有组机制(根据创建用户名称创建组)
#/home 表示用户家目录的位置
#表示是否启用账号过期禁用,-1 表示不启用。#表示账号过期,不设置表示不启用。
#指定了新建用户的默认 shell 类型。
#指定用户家目录中默认文件的来源,新建用户家目录下的文件都是从这个目录中复制的。 #表示是否创建邮箱缓存 yes 表示创建
-
/etc/skel/:
在创建新用户后,会在新用户家目录下看到类似.bash_profile .bashrc .bash_logout
touch /etc/skel/ccc
useradd hf01
ls -a /home/hf01
等文件。/etc/skel 目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel 目录下的内容就可以改变新建用户默认主目录的配置文件信息。
-
第一列:组名称
第二列:经过加密的组密码,这个段可以为空或!,如果是空或!表示没有密码。 第三列:用户管理员,这个字段也可以为空,如果有多个用户组管理者,用,分隔。 第四列:组成员,如果有多个成员,用,分隔。
通过 gpasswd 组名的方式来为组设置密码(需要 root 用户设置)。组密码的作用:用户可以通过输入组密码的方式临时切换到组中,获取相应的组权限。如果没有设置组密码, 则只有永久加入的组内成员才能够切换组身份。
通过 gpasswd -A 账户名 组名 来为组添加管理员(拥有添加或移除组员的权限,只有root 有权限添加管理员,即使是默认初始组,也没有组管理员权限)。
通过 gpasswd -a/-d 用户名 组名 来添加/移除组成员
- /etc/login.defs:
#当用户创建时,同时在目录/var/spool/mail 中创建一个用户 mail 文件
#指定密码保持有效最大天数。#表示修改密码的间隔时间。
#指定密码的最小长度。
#表示密码到期前多少天系统提示用户密码到期。
#指定 UID 最小为 1000,也就是说创建新用户时用户的 UID 从 1000 开始。#指定最大 UID 为 60000。
#系统用户最小 201
#系统用户最大 999 #最小 GID 为 1000。
#最大 GID 为 60000。#系统组 ID 最小 201
#系统组 ID 最大 999
#指定是否创建用户家目录,yes 为创建,no 表示不创建。#创建用户时默认创建用户家目录。
#创建用户家目录权限默认掩码值。
#表示 userdel 删除用户时,如果该用户初始组没有成员存在,则会删除组。
#使用 SHA512 加密方式。
- /etc/default/useradd:
#创建用户的默认文件
#新创建用户时默认初始组的 GID 号(公共组),现在使用的都是私有组机制(根据创建用户名称创建组)
#/home 表示用户家目录的位置
#表示是否启用账号过期禁用,-1 表示不启用。#表示账号过期,不设置表示不启用。
#指定了新建用户的默认 shell 类型。
#指定用户家目录中默认文件的来源,新建用户家目录下的文件都是从这个目录中复制的。 #表示是否创建邮箱缓存 yes 表示创建
-
/etc/skel/:
在创建新用户后,会在新用户家目录下看到类似.bash_profile .bashrc .bash_logout
等文件。/etc/skel 目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel 目录下的内容就可以改变新建用户默认主目录的配置文件信息。