热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[Linux]用户和组相关配置文件介绍(共7个文件)

原创文章,欢迎转载。转载请注明:转载自祥的博客原文链接:https:blog.csdn.nethumanking7articledetails84001125文章目录@[toc]1

原创文章,欢迎转载。转载请注明:转载自 祥的博客
原文链接:https://blog.csdn.net/humanking7/article/details/84001125

文章目录

    • @[toc]
  • 1. 用户和组相关的配置文件
    • 1.1. /etc/passwd 文件 (1行7列)
    • 1.2. /etc/shadow 文件(1行9列)
    • 1.3. /etc/group 文件(1行4列)
    • 1.4. /etc/gshdow 文件(1行4列)
    • 1.5. 总结4个文件
      • `/etc/passwd`文件格式 一共7列:
      • `/etc/shadow`文件格式 一共有9列:
      • `/etc/group`文件格式 一共分为4列:
      • `/etc/gshdow`文件格式 一共分为4列:
  • 2./etc/login.defs文件
  • 3./etc/default/useradd文件
  • 4./etc/skel目录
1. 用户和组相关的配置文件

Linux用户和组的主要配置文件:

  • /etc/passwd: 用户及其属性信息(名称、UID、主组ID等),可以用vipw=vi /etc/passwd进行修改信息 通过pwck验证;
  • /etc/group: 组及其属性信息,同样可以通过vigr = vi /etc/group 进行修改信息 通过grpck验证;
  • /etc/shadow: 用户密码及其相关属性;
  • /etc/gshadow: 组密码及其相关属性。

1.1. /etc/passwd 文件 (1行7列)

系统用户配置文件,是用户管理中最重要的一个文件。

root@qfx-HP-xw4600-Workstation:/etc# ls -l /etc/passwd
-rw-r--r-- 1 root root 2535 11月 6 23:01 /etc/passwd

它记录了Linux系统中每个用户的一些基本属性,并且 对所有用户可读
/etc/passwd每一行记录 对应 一个用户每行记录又被冒号 (:)分割,其格式和具体含义如下:

用户名 : 口令 : 用户标识号 : 组标识号 : 注释性描述 : 主目录 : 默认shell

下面是/etc/passwd文件的部分输出:

root@qfx-HP-xw4600-Workstation:/etc# less /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
...
...
qfx:x:1000:1000:Qfx,,,:/home/qfx:/bin/bash
xrdp:x:121:129::/var/run/xrdp:/bin/false
sshd:x:122:65534::/var/run/sshd:/usr/sbin/nologin
ftp:x:123:130:ftp daemon,,,:/srv/ftp:/bin/false
qfxFtp:x:1001:1001::/srv/qfxFtp/:/sbin/nologin
miredo:x:124:65534::/var/run/miredo:/bin/false
qfxsamba:x:1002:1002:qfxSamba,119,119,:/home/qfxsamba:/sbin/nologin

下面是每个字段的详细含义:

用户名 :口令 :用户标识号 :组标识号 :注释性描述 :主目录 :默认shell
root :x :0 :0 :root :/root :/bin/bash
daemon :x :1 :1 :daemon :/usr/sbin :/usr/sbin/nologin
bin :x :2 :2 :bin :/bin :/usr/sbin/nologin
qfx :x :1000 :1000 :Qfx,,, :/home/qfx :/bin/bash
qfxFtp :x :1001 :1001 ::/srv/qfxFtp/ :/sbin/nologin
qfxsamba :x :1002 :1002 :qfxSamba,119,119, :/home/qfxsamba :/sbin/nologin

  • 用户名: 是代表用户账号字符串

  • 口令: 存放着加密后用户口令,虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患
    因此,现在许多Linux 版本都使用了shadow技术,把真正加密后的用户口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如用“x”或者“*” 来表示。

  • 用户标识号: 就是用户的UID,每个用户都有一个UID,并且是唯一的,通常UID号的取值范围是0~655350是超级用户root的标识号,1~99由系统保留,作为管理账号
    普通用户的标识号从100开始。而在Linux系统中,普通用户UID默认从500开始。UIDlinux下确认用户权限的标志,用户的角色和权限都是通过UID来实现的,因此多个用户公用一个UID是非常危险的,会造成系统权限和管理的混乱。
    例如:将普通用户的UID设置为0后,这个普通用户就具有了root用户的权限,这是极度危险的操作。因此要尽量保持用户UID唯一性

  • 组标识号: 就是组的GID,与用户的UID类似,这个字段记录了用户所属的用户组。
    它对应着/etc/group文件中的一条记录。

  • 注释性描述: 字段是对用户的描述信息,比如用户的住址、电话、姓名等等。

  • 主目录: 也就是用户登录到系统之后默认所处的目录,也可以叫做用户的主目录家目录根目录等等。

  • 默认shell: 就是用户登录系统后默认使用的命令解释器shell是用户和linux内核之间的接口,用户所作的任何操作,都是通过shell传递给系统内核的。linux下常用的shell有:shbashcsh等。
    管理员可以根据用户的习惯,为每个用户设置不同的shell

1.2. /etc/shadow 文件(1行9列)

用户影子文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限,从而保证了用户密码的安全性。

下面介绍下/etc/shadow文件内容的格式:

用户名 : 加密口令 : 最后一次修改时间 : 最小时间间隔 : 最大时间间隔 : 警告时间 : 不活动时间 : 失效时间 : 保留字段

例如:下面是/etc/shadow文件的部分输出:

root@qfx-HP-xw4600-Workstation:/etc# less /etc/shadow
root:$6$RBDT0e4r$kVfKFuP09rIuC36uoimKGcwLXxldh1bRadg6yZUA13.NgGnFJq7UIpmKiqViQ7Aqbnn1sMpPTrw1TJDNijAOk1:17833:0:99999:7:::
daemon:*:17590:0:99999:7:::
bin:*:17590:0:99999:7:::
sys:*:17590:0:99999:7:::
sync:*:17590:0:99999:7:::
...
...
qfx:$6$ZclDUNxP$oElzrqI6WrdeerhWiFsFSTTTMElUDxEVGpZs0dl.qKP6UhdQCIZDZwE4BC/6vVupGIG.ie6hGyjUUTGKS1N4rg60:16842:0:99999:7:::
xrdp:!:17833:0:99999:7:::
sshd:*:17833:0:99999:7:::
ftp:*:17837:0:99999:7:::
qfxFtp:$6$zml7.v3D$jed3rEdytREWwkvXFyd4.LfwYtnQXUrPE8dhqaECqzwj/oMKZyRda/PHhqXT0.wYa97rDpbNDZjak28pGhDmO.:17837:0:99999:7::
:
miredo:*:17837:0:99999:7:::
qfxsamba:$6$VxzLaFLMeNbusneTXt98iMNTUn4pji2g/D6jmsRphzO5AmX5KKvZjGYP0g41D2PvHU0fODVDAEWrtfr8cwf3Wa/Dq1:17841:0:99999:7
:::

下面是每个字段的详细含义:

  • 用户名:/etc/passwd文件中的用户名有相同的含义。

  • 加密口令: 存放的是加密后的用户口令字串,如果此字段是“*”“!”“x”等字符,则对应的用户不能登录系统。

  • 最后一次修改时间: 表示从某个时间起,到用户最近一次修改口令的间隔天数。可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化。

  • 最小时间间隔: 表示两次修改密码之间的最小时间间隔。

  • 最大时间间隔: 表示两次修改密码之间的最大时间间隔,这个设置能增强管理员管理用户的时效性。

  • 警告时间: 表示从系统开始警告用户到密码正式失效之间的天数。

  • 不活动时间: 此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统不再让此用户登录,也不会提示用户过期,是完全禁用。

  • 失效时间: 表示该用户的帐号生存期,超过这个设定时间,帐号失效,用户就无法登录系统了。如果这个字段的值为空,帐号永久可用。

  • 保留字段: linux的保留字段,目前为空,以备linux日后发展之用。

1.3. /etc/group 文件(1行4列)

用户组配置文件,用户组的所有信息都存放在此文件中。
下面介绍下/etc/group文件内容的格式:

组名 : 口令 : 组标识号 : 组内用户列表

例如:下面是/etc/group的部分输出:

root@qfx-HP-xw4600-Workstation:/etc# less /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,qfx
tty:x:5:
disk:x:6:
...
...
qfx:x:1000:
sambashare:x:128:qfx
xrdp:x:129:
ftp:x:130:
qfxFtp:x:1001:
qfxsamba:x:1002:

下面是/etc/group每个字段的含义:

  • 组名: 是用户组的名称,由字母或数字构成。与/etc/passwd中的用户名一样,组名不能重复。

  • 口令: 存放的是用户组加密后的口令字串,密码默认设置在/etc/gshadow文件中,而在这里用 “x” 代替,linux系统下默认的用户组都没有口令,可以通过gpasswd来给用户组添加密码。

  • 组标识号: 就是GID,与/etc/passwd中的组标识号对应。

  • 组内用户列表: 显示属于这个组的所有用户,多个用户之间用逗号分隔。

1.4. /etc/gshdow 文件(1行4列)

组密码及其相关属性。

下面介绍下/etc/gshdow文件内容的格式:

群组名称 : 群组密码 : 组管理员列表 : 以当前组为附加组的用户列表

例如:下面是/etc/gshdow的部分输出:

root@qfx-HP-xw4600-Workstation:/etc# less /etc/gshadow
root:*::
daemon:*::
bin:*::
sys:*::
adm:*::syslog,qfx
tty:*::
...
...
qfx:!::
sambashare:!::qfx
xrdp:!::
ftp:!::
qfxFtp:!::
qfxsamba:!::

下面是/etc/gshdow每个字段的含义:

  • 群组名称: 就是群组名称
  • 群组密码:
  • 组管理员列表: 组管理员的列表,更改组密码和成员
  • 以当前组为附加组的用户列表: (分隔符为逗号)

1.5. 总结4个文件

/etc/passwd文件格式 一共7列:

  1. login name:登录用名(wang)
  2. passwd:密码 (x) 在早期版本这里存的的确是密码目前已经变成占位符x,真正的密码文件已经移动到/etc/shodow下
  3. UID:用户身份编号 (1000)
  4. GID:登录默认所在组编号 (1000)
  5. GECOS:用户全名或注释
  6. home directory:用户主目录 (/home/wang)
  7. shell:用户默认使用shell (/bin/bash)

/etc/shadow文件格式 一共有9列:

  1. 登录用名
  2. 用户密码:一般用sha512加密
  3. 从1970年1月1日起到密码最近一次被更改的时间
  4. 密码再过几天可以被变更(0表示随时可被变更)
  5. 密码再过几天必须被变更(99999表示永不过期)
  6. 密码过期前几天系统提醒用户(默认为一周)
  7. 密码过期几天后帐号会被锁定
  8. 从1970年1月1日算起,多少天后帐号失效
  9. 保留字段

/etc/group文件格式 一共分为4列:

  1. 群组名称:就是群组名称
  2. 群组密码:通常不需要设定,密码是被记录在 /etc/gshadow
  3. GID:就是群组的 ID
  4. 以当前组为附加组的用户列表(分隔符为逗号)

/etc/gshdow文件格式 一共分为4列:

  1. 群组名称:就是群组名称
  2. 群组密码:
  3. 组管理员列表:组管理员的列表,更改组密码和成员
  4. 以当前组为附加组的用户列表:(分隔符为逗号)
2./etc/login.defs文件

用来定义创建一个用户时的默认设置,比如指定用户的UIDGID的范围,用户的过期时间是否需要创建用户主目录等等。

下面对于/etc/login.defs文件的相关解释说明源于网友,本人没有测试过,所以大家谨慎使用。

下面是rhel5下的/etc/login.defs文件,简单介绍如下:

MAIL_DIR /var/spool/mail
当创建用户时,同时在目录/var/spool/mail中创建一个用户mail文件
PASS_MAX_DAYS 99999
#指定密码保持有效的最大天数
PASS_MIN_DAYS 0
表示自从上次密码修改以来多少天后用户才被允许修改口令
PASS_MIN_LEN 5
指定密码的最小长度
PASS_WARN_AGE 7
表示在口令到期前多少天系统开始通知用户口令即将到期
UID_MIN 500
指定最小UID为500 ,也就是说添加用户时,用户的UID 从500开始
UID_MAX 60000
指定最大UID为60000
GID_MIN 500
指定最小GID为500,也就是添加组时,组的GID从500开始。
GID_MAX 60000
指定最大GID为60000
CREATE_HOME yes
此项是指定是否创建用户主目录,yes为创建,no为不创建。
3./etc/default/useradd文件

当通过useradd命令不加任何参数创建一个用户后,用户默认的主目录一般位于/home下,默认使用的shell/bin/bash,这些都是存在于/etc/default/useradd这个文件中。

root@qfx-HP-xw4600-Workstation:/etc# less /etc/default/useradd
# Default values for useradd(8)
#
# The SHELL variable specifies the default login shell on your
# system.
# Similar to DHSELL in adduser. However, we use "sh" here because
# useradd is a low level utility and should be as general
# as possible
SHELL=/bin/sh #此项指定了新建用户的默认shell类型
#
# The default group for users
# 100=users on Debian systems
# Same as USERS_GID in adduser
# This argument is used when the -n flag is specified.
# The default behavior (when -n and -g are not specified) is to create a
# primary user group with the same name as the user being added to the
# system.
GROUP=100
#
# The default home directory. Same as DHOME for adduser
HOME=/home #此项表示将新建用户的主目录放在/home目录下
#
# The number of days after a password expires until the account
# is permanently disabled
INACTIVE=-1 #此项表示是否启用帐号过期禁用,-1表示不启用
#
# The default expire date
EXPIRE= #此项表示帐号过期日期,不设置表示不启用
#
# The SKEL variable specifies the directory containing "skeletal" user
# files; in other words, files such as a sample .profile that will be
# copied to the new user's home directory when it is created.
SKEL=/etc/skel #此项用来指定用户主目录默认文件的来源,也就是说新建用户主目录下的文件都是从这个目录下复制而来的
#
# Defines whether the mail spool should be created while
# creating the account
CREATE_MAIL_SPOOL=yes

/etc/default/useradd文件定义了新建用户的一些默认属性,比如用户的主目录使用的shell等等,通过更改此文件,可以改变创建新用户的默认属性值

改变此文件有两种方法:

  1. 一种是通过文本编辑器方式更改;
  2. 另一种是通过useradd命令来更改。

这里介绍一下第2种方法
useradd命令加“-D”参数后,就可以修改配置文件/etc/default/useradd,使用的一般格式为:

useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]

每个选项详细含义如下:

  • -g default_group
    表示新建用户的起始组名或者GID,组名必须为已经存在的用户组名称,GID也必须是已经存在的用户组GID。与/etc/default/useradd文件中“GROUP”行对应。

  • -b default_home
    指定新建用户主目录的上级目录,也就是所有新建用户都会在此目录下创建自己的主目录。与/etc/default/useradd文件中HOME行对应。

  • -s default_shell
    指定新建用户默认使用的shell,与/etc/default/useradd文件中“SHELL”行对应。

  • -f default_inactive
    指定用户帐号过期多长时间后就永久停用,与/etc/default/useradd文件中“INACTIVE”行对应。

  • -e default_expire_date
    指定用户帐号的过期时间。与/etc/default/useradd文件中“EXPIRE”行对应。

例子:
useradd –D不加任何参数时,显示/etc/default/useradd文件的当前设置

[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
如果要修改添加用户时的默认shell为/bin/csh,可以这么操作:
[root@localhost ~]# useradd -D -s /bin/csh
[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
4./etc/skel目录

在创建一个新用户后,会在新用户的主目录下看到类似.bash_profile, .bashrc, .bash_logout等文件,这些文件是怎么来的呢,如果想让新建立的用户在主目录下默认拥有自己指定的配置文件,该如何设置呢?

/etc/skel目录就是解决这个问题的,/etc/skel目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息。

root@qfx-HP-xw4600-Workstation:/etc/skel# pwd
/etc/skel
root@qfx-HP-xw4600-Workstation:/etc/skel# ls -la
总用量 40
drwxr-xr-x 2 root root 4096 10月 29 23:17 .
drwxr-xr-x 143 root root 12288 11月 12 22:19 ..
-rw-r--r-- 1 root root 220 9月 1 2015 .bash_logout
-rw-r--r-- 1 root root 3771 9月 1 2015 .bashrc
-rw-r--r-- 1 root root 8980 4月 20 2016 examples.desktop
-rw-r--r-- 1 root root 655 5月 16 2017 .profile

OK!
以上,Enjoy~

《[Linux]用户和组相关配置文件介绍(共7个文件)》


推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 由于同源策略的限制,满足同源的脚本才可以获取资源。虽然这样有助于保障网络安全,但另一方面也限制了资源的使用。那么如何实现跨域呢,以下是实现跨域的一些方法。 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
author-avatar
-断桥再见-_974_328
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有