Linux之用户和用户组

用户和用户组的概念

Linux是一个多用户系统,要使用系统资源就必须在系统内拥有合法的用户账号, Linux系统可以存在多个用户,但是需要使用唯一的用户名来区分不同的用户,同时所有非系统用户(root用户)都需要设置密码才可以登录到系统。

就是同一个Linux系统里面可以有多个账号,每个账号对应一个文件(里面存放着这个账号的所有东西),文件都是账号自己私有的,除了root账户可以进入非root账户,其它的非root账户是无法进入非root账户的,非root账户进入root账户需要密码。

Linux系统只能使用数字来记录用户,在实现上,Linux系统采用一个32位的整数来记录用户,这意味着在一套 Linux系统中最多可以记录40亿个不同的用户,这个用来区分不同用户的数字被称为 user id,简称UID。

在 Linux系统中,有三类用户,分别是根用户普通用户系统用户

  • 根用户又叫root:它的UID为0,也是系统中的超级用户,拥有至高无上的权限,可以进入其他的所有普通用户,并且不需要密码
  • 普通用户是:Linux的真实用户(有root用户分配),这类用户可以通过用户名和密码登录到Linux系统中,通常普通用户的UID大于500
  • 系统用户:系统运行时的一些特殊用户,这类用户往往不能登录到系统中,但是一些进程需要使用这类用户运行。

Linux系统中还存在用户组,顾名思义,用户组就是来对用户进行分组的,用户组也是用数字来区分的,即 Group ID,简称为GID。

UID和GID之间存在某些关系,比如 Centos系统在创建用户时,系统会在创建这个用户的同时,创建一个同名的用户组,这个用户组也会得到一个唯一的GID,并且默认情况下UID的值等于GID,创建出来的这个用户默认属于这个用户组。

注意:用户组除了在创建用户时被创建,也可以独立创建出来,如果之前创建了用户组,创建用户的时候可以直接指定所属的用户组,这样用户组就不会随着用户的创建而创建了

举个例子吧:以学校为例最为合适

在学校里(Linux系统),每个学生(普通用户)都会被分配到一个学号(UID),这个学号一定是唯一的,每个学生都属于一个班级(用户组),在学校班级的名字也是唯一的,如果这个班级就你一个学生(UID)这个时候这个班级的名字用你的学号都可以,一般情况下是不会这样的,所以先有班级(用户组)在按计划招收学生(普通用户),学校的校长(root用户)对每个学生负责(root用户可以操作普通用户),学生之间一般没有负责一说(普通用户不能互相访问),此例子只是一种类比

用户和用户组

在Linux中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中。

在Linux系统中,所创建的用户帐号和其相关信息(密码除外)均是存放在/etc/passwd配置文件中,由于所有用户对passwd文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了/etc/shadow配置文件中,这个配置文件只有root用户有权限,其他用户读的权限都没有

  • 下图为passwd部分截图:在这里插入图片描述

  • 在passwd文件中,一行定义一个用户帐号,每行均由多个不同的字段构成,各字段值间用:分隔,每个字段均代表该帐号信息,在刚安装完成的Linux系统中,passwd配置文件已有很多帐号信息了,这些帐号是由系统自动创建的,他们是Linux进程或部分服务程序正常工作所需要使用的账户,这些账户的最后一个字段的值一般为/sbin/nologin,表示该帐号不能用来登录Linux系统,也就是所谓的系统账户

  • 在passwd配置文件中,从左至右各字段的对应关系及其含义:

用户帐号用户密码用户ID用户组ID用户名全称用户主目录用户所使用的shell
aismall01x10001000aismall01/home.aismall01/bin/bash

由于passwd不再保存密码信息,所以用x占位代表

  • 若要使某个用户账户不能登录Linux系统,只需设置该用户所使用的shell为/sbin/nologin即可。

比如,对于FTP 账户,一般只允许登录和访问FTP服务器,不允许登录Linux操作系统。

若要让某用户没有telnet权限,即不允许该用户利用telnet远程登录和访问Linux操作系统,则设置该用户所使用的shell为/bin/true即可。

若要让用户没有telnet和ftp登录权限,则可设置该用户的 shell为/bin/false。

在/etc/shells文件中,若没有/bin/true或/bin/false,则需要手动添加
注意:只有root用户才有权限修改这个文件

查看用户和用户组

先说一个下如何查看用户和用户组,这样方便后面的演示:

cat /etc/passwd :查看所有用户的列表

w :查看当前活跃的用户列表

cat /etc/group :查看所有用户组

groups :查看当前登录用户

whoami :查看当前登录用户名

groups 用户名:查看用户所属的组

创建用户组:groupadd

用户和用户组属于多对多关系,一个用户可以同时属于多个用户组,一个用户组可以包含多个不同的用户

注意:该命令只能在root账户下使用
在这里插入图片描述
语法:groupadd [参数选项] 用户组名称

  • 若命令带有-r参数,则创建系统用户组,该类用户组的GID值小于500
  • 若没有-r参数,则创建普通用户组,其GID值大于或等于500.

举例:添加一个名字为AISMALL的组

groupadd AISMALL

修改用户组属性:groupmod

用户组创建后,根据需要可对用户组的相关属性进行修改,对用户组属性的修改,主要是修改用户组的名称和用户组的GID值。

注意:该命令只能在root账户下使用
在这里插入图片描述
举例1:改变用户组的名称,可使用带-n参数

groupmod -n 新用户组名 原用户组名

groupmod -n AISMALL01 AISMALL

注意:对于用户组改名,不会改变其GID的值

举例2:重设用户组的GID,但不能与已有用户组的GID值重复,可以使用-g参数

groupmod -g 新GID 用户组名称

groupmod -g 1120 AISMALL

注意:对GID进行修改,不会改变用户名的名称

删除用户组:groupdel

删除用户组时,被删除的用户组不能是某个账户的私有用户组,否则将无法删除,若要删除,则应先删除引用该私有用户组的账户,然后再删除用户组。

注意:该命令只能在root账户下使用
在这里插入图片描述
举例:删除AISMALL用户组

groupdel 用户组名

groupdel AISMALL

添加用户:useradd

在这里插入图片描述
命令语法:

  • useradd [option] username

  • 该命令的option选项较多,下面在详细介绍一下:

    • -d:主目录 ,指定用来取代默认的的主目录,例如:/home/aismall01
    • -m :若主目录不存在,则创建它,-r与-m相结合,可为系统账户创建主目录
    • -M :不创建主目录
    • -e :指定账户过期的日期,日期格式为MM/DD/YY
    • -f: 帐号过期几日后永久停权,若指定为-,则立即被停权,若为-1,则关闭此功能
    • -g : 指定将用户加入到哪个用户组,该用户组必须存在
    • -G :用户组列表,指定用户同时加入的用户组列表,各组用逗分隔
    • -n :不为用户创建私有用户组
    • -s :指定用户登录时使用的shell,默认为/bin/bash
    • -r :创建一个用户ID小于500的系统账户,默认不创建对应的主目录
    • -u :手动指定新用户的ID值,该值必须唯一,且大于499
    • -p :为新建用户指定登录密码

举例:创建一个名为aismall02的用户,并作为AISMALL用户组的成员

useradd -g aismall02 AISMALL

注意:添加用户时,若未用-g参数指定用户组,则系统默认会自动创建一个与用户帐号同名的私有用户组,若不需要创建该私有用户组,则可选用-n参数。

举例:添加一个名为aismall03的账户,但不指定用户组

useradd aismall03

系统自动创建了名为aismall02的用户组,可以在/etc/passwd中查看

创建用户账户时,系统会自动创建该用户对应的主目录,该目录默认放在/home目录下,若要改变位置,可以利用-d参数指定,对于用户登录时使用的shell,默认为/bin/bash,一般不做更改

举例:我们一般创建用户的格式为,指定创建用户的用户名,目录,密码

useradd aismall04 -d /aismall04 -p 123456

不同普通用户无法相互访问

我们先常见三个用户(注意:在root账户下创建):

useradd test01 -d /test01 -p 123456

useradd test02 -d /test02 -p 123456

useradd test03 -d /test03 -p 123456

在这里插入图片描述
这就是权限,看到了吗,root管理员多么的优秀,难道普通用户就不能通过努力也变得优秀吗,答案是否可以,继续向下看看。

修改用户属性:usermod

对于已创建好的用户,可使用usermod命令来修改和设置账户的各项属性,包括登录名,主目录,用户组,登录shell等。
在这里插入图片描述
语法:

usermod [option] username

举例1:更改帐户名,使用-l参数

usermod -l 新用户名 原用户名

usermod -l aismall02 aismall01

若也要更改为/home/aismall02,则可通过执行以下命令来实现:
usermod -l aismall02 aismall01 -d /home/aismall02

举例2:锁定账户,若要临时禁止用户登录,可将该用户账户锁定。锁定账户可利用-L参数

usermod -L 要锁定的账户

注意:Linux锁定用户,是通过在密码文件shadow的密码字段前加“!”来标识该用户被锁定。

举例3:解锁账户,要解锁账户,可以使用-U参数

usermod -U 要解锁的账户

删除账户:userdel

在这里插入图片描述
语法:

userdel [-r] 帐户名

  • -r:若带上该参数,则在删除该账户的同时,一并删除该账户对应的主目录。

  • 若要设置所有用户账户密码过期的时间,则可通过修改/etc/login.defs配置文件中的PASS_MAX_DAYS配置 项的值来实现,其默认值为99999,代表用户账户密码永不过期,其中PASS_MIN_LEN配置项用于指定账户密码的最小长度,默认为5个字符。

设置用户登录密码:passwd

使用passwd命令来设置,其命令用法为:

passwd [帐户名]

  • 若指定了帐户名称,则设置指定账户的登录密码,原密码自动被覆盖,只有root用户才有权设置指定账户的密码,一般用户只能设置或修改自己账户的密码(不带参数)。

锁定/解锁账户密码

在Linux中,除了用户账户可被锁定外,账户密码也可被锁定,任何一方被锁定后,都将无法登录系统,只有root用户才有权执行该命令,锁定账户密码使用带-l参数的passwd命令,其用法为:

passwd -l 帐户名

passwd -u 帐户名 #解锁账户密码

查询密码状态

要查询当前账户的密码是否被锁定,可以使用带-S参数,其用法为:

passwd -S 账户名

删除账户密码

如要删除账户的密码,使用带-d参数的passwd命令来实现,该命令也只有root用户才有权执行,其用法为:

passwd -d 帐户名

注意: 帐户密码被删除后,将不能登录系统,除非重新设置密码。

添加用户到指定的组/从指定的组中移除用户:gpasswd

可以将用户添加到指定的组,使其成为该组的成员,其实现命令为:

gpasswd -a 用户账户 用户组名

若要从用户组中移除某用户,其实现命令为:

gpasswd -d 用户账户 用户组名

设置用户组管理员

添加用户到组和从组中移除某用户,除了root用户可以执行该操作外,用户组管理员也可以执行该操作。

要将某用户指派为某个用户组的管理员,可使用以下命令来实现;

gpasswd -A 用户账户 要管理的用户组

  • 命令功能:将指定的用户设置为指定用户组的用户管理员,用户管理员只能对授权的用户组进行用户管理(添加用户到组或从组中删除用户),无权对其他用户组进行管理。

  • 另外, id命令用于显示当前用户的uidgid和所属的用户组的列表
    在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彤彤的小跟班

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值