Linux中/etc下面passwd shadow group gshadow文件介绍,以及etc目录下login.defs和etc目录下deafult子目录中useradd文件中每个配置项功能

发布时间 2023-03-24 21:50:08作者: yulingfeng1

一、用户信息文件 : /etc/passwd

[root@localhost ~]#cat/etc/passwd
#查看一下文件内容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

1. 用户名称(account)----------用户个人的用户名

2. 密码标识(password)

                   该字段若是 x ,则代表这个用户设有密码。x 不能省略,如果省略,系统在登录时就不会去 /etc/shadow 中查找真正的密码,从而认为这个用户没有密码,直接登录。

            真正的密码并不存在于 passwd 文件,而是保存在/etc/shadow中

3. UID

            0 :表示该账户是超级用户

           1~499 : 表示该账户是系统用户。专门用来为系统的启动服务或启动命令服务

            500及以上 : 普通用户

4. GID(用户初始组ID)

            初始组:指用户一登录就立刻拥有这个用户组的相关权限,每个用户都必须有一个初始组

            附加组: 指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个在 passwd 该字段下看到的 GID 是这个用户的初始组 GID,需要匹配 /etc/group 文件才能看到是哪个组。

5 . 用户说明

            该字段只是对本用户的一个备注说明,用户可以把一些重要信息保存在这里,方便日后的查看。

6.  家目录

            普通户 : /home/用户名/

            管理员 : /root/

7  .登录之后的 shell

            shell :命令解释器。shell有很多种,Linux 中的默认 shell 是 bash。如果换成/sbin/nologin时默认是没有登录环境的

 

二 、影子文件 /etc/shado

[root@localhost ~]#cat/etc/shadow
root: $6$9w5Td6lg
$bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fl38RH15wzVoom ff9isV1 PzdcXmixzhnMVhMxbvO:15775:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::

1.  用户名-----------与/etc/passwd中的字段一致

2.  加密密码

            真正的密码就是保存在这一字段,这里是显示的加密后的密码。而passwd中保存的则是密码标识

                    该字段存放的是加密后的用户口令字,如果为空,则对应用户没有口令,登录时不需要口令; 星号代表帐号被锁定; 双叹号表示这个密码已经过期了。 $6$开头的,表明是用SHA-512加密的, $1$ 表明是用MD5加密              的 $2$ 是用Blowfish加密的 $5$ 是用 SHA-256加密的。

3.  密码最后一次的修改日期

            该字段是用时间戳表示的。(以1970年1月1日为起始时间,每过一天加一,得出来的数字称为时间戳。)

            可以用以下命令:

            时间戳换算日期

            date -d “1970-01-01 17066 days”

            日期换算时间戳

            echo $(($(date --date=”2018/01/01”+%s)/86400+1))

4.   两次密码的修改时间间隔

            *该字段所谓的间隔是与上一字段相比较的。

            *如果是 0,则可在任意时刻修改该用户的密码。

            *假如是 10 ,则要求 10 天内不允许用户修改密码。

            *最小时间间隔”指的是两次修改口令之间所需的最小天数。

            *最大时间间隔”指的是口令保持有效的最大天数。

5.   密码有效期

           比如设置为30,则每隔30天必须改密码。如果到期,根据后面第六、第七字段来行动。

6.  修改密码警告天数 n

           当距离密码有效期还剩 n 天时,系统每天都会提醒你修改密码。

7.  密码到期后的宽限天数

           0:代表密码过期后立即失效

           -1:代表密码永远不会失效

           n :往后宽限 n 天

8.  失效时间

          “失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

9.   最后一个字段为保留字段

 

 三、组信息文件 /etc/group

[root@localhost ~]#cat/etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
…省略部分输出…
lamp:x:502:

1.  组名------------也就是是用户组的名称,有字母或数字构成。同 /etc/passwd 中的用户名一样,组名不能重复

2.  组密码标志

         与 passwd 中的第二字段特性相同,只是一个密码标志,真正的密码在 /etc/gshadow 中。只是我们通常不给组设置密码。

3.  GID

         群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样

         这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。

4.  组中附加用户

          这个字段是空的,说明没有向其中添加其他用户。并且在这一字段,是看不到初始用户的,要想查看该组的初始用户,则要通过 GID 来与 passwd 文件对照查看。

 

四、组密码文件 /etc/gshadow

[root@localhost ~]#cat/etc/gshadow
root:::
bin:::bin, daemon
daemon:::bin, daemon
...省略部分输出...
lamp:!::

1.  组名----------同 /etc/group 文件中的组名相对应。

2.  组密码

      对于大多数用户来说,通常不设置组密码,因此该字段常为空,但有时为 “!”,指的是该群组没有组密码

3.  组管理员的用户名

      Linux 系统中账号太多,而超级管理员 root 可能比较忙碌,因此当有用户想要加入某群组时,root 或许不能及时作出回应。这种情况下,如果有群组管理员,那么他就能将用户加入自己管理的群组中,也就免去麻烦 root 了。

      不过,由于目前有 sudo 之类的工具,因此群组管理员的这个功能已经很少使用了。      

4.  组中附加用户
      该字段显示这个用户组中有哪些附加用户,和 /etc/group 文件中附加组显示内容相同

 

/etc/login.defs

        /etc/login.defs文件定义了与/etc/password和/etc/shadow配套的用户限制设定。这个文件是需要的,缺失并不会影响系统的使用,但是也许会产生意想不到的错误。

如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs。

# *REQUIRED* required
#  Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail
#创建用户时,要在目录
/var/spool/mail中创建一个用户mail文件 #MAIL_FILE .mail # Password aging controls: # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 99999

#密码最大有效期 PASS_MIN_DAYS 0

#两次修改密码的最小间隔时间 PASS_MIN_LEN 5 #密码最小长度,对于root无效 PASS_WARN_AGE 7 #密码过期前多少天开始提示 # Min/max values for automatic uid selection in useradd #创建用户时不指定UID的话自动UID的范围 UID_MIN 500 #用户ID的最小值 UID_MAX 60000 #用户ID的最大值 # Min/max values for automatic gid selection in groupadd #自动组ID的范围 GID_MIN 500 #组ID的最小值 GID_MAX 60000 #组ID的最大值 # If defined, this command is run when removing a user. # It should remove any at/cron/print jobs etc. owned by # the user to be removed (passed as the first argument). #USERDEL_CMD /usr/sbin/userdel_local #当删除用户的时候执行的脚本
# If useradd should create home directories
for users by default # On RH systems, we do. This option is overridden with the -m flag on # useradd command line. # CREATE_HOME yes #使用useradd的时候是够创建用户目录 # The permission mask is initialized to this value. If not specified, # the permission mask will be initialized to 022. UMASK 077 # This enables userdel to remove user groups if no members exist. # USERGROUPS_ENAB yes #用MD5加密密码

 

 

/etc/default/useradd

            /etc/default/useradd文件是在使用useradd添加用户时的一个需要调用的一个默认的配置文件,可以使用“useradd -D参数“,这样的命令格式来修改文件里面的内容。

[root@w ~]# cat /etc/default/useradd

# useradd defaults file

GROUP=100

HOME=/home                        注:把用户的家目录建在/home中。

INACTIVE=-1                       注:是否启用帐号过期停权,-1表示不启用。

EXPIRE=                           注:帐号终止日期,不设置表示不启用。

SHELL=/bin/bash                   注:新用户默认所有的shell类型。

SKEL=/etc/skel                    注:配置新用户家目录的默认文件存放路径。

CREATE_MAIL_SPOOL=yes             注:创建mail文件。

 

useradd命令参数 注释说明
-c comment #新帐号password档的说明栏
-d home_dir #新帐号每次登入时所使用的home_dir。预设值为default_home内login名称
-e expire_date #*帐号终止日期。日期的指定格式为MM/DD/YY。
-f inactive_days #帐号过期几日后记久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能,预设值为-1。
-g initial_group #*group名称或以数字来做为用户登入起始用户组(group)。用户组名称须为系统现有存在的名称。用户组数字也须为现有存在的用户组。预设的用户组数字为1。
-G group,[...] #*定义此用户为多个不同groups的成员。每个用户组使用","逗号分隔。用户组名称-g选项的限制。默认值为用户的起始用户组。
-m #用户目录如不存在则自动建立。如使用-k选项,skeleton_dir内的档案将复制至用户目录下。然后在/etc/skel目录下的档案也会复制过去取代。任何在skeleton_diror /etc/skel的目录也相同会在用户目录下一一建立。The-k同-m不建立目录以及不复制任何档案为预设值。
-M #*不建立用户家目录,优先于/etc/login.defs文件的设定。
-n #默认情况用户的用户组与用户的名称会相同。如果命令加了-n参数,就不会生成和用户同名的用户组了。
-r #此参数是用来建立系统帐号。系统帐号的UID会比定义在系统档上/etc/login.defs.的UID——MIN来的小。注意useradd此用法所建立的帐号不会建立用户家目录,也不会在乎记录在/etc/login.defs.的定义值。如果你想要有用户家目录额外指定-m参数来建立系统帐号。这是Red Hat额外增设的选项。
-s shell #*用户登入后使用shell名称。默认值为不填写,这样系统会帮你指定预设的登入shell。指明用户的默认shell程序,可用列表在/etc/shells文件中
-u uid #*用户的ID值。这个值必须是唯一的,除非用-o选项。数字不可为负值。

命令示例:

添加一个用户old,并指定属于sa组,要求组ID为801,uid为808,并且不建立家目录及禁止其登录。

[root@cat ~]# groupadd sa -g 801
#创建用户组sa指定gid 801,这个是groupadd命令的用法
[root@cat ~]# tail -1 /etc/group
sa:x:801:
[root@cat ~]# useradd -u 808 -g sa -M -s /sbin/nologin old
#创建用户old属于指定组sa,指定uid 808,用户名old
[root@cat ~]# tail -1 /etc/passwd
old:x:808:801::/home/old:/sbin/nologin
[root@cat ~]# id old
uid=808(old) gid=801(sa) groups=801(sa)

新增用户并设置终止日期

[root@cat ~]# useradd -e "2016/06/01" m1
[root@cat ~]# chage -l m1
Last password change                                    : May 26, 2016
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : Jun 01, 2016
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7