Linux系列7-用户与用户组管理

  • 用户的管理(增加、删除、修改和切换)
  • 用户组的管理
  • 用户和组的配置文件/etc/shadow/etc/passwd/etc/group
  • 记录用户历史操作命令history
    如要下载笔记和代码请到我的github
  • Linux作为一种多用户的操作系统(服务器系统),允许多个用户同时登陆到系统上,并响应每个用户的请求;
  • 系统管理员的非常重要的工作之一是管理用户,包括:
    • 添加和删除用户;
    • 分配用户主目录;
    • 限制用户权限。

      用户与用户组基础

  • Linux识别多用户的流程:
    • 用户提供用户和密码,经过验证后登录到系统;
    • Linux为每一个用户启动一个进程,然后由这个进程接受用户的各种请求;
    • 建立用户时,需要限定其权限(root用户拥有所有权限sudo -s),如不能修改配置文件,不能查看其他用户目录等;
    • 被划分为一个用户组的用户默认拥有用户组权限。

用户和组的添加useraddgroupadd

  • useradd:创建新用户;
    • 默认情况下,不带-m参数的useradd命令不为新用户建立主目录,此时用户可以登录到系统Shell,但不能登录到图形界面;
    • -g:参数用于指定用户所属的组,不带-g参数时默认为新用户创建同名用户组,然后将新用户归入该组;
    • -s:指定用户登录后使用的Shell(目录),否则默认使用sh;
    • 创建流程:(1)先创建用户名useradd username;(2)创建密码passwd username
  • groupadd:增加用户组,groupadd groupname

    记录用户操作history

  • Shell会记录用户的每一条命令。
  • history:列出所有使用过的命令并加以编号;
    • history命令只在bash中适用;
    • 历史命令记录被存在用户主目录下的.bash_history中,该文件默认可以存储1000条命令记录;
    • history <num>:列出最近次输入的命令;
    • history列出当前用户的命令历史,查看其他用户命令应到其主目录的.bash_history查看。

      passwd和shadow文件

  • Linux中做的一切基本配置最终都会反映到配置文件,包括用户管理。
  • /etc/passwd:登记所有用户信息;
  • /etc/shadow:保存用户的登录密码(加密);
  • 直接修改配置文件也可以实现用户管理。

    删除用户userdel

  • userdel:用于删除用户帐号;
    • 默认情况下,不删除用户主目录;
    • -r:删除用户帐号,同时删除用户主目录;

      管理用户帐号usermod

  • usermod常用选项及含义:
选 项 含 义
-d 修改用户主目录
-e 修改帐号的有效期限(MM/DD/YY)
-g 修改用户所属的组
-l 修改用户帐号名称
-s 修改用户登录后所使用的shell
  • 同样可以通过修改配置文件/etc/passwd/etc/shadow/etc/group来修改用户信息。

    查看用户信息id

  • id:查看用户信息;
    • 以用户名作参数,查看用户的UID、GID及所属组;
    • 不带参数,则显示当前登录用户的信息。

      用户间切换su

  • ubuntu使用sudo -s/bin/su(绝对路径更为安全)来获得root权限。
  • su username:用于切换用户。

    受限的特权sudo

  • root权限是不可分隔的,其他用户要获取某个特权时采用sudo命令;
  • 使用流程:
    • sudo会首先要求用户输入用户自己的口令;
    • 用户在在一段时间内(5分钟)没有再次使用sudo,就必须再次输入口令。
  • /etc/sudoers指定用户可以执行的特权命令;
    • root ALL=(ALL) ALL指定root用户可以使用sudo在任何机器上(1st ALL)以任何用户身份(2nd ALL)执行任何命令(3rd),无括号时以root身份执行;
    • %admin:替代所有属于admin组的用户,Ubuntu安装时创建的用户自动加入admin组。
  • sudoer的每行包含下面内容:
    • 该权限适合的用户;
    • 这一行配置在哪些主机上适用;
    • 该用户可以运行的命令;
    • 该命令以那个用户身份执行。
  • sudo -u可以以其他用户身份执行命令。
  • visudo:修改sudoers文件时使用的命令。

    /etc/passwd文件

  • 早期所有信息都在/etc/passwd中,后来出于安全考虑,加密口令转移到/etc/shadow
  • /etc/passwd中每一行代表一个用户,每一行由7个字段组成,使用冒号分隔;
    • 登录名;
    • 口令占位符;
    • 用户ID(UID);
    • 默认组ID号(GID);
    • 用户私人信息;
    • 用户主目录;
    • 登录shell。
  • 口令占位符代表算法加密,且口令放置在/etc/shadow中。
  • Linux上使用最广泛的算法是MD5,MD5加密后长度是一个固定值(34个字符)。加密过程中,MD5算法会随机加入称作”salt”的数据,使一个口令可以对应多个不同的加密后形式。
  • 常用加密算法通过前缀识别;
    • MD5算法以”$1$”开头;
    • Blowfish算法以“$2a$”开头。
  • UID号:用于唯一标识系统中的用户。
    • 是一个32位无符号整数;
    • root用户的UID为0。
    • 虚拟用户(bin/daemon)被分配到比较小的UID号,通常安排在passwd文件的开头;
    • 真实用户的UID号一般从比较大的数开始,这样可以为虚拟用户提供足够的余地(本机从1000开始)。
  • GID号:指定用户登录时默认所在的组;
    • 一个32位整数;
    • root组的GID号为0;
    • /etc/group中定义。

      /etc/shadow文件

  • /etc/shadow存放加密后的用户口令。
  • /etc/shadow文件的每一行代表一个用户,并以冒号分隔每一个字段,每个字段的含义如下;
    • 登录名;
    • 加密后口令;
    • 上次修改口令日期;
    • 两次修改口令之间的天数(最少);
    • 两次修改口令之间的天数(最多);
    • 提前多少天提醒用户修改口令;
    • 在口令过期多少天后禁用该用户;
    • 帐号过期的日期(usermod);
    • 保留,为空。
    • 绝对日期是从1970.1.1至今的天数。

      /etc/group文件

  • /etc/group文件中保存系统所有组的名称,及每个组的成员列表;
  • 文件每一行表示一个组,由4个冒号分隔的字段组成,含义分别是:
    • 组名;
    • 组口令占位符(如果口令字段是一个x,表示还有一个/etc/gshadow文件用于存放口令);
    • GID号;
    • 成员列表,逗号分开,不能有空格。
  • 应该保证GID的唯一性。
  • 实际上用户所属组是/etc/group/etc/passwd中相应组的并集。

    参考文献

    Linux从入门到精通 刘忆智 著
文章目录
  1. 1. 用户与用户组基础
  2. 2. 用户和组的添加useradd、groupadd
    1. 2.1. 记录用户操作history
    2. 2.2. passwd和shadow文件
  3. 3. 删除用户userdel
  4. 4. 管理用户帐号usermod
  5. 5. 查看用户信息id
  6. 6. 用户间切换su
  7. 7. 受限的特权sudo
  8. 8. /etc/passwd文件
  9. 9. /etc/shadow文件
  10. 10. /etc/group文件
  11. 11. 参考文献
|