用户与用户组

目录

      • 概念
      • 用户和用户组管理
        • 用户管理
          • 用户账号添加:
          • 设置用户密码
          • 删除用户
          • 修改用户账号
        • 用户组管理
          • 添加用户组
          • 删除用户组
          • 修改用户组属性
          • 用户组切换
      • 用户切换
        • su命令切换
        • sudo命令
      • 补充
        • 用户信息查询

概念

1:用户

  • Linux 是一个多用户、多任务的分时操作系统
  • 在一台 Linux 主机上,可能同时登录了多名用户。
  • 用户的账号相关信息(密码除外)放在目录 /etc/passwd 中,密码放在 /etc/shadow

2:文件所有者

指文件的拥有者,默认创建文件的用户即为文件所有者。也可以在创建时指定其他用户为文件所有者,或通过高级用户更改。

3:用户组(可能拥有类似功能)

Linux 系统中用户大体分为:

  • 管理员(root):规定用户 id 为 0
  • 普通用户:
  • 系统用户:保障系统运行,其用户 id 为 1——499。为普通用户自行分组

用户组的信息存放于 /etc/group 文件中

4:文件所属组

假设:当前系统有个用户组为 whs ,其中包含 A,B,C,D 4个用户。当前有一个文件 file, 若设置文件所属组为 whs ,并设置对齐文件的权限为可读可写,那么whs用户组的 4个用户对文件file 都有读写操作的权限。

5:其他用户

不属于whs 用户组,属于其他用户组的用户

6::root

  • 超级用户,拥有普通用户的一切权限。
  • 可以创建、删除、普通用户和用户组。设置用户权限等。

用户与用户组_第1张图片

用户和用户组管理

用户管理

用户账号添加:

在系统中创建一个账号,并设置用户名,用户组,主目录,登录Shell等。

useradd 命令

格式: useradd 【选项】用户名

useradd命令常用选项

选项 Value
-d 指定用户登录时的目录
-c 指定账号的备注文字
-e 指定账号的有效期限
-f 缓冲天数,密码过期时在指定天数后关闭该账号
-g 指定用户所属组
-G 指定用户所属的附加用户组
-m 自动建立用户的登录目录
-r 创建系统账号
-s 指定用户登录的shell
-u 指定用户id,若添加-o,可以与其他用户重复

案例一:创建新用户 xm ,指定用户的主目录/home/user,并设置用户 id 为876

用户与用户组_第2张图片
1:切换为root用户
用户与用户组_第3张图片
2:添加新用户的实质是在 /etc/passwd文件下添加一条记录,下面查看我们创建的用户
用户与用户组_第4张图片
细节:

  • 普通用户通常要求不以数字和下划线作为用户名的第一个字符
  • 如果创建账号时未指定用户id、用户组、用户目录、登录Shell等信息,系统会自动指定相关信息。
  • 如果没指定用户组,那么系统会自动创建一个与用户同名的用户组,如上案例
  • 新增的用户未指定 uid ,此时新建用户是无法使用的
设置用户密码

passwd :该命令用于设置用户的认证信息

格式: passwd 【选项】 用户名

  • 如果没有带用户名,则是给当前登录的用户修改密码
  • 当密码被设置或者修改时,会自动更新 /etc/shadow 文件信息

passwd 命令常用选项:

选项 说明
-l 锁定密码,锁定后密码失效,无法登陆(新用户默认锁定)
-d 删除密码,仅系统管理员可使用
-S(大写) 列出密码相关信息,仅系统管理员可使用
-f 强制执行

案例一:设置 xm 这个用户的密码

用户与用户组_第5张图片
查看 /etc/shadow 文件信息

删除用户

userdel命令

格式: userdel 【选项】 用户名

  • 默认情况下是不会删除主目录,使用 -r 选项后会删除主目录

userdel命令常用选项

选项 说明
-f 强制删除用户,即便该用户为当前用户
-r 删除用户的同时删除与用户相关的所有文件

案例:创建一个用户 cc1 ,然后删除该用户
用户与用户组_第6张图片

修改用户账号

usermod命令

格式: usermod 选项 参数

  • 修改用户账号信息前,必须先确认该用户没有在计算机上执行任何程序。

usermod命令常用选项

选项 说明
-c 修改用户的备注信息
-d 修改用户的登录信息
-e 修改用户的有效权限
-f 修改缓冲天数,即修改密码过期后关闭账号的时间
-g 修改用户所属组
-l (小写字母 l ) 修改用户账号名称
-L 锁定用户密码,使密码失效
-s 修改用户登录后使用的shell
-u 修改用户 id
-U 解除密码锁定

用户组管理

  • 每个用户都有一个用户组,如歌创建时未指派,那么系统会以用户账号名作为该用户的用户组
  • 创建用户时,将该账号的用户组信息同步到 /etc/group 文件中
添加用户组
  • 用户组可以在创建用户的同时默认设置,也可由用户主动添加
  • 若 选项 缺省,那么新增用户组 id 为 上一条未指定 用户组 id 加 1

groupadd命令

格式: groupadd 【选项】 用户组名

groupadd命令常用选项

选项 说明
-g 指定新建用户组id
-r 创建系统用户组,组 id 1——499
-o 允许创建组 id 已存在的用户组

案例一: 创建一个用户组 id 为 555 的用户组,用户组名 people

用户与用户组_第7张图片

删除用户组

groupdel 命令

格式: groupdel 用户组名

案例一: 删除用户组 people

用户与用户组_第8张图片

修改用户组属性

groupmod命令

格式:groupmod 【选项】 【用户组】

groupdel命令选项

选项 说明
-g 为用户指定新的组id
-n 修改用户组名
-o 运行组 id 不唯一

案例一:修改 cc 组的id为 666 ,并且修改其用户组名为 zwj。

用户与用户组_第9张图片

用户组切换

创建用户时提供了-g 与 -G 选项,分别用于指定用户的所属组和附加组。

两个概念:

基本组:

  • 若创建用户时,没有指定用户组,那么自动创建的用户组就是基本组
  • 若在某个用户的目录中创建文件,文件所属组就是用户基本组

附加组:

  • 通过 -G 选项可以在用户创建的时候指定附加组
  • 除基本组外,用户所在的组都是附加组
  • 指定附加组,可以使用户拥有对应组的权限

用户可以重附加组中移除,但不能重基本组中移除

newgrp命令:

格式: newgrp 用户组名

用户切换

su命令切换

  • 可以在任意用户之间进行切换
  • 普通用户切换到目标用户要输入密码,而root用户切换到其它用户不需要输入密码
  • 在命令行输入 exit 或 su -user 可以退出特权模式
  • 格式: su 【选项】 用户名

su命令常用选项

选项 说明
-c 执行完指定命令后,切换回原来用户
-l 切换用户时切换到对应工作目录,环境变量随值改变
-m,-p 切换用户时不改变幻境变量
-s 指定要执行的Shell
-(只有一个杠) 与选项 -l 类型

例:

用户与用户组_第10张图片

sudo命令

  • 使用 sudo 命令提高了系统的安全性
    sudo 可以视为受限 su, 它能使部分用户使用其他用户的身份执行命令
  • 若要使用 root 身份,需要将用户名添加到 /etc/sudoers 文件中,存在于该目录文件中,只需要使用自己的密码就可以使用root身份
  • 添加操作到 /etc/sudoers 文件是root用户完成
  • root用户要使用其他用户身份,不需要输入密码
  • 密码匹配正确后,五分钟内有效,操作5分钟需要再次输入密码

格式:sudo 【选项】 -u 用户 【命令】

sudo 命令常用选项

选项 说明
-b 后台执行命令
-h 显示帮助
-H 将 HOME 环境变量设置为新身份的HOME环境变量
-k 结束密码的有效期限
-l 列出目前用户可执行与无法执行的命令
-p 改变询问密码的提示符号
-s 执行指定的Shell
-u 以指定的用户作为新的身份,即切换到指定用户,默认为 root

sudoers文件的编辑:

  • sudoers 文件是有一定语法规范的,所以一般不采用 vi/vim 编辑器直接进行编辑
  • 通常采用 visudo 命令打开 sudoers 文件,实质上还是使用 vi 编辑器。但是该命令可以同一时间只能有一个用户修改该文件。并且保存退出时,还会进行语法检查。

案例一: 通过 root 用户编辑 sudoers 文件

1:使用 su 命令 切换至 root 用户
在这里插入图片描述

2:sudoers 文件内容中可以找到如下语句
用户与用户组_第11张图片
ALL 一个特殊关键字,表示任何主机,身份,命令

在 sudoers 文件中设置用户权限格式如下

用户名 主机名称 = (可切换身份) 可执行命令

  • 用户名:只有用户名被写入 sudoers 文件中才能使用 sudo 命令
  • 主机名称:该语句对应的用户名可以从哪些网络主机连接到当前Linux主机。root默认可以来这任何网络主机
  • 可切换身份:该语句的用户可以在哪些用户之间进行切换。root 默认为任何用户
  • 可执行命令: 该语句的用户可以执行哪些命令。命令为绝对路径。root默认可以使用任何命令

案例二:创建一个用户 cc ,并设置密码。让该用户属于 china 用户组,并且设置用户id为666,组id 555
使 cc 用户能一 root 的身份使用 more 命令。

用户与用户组_第12张图片
在这里插入图片描述
用户与用户组_第13张图片

以用户组的形式改变权限:

打开 sudoers 文件,有如下内容
在这里插入图片描述
表名:任何加入用户组wheel 的用户 都能通过任意主机连接且任何身份执行任意命令(%标识 wheel 为一个用户组)
#表示注释,使用时要去掉

sudo执行流程:

  • 用户使用sudo命令时,系统先去查找/etc/sudoers 文件中用户是否有执行sudo权限,若有,输入密码,否则错误提示
  • 当前用户为root用户、切换的用户为当前用户、被设置为无须提供密码就可使用sudo命令-------这几种情况,可以不输入密码

补充

用户信息查询

id 命令

格式:: id 用户名
在这里插入图片描述

whoami命令

格式:whoami
在这里插入图片描述

你可能感兴趣的:(Linux编程基础)