2018-Linux系统基础-linux-08-用户和组群账户管理

用户和组群账户管理

  1. 在linux操作系统中,用户账号是登录系统的唯一凭证,其中root是最高管理者,其UID是0。
  2. 与用户账号和组账户相关的配置文件有/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow.
  3. linux操作系统可以使用chage命令管理用户口令的时效,防止用户口令由于长时间使用而泄露。

1. 用户账户管理

  1. 在实际工作中,用户的角色是通过UID来标识的。每个用户的UID也都是不同的。

1.1. linux用户账号概述

  1. linux操作系统有三种用户

1.1.1. root用户

  1. 系统的内置用户,权限最高。
  2. 在系统中的每个文件、目录和进程都归属于某一个用户,没有改用户许可,除了root用户以外其他的普通用户是无法操作的。
  3. root用户的特权性:
    1. root用户可以超越任何用户和用户群组来对文件或目录进行读写、修改和删除(在系统正常的许可范围内)。
    2. 可以控制可执行程序的执行和终止。
    3. 可以对硬件设备执行添加、创建和移除等操作。
    4. 可以对文件和目录的属性或权限进行修改以适合系统管理的需要。

1.1.2. 虚拟用户

  1. 这一类用户也被称为伪用户或假用户,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户
  2. 比如:bin,daemon,adm,ftp,mail等用户账户

1.1.3. 普通用户

  1. 由系统管理员创建,并且能够登录linux系统,只能操作自己目录内的文件,权限有限。

1.2. linux用户账户配置文件

1.2.1. /etc/passwd文件

  1. /etc/passwd是系统识别用户的一个文件,记录了linux系统的所有用户。
  2. 登录过程:
    1. 用户以某个用户名登录系统
    2. 系统检查/etc/passwd文件,确认是否存在该用户
    3. 确认用户的UID,存在则读取/etc/shadow影子文件中对应的口令
    4. 口令无误则登录系统
  3. 内容:读取文件内容,显示出来每一行是一个用户账户的信息。
    1. 每个段位用:分隔开
    2. 七个字段都是什么:
      1. 用户名
      2. 口令:加密的口令,被映射到了/etc/shadow中了
      3. 用户标识号:唯一,root->0
      4. 组群标识号:系统内用一个整数标识用户所属的群组的ID号
      5. 用户名全称:用户名描述,可以先不设置
      6. 主目录:用户名登录系统后首先进入的目录
      7. 登录Shell:用户使用的Shell类型
  4. UID简介:
    1. UID是用户的ID值,每个用户是唯一的,这关系到系统安全。
    2. 一个从0开始正整数,最大值可从/etc/login.defs中查到
      • 命令:cat /etc/login.defs | grep UID_MAX
    3. 一般系统会预留500以前的UID和GID(组ID号)给虚拟用户使用

1.2.2. /etc/shadow文件

  1. /etc/shadow文件是/etc/passwd的影子文件,并不由/etc/passwd文件产生
  2. 这个文件只有root可以读取和操作,/etc/shadow文件内容包括用户以及被加密的口令以及其他/etc/passwd不能包括的信息,比如用户账户的有效期限。
  3. 这个文件包括9个段位,每个段位之间用":"分割。
  4. 9个字段的基本含义:
    1. 用户名:这里的用户名和/etc/passwd中的用户名是相同的
    2. 加密口令:口令已经加密,有些用户如果显示的是!!,则还未设置口令,无法进行登录。
    3. 用户最后一次更换口令的日期:从1970年1月1日起,按天进行计算。
    4. 口令允许更换前的天数:若设置为0,则禁用这个命令
    5. 口令需要更换的天数:若为0,同上
    6. 口令更换前的天数:用户登录系统后,系统登录程序提醒用户口令即将过期。
    7. 账户被取消激活前的天数:表示用户口令过期多少天,系统后禁用此用户。
    8. 用户账户过期日期:指定用户账户禁用的天数,如果这个字段的值为空,账户永久可用。
    9. 保留字段:目前为空,以备后用。

1.3. 图形界面进入用户账户的设置

  1. 显示linux系统用户:
    1. 使用用户管理器,需要使用管理员登录系统,同时需要安装system-config-users软件包,可以在终端输入system-config-users命令启动。
    2. 单击"用户"选项卡,可以查看包括系统内本地用户的列表,单击"组群"选项卡,可以查看包括系统内本地组群的列表。
    3. 寻找指定用户或组群可以在"搜索过滤器"字段内输入名称的前几个字符。
    4. 用户管理器不显示系统默认UID。
    5. 在首选项对话框中取消选择"隐藏系统用户和组",单击"关闭"按钮,就可以显示系统用户。
  2. 创建用户账户:
    1. 在系统管理器中单击"添加用户"按钮,只有就可以输入。
    2. 在"登入Shell"文本框内输入Shell类型,可以修改为用户创建的主目录。
    3. 可以设置ID,之后确定。
  3. 修改用户账户属性:
    1. 从"用户管理器"中的"用户"选项卡,从用户列表中选择该用户,单击属性,打开相应对话框。
    2. 多个选项的数据:
      1. 用户数据:显示添加用户时配置的基本用户信息。
        • 可以改变用户的全称、口令、主目录和登录Shell
      2. 账户信息:如果想要让账户在固定日期过期,可以进行设置。
        • 选住本地口令被锁,锁定账户
      3. 口令信息:这个选项卡显示了用户口令最后一次更改的日期
      4. 组群:选择让用户加入的组群以及用户的主要组群。
  4. 删除用户账户:
    1. 单击用户即可选择,然后再单击"删除"按钮
    2. 删除关于用户的一切信息。

1.4. 字符界面下的用户账户的设置

  • 主要用的命令会是:useradd、usermod和userdel.
  1. 创建用户账户:
    1. 创建一个用户账户是在系统中创建一个新账户,然后为新账户分配用户UID、用户组群、主目录和登录Shell等资源。
    2. 新创建的用户账户默认是被锁定的,无法使用,需要passwd命令设置密码之后才能使用。
    3. 语法:
      1. useradd [-u uid [-o]][-g 组群名][-G 组群名,...][-d home][-s shell][-c comment][-m [-k template]][-f inactive][-e expire][-p passwd][-M][-n][-r][-l][用户名]
      2. useradd -D [-g 组群名][-b base][-s shell][-f inactive][-e expire]
    4. 选项:
      1. -d:新账户每次登录时所使用的主目录。
      2. -e:账户的终止日期:指定格式:MM/DD/YY
      3. -f:账号过期几日后永久停权。当值为0时账号立刻被停权。而当值为-1时则关闭此功能。
      4. -g:组群名称或以数字作为用户登录起始用户组群。预设的用户组群数字为"1"。
      5. -G:定义此用户为多个组群的成员。每个用户组群使用","隔开,不可以包含空白内容。
      6. -m:用户目录若不存在,则建立
      7. -M:不建立用户目录,直接用/etc/login.defs系统档设定要建立用户目录。
      8. -n:预设值用户的用户名称会相同,此选项将取消此预设值。
      9. -r:此选项用来建立系统账号
      10. -s:用户登录后使用的shell类型
      11. -u:用户使用的ID值,必须为唯一的ID值(-o 数字不可为负值)
  2. 修改用户账户:
    1. 使用usermod命令能改变用户的Shell类型、所属的群组
    2. 命令语法:usermod [-u uid[-o]][-g 组群名][-G 组群名,...][-d 主目录[-m]][-s shell][-c 注释][-l 新登录名][-f 失效日][-e 过期日][-p 密码名][-L|-U][用户名]
    3. 各参数的含义:见PPT
  3. 删除用户账户:
    1. 使用userdel命令可以在linux系统中删除用户账户。
    2. 命令:userdel [-r][用户名]
    3. 选项:
      1. -r:表示在删除用户的同时,将用户的主目录及本地邮件存储的目录或问价也一起删除。

2. 组群账户管理

2.1. linux组群用户管理

  1. 用户组群配置文件:
    1. /etc/group
    2. /etc/gshadow

2.1.1. /etc/group文件:

  1. /etc/group文件是用户组群的配置文件,包括用户和用户群组,并且能显示出用户是归属于什么。
  2. 如果root用户把某个文件的读写执行权限开放,root用户群组的所有用户都可以修改文件。
  3. 如果可执行的文件,root用户组群中的用户群组的用户也可以执行。
  4. 文件内容:
    1. /etc/group文件的内容包括用户群组名、用户组群口令、GID及该用户组群所包含的用户。
    2. 每一个组群都有一条记录,包含4个段位,每个段位用:分隔开。
      1. 组群名:用户群组口令。
      2. 组群口令:存放加密的密码。
      3. 组群标识号:在系统中用一个整数表示组群GID,每个组群的GID都是唯一的,默认。普通组群从500开始,root组群的GID是0
      4. 组群成员:属于这个组群的成员。
  5. 组群GID的概述
    1. 组群GID类似UID,是一个从0开始的正整数。
    2. 查看最大值和最小值可以使用命令来查:cat /etc/login.defs | grep GID

2.1.2. /etc/gshadow文件

  1. 这个文件是/etc/group的加密文件。
  2. 比如:用户组群管理密口令就是存放在这个文件中。
  3. 文件内容:
    1. 这个文件每个用户群组都有一条记录。一行有4个段位,每个段位都用:分隔。
    2. 每个字段的含义:
      1. 组群号:组群的名称。
      2. 组群口令:口令的加密,如果有些组群在这里显示的是!,表示这个组群没有口令。
      3. 组群管理员:组群的管理员,有权在该组群中添加、删除用户。
      4. 组群成员:属于该群组的用户成员列表,如有多个用户用,分隔。

2.2. 图形界面下组群账户的设置

  1. 创建组群用户:
  2. 修改组群账户属性:
    1. 在群组关键卡中
    2. 找到属性按钮。
  3. 删除组群账户。

2.3. 字符界面下组群账户的设置

2.3.1. 创建组群账户

  1. 使用groupadd命令可以在linux系统下创建组群用户。
  2. 命令语法:groupadd [-g gid [-o] ][-f][组群名]
  3. 含义:
    1. 后接GID值,除非使用-o参数,否则该值必须是唯一的,数值不可为负。
    2. 创建系统组群。

2.3.2. 修改组群账户

  1. 使用groupmod命令可以在linux系统中修改组群账户。
  2. 命令语法:groupmod [-g <组群识别码> <-o>][-n <新组群名称>][组群名称]
  3. 参数含义:
    1. -g:设置欲使用的组群GID
    2. -o:重复使用组群GID
    3. -n:设置欲使用的组群GID

2.3.3. 删除组群账户

  1. 使用useradd可以在linux系统中删除组群账户
  2. 命令语法:groupdel [组群名称]
  3. 说明:必须先删除所有的群组,才能删除组群。

3. 账户相关文件或目录

  1. 在很多对账户的操作,都会涉及到一些文件和目录。

3.1. /etc/skel目录

  1. 这个目录是存放用户启动文件的目录,这个目录由root用户管理,当管理员创建新用户时,这个目录下的文件会自动复制到新创建的用户的主目录下。
  2. 目录下的所有文件都是隐藏文件,也就是类似".file"格式,可以通过添加、修改和删除/etc/skel目录下的文件,来为用户提供一个统一、标准和默认的用户环境。
  3. 创建新用户:
    1. 使用useradd命令创建新用户,会赋值相应文件到目录下。
    2. 或者,手动完成上述操作。

3.2. /etc/login.defs配置文件

  1. 这里面规定了创建新用户时的一些默认设置,比如创建用户时是否需要主目录、UID和GID的范围、用户账户口令的期限等,需要root用户来修改。

3.3. /etc/default/useradd文件

  1. 记录的是使用useradd命令创建用户账户的规则文件。

4. 用户和组群维护命令

4.1. 账户维护命令

4.1.1. passwd命令

  1. 使用passwd命令可以设置或修改用户的口令,普通用户和超级权限用户都可以运行passwd
  2. 普通用户只能更改自己的用户口令,而root用户可以设置或修改任何用户的口令
  3. 命令语法:passwd [选项][用户名]
  4. 命令中参数的含义:
    1. -d:
    2. -l:
    3. -u:
    4. -x:
    5. -n:
    6. -w:
    7. -i:
    8. -S:

4.1.2. gpasswd命令

  1. 使用gpasswd命令可以设置一个组群密码,或是在组群中添加、删除用户。
  2. 命令语法:
    • gpasswd [-r|-R][群组名]
    • gpasswd [选项][用户名][群组名]
  3. 参数含义:
    1. -a:将一个用户加入到一个组群中。
    2. -d:将一个用户从一个组群中删除。
    3. -r:取消一个用户组群的组群密码。

4.1.3. chfn命令

  1. 使用chfn命令可以更改用户全名、办公室地址、电话等信息。
  2. 命令语法:chfn [-f full-name][-o office][-p office-phone][-h home-phone][-u][-v][用户名]
  3. 命令中参数的含义:
    1. 设置全名:
    2. 设置办公地址:
    3. 设置公司电话:
    4. 设置家庭电话:

4.1.4. chsh命令

  1. 可以更改用户的Shell类型。
  2. 命令语法:chsh [-s Shell类型][-l][用户名]
  3. 命令参数:
    1. -s:更改用户的Shell类型
    2. -l:列出当前目录可用的Shell清单。

4.1.5. su命令

  1. 使用su命令可以切换到其他用户账户进行登录。
  2. 命令中各参数含义:
    1. -:默认切换到root用户,并且切换到root用户,不改变Shell环境。
    2. -l:登录并改变用户环境。
    3. -c:执行一个命令,然后退出所在的用户环境。

4.1.6. pwck命令

  1. 使用pwck命令可以校验用户配置文件/etc/passwd和/etc/shadow内容是否合法和完整。
  2. 命令语法:pwck

4.1.7. newgrp命令

  1. 使用newgrep命令可以让用户账户以另一个组群的身份进行登录。
  2. 命令语法:newgrp [grep]
  3. newgrep指令类似login指令,是以相同的账号名,不同的组群身份登录系统。使用这个指令来切换组群,用户必须是该组群的用户,否则无法登陆。

4.2. 账户信息显示

4.2.1. finger命令

  1. 可以显示用户账户的信息。
  2. 命令语法:finger [选项][用户名]
  3. 参数含义:
    1. -l:采用长格式显示用户信息。
    2. -m:禁止对用户真实名字进行匹配。
    3. -p:把.plan和.project文件中的内容省略。
    4. -s:采用短格式显示用户信息。

4.2.2. groups命令

  1. 使用这个命令可以显示指定用户账户的组群成员身份。
  2. 命令语法:groups [用户名]

4.2.3. id命令

  1. 使用这个id命令可以显示用户的ID以及该用户所属组群的GID。
  2. 命令语法:id [选项][用户名]
  3. 参数含义:
    1. -g:显示用户所属主组群的GID
    2. -G:显示用户所属组群的GID
    3. -u:显示用户UID

4.2.4. w命令

  1. 使用w命令可以详细查询已登录当前计算机的用户。
  2. 命令语法:w
  3. 参数含义:
    1. -f:开启或关闭显示用户从何处登录系统
    2. -h:不显示各栏位的标题信息列
    3. -l:使用详细格式列表,此为预设值
    4. -s:使用简介格式列表,不显示用户登录时间,终端机阶段作业和程序所耗费的CPU
    5. -u:忽略执行名称,以及该程序耗费CPU的

4.2.5. who命令

  1. 使用who命令可以显示已登录当前计算机用户的简单信息。
  2. 命令语法:who [-version][am i][记录文件]
  3. 参数含义:
    1. -H:显示各栏位的标题信息列
    2. -i:显示闲置时间
    3. -m:显示当前用户信息
    4. -q:只显示登录系统的账号名称和总人数
    5. -s:此参数将忽略不计
    6. -w:显示用户的信息状态栏

2018-Linux系统基础-linux-08-用户和组群账户管理
https://spricoder.github.io/2018/07/16/2018-Linux-system-basics/2018-Linux-system-basics-linux-08-%E7%94%A8%E6%88%B7%E5%92%8C%E7%BB%84%E7%BE%A4%E8%B4%A6%E6%88%B7%E7%AE%A1%E7%90%86/
作者
SpriCoder
发布于
2018年7月16日
许可协议