Linux系统下的用户管理模式
本文以属于Linux系统基本概念,如果以查找教程教程,解决问题为主,只需要查看本文后半部分。
如需要系统性学习请查看本文前半部分。
文章目录
- Linux系统下的用户管理模式
- 1. Linux下用户的概念
- 2. 创建不同类型的用户
- 2.1 创建用户useradd命令基本用法
- 2.1 useradd举例说明
- 3. 删除用户userdel命令
- 3.1 创建用户useradd命令基本用法
- 3.2 userdel举例说明
- 4. 创建用户组groupadd
- 4.1 创建用户组groupadd基本用法
- 4.2 groupadd举例说明
- 5. 删除用户组groupdel
- 5.1 删除用户组groupdel命令基本用法
- 5.2 groupdel举例说明
- 6. 答疑
- 6.1 删除组会删除用户吗
- 6.2 创建用户时默认创建组吗
- 6.3 如果在创建用户时没有配置相关信息,后续应该怎样修改
- 6.4 创建的用户和用户组的配置文件存放位置?
- 6.5 如何给普通用户配置sudo权限?
- 6.6 如何给普通用户配置免密操作sudo
1. Linux下用户的概念
linux是分时多用户操作系统。可以同时为几个、几十个甚至几百个用户服务。也就是同时可以有多个账号登录。一个linux终端可以登录多个用户,一个用户可以在多个Linux终端同时登录。
tips:我们常用的Windows操作系统是一个分时单用户操作系统。同时一个WIndows系统只能登录一个用户。一个WIndows用户只能在一个WIndows终端登录。
在Linux系统中,相关的概念主要有用户(用UID来标识,UID从0开始)和用户组两种(用GID来标识,GID从0开始).
- 用户账户用户账户包括用户名、密码、用户ID(UID)、组ID(GID)、用户主目录、shell等信息。用户账户用于登录系统并执行操作。
- 用户ID (UID):每个用户账户都有一个唯一的UID,范围从0开始。UID为0的用户具有超级用户权限,通常称为root。普通用户的UID一般从1000开始(在某些系统中可能是1001或更高)。
- 组和组ID (GID):除了用户账户外,Linux还支持用户组。用户可以属于多个组,每个组也有一个唯一的GID。组用于简化权限管理,同一组内的用户共享相同的权限。
- 权限:Linux使用文件和目录权限来控制用户对系统资源的访问。每个文件和目录都有关联的读、写和执行权限,这些权限可以针对所有者、所属组和其他用户进行设置。
- sudo命令:sudo允许普通用户以root或其他用户的身份执行命令,从而实现更细粒度的权限控制和管理。
- 虚拟用户和虚拟组:Linux系统中存在一些用于特定服务或目的的虚拟用户和组,如nobody、messagebus等,它们通常不对应实际的登录用户。
- 用户配置文件:每个用户账户都有一个家目录,其中包含各种配置文件和数据文件。此外,系统级的配置文件(如/etc/passwd、/etc/group)存储了所有用户和组的信息。
下图为部分不同类型用户的权限和特点。我们一般登录使用的root用户为超级用户。拥有系统的所有权限,也可以直接免密登录任何用户。
用户类型 | UID范围 | 特点与权限 |
超级用户(Root) | 0 | - 拥有系统最高权限 - 可以对所有文件系统操作,包括增加、注销用户 - 可以执行任何命令和操作 |
系统用户 | 1–499 | - 通常用于运行系统守护进程或服务 - 不期望登录 - 限制访问和操作权限 |
普通用户 | 500–65534 | - 用于日常操作和应用 - 权限受限,需要通过sudo获取额外权限 |
客户端用户 | (nobody) | - 特殊用户,用于无特权操作或来宾账户 - 权限极低,仅能访问特定资源 |
2. 创建不同类型的用户
2.1 创建用户useradd命令基本用法
创建用户一般使用useradd
命令来创建
2.1 useradd举例说明
登录到xianggu用户
在创建用户时,使用useradd -m 可以自动指定用户家目录为/home/xxx/
,我们可以使用useradd -d /路径 在指定用户家目录
3. 删除用户userdel命令
3.1 创建用户useradd命令基本用法
删除用户一般使用userdel
命令
3.2 userdel举例说明
一般情况下,我们删除用户使用userdel 用户
即可,但这样并不会删除用户的家目录
4. 创建用户组groupadd
4.1 创建用户组groupadd基本用法
groupadd
是Linux系统中用于创建新用户组的命令。在多用户操作系统中,用户组用于管理对系统资源的访问权限,允许一组用户共享相同的权限集。
注意事项
- 在创建用户组时,建议选择一个尚未被系统或其他组使用的GID,以避免潜在的权限冲突。
- 用户组的GID通常应该位于系统定义的范围内,避免与系统保留的GID范围冲突。
- 创建用户组后,可以通过
usermod
命令将现有用户添加到这个新组中,或者在创建新用户时使用-g
或-G
选项将用户直接添加到该组。
4.2 groupadd举例说明
例如我想要创建一个用户组 newgroup ,设置GID为10010,将xianggu添加到组中
查看xianggu用户的信息,是否属于newgroup组
可以看到xianggu属于xianggu组,也属于newgroup组。拥有两个组的权限。但是xianggu组是xianggu的主组,newgroup是附加组
5. 删除用户组groupdel
5.1 删除用户组groupdel命令基本用法
5.2 groupdel举例说明
删除用户组newgroup
6. 答疑
6.1 删除组会删除用户吗
删除一个用户组本身并不会直接删除用户。在Linux系统中,用户和用户组是分开管理的。当你使用groupdel
命令删除一个用户组时,它仅从系统中移除了那个特定的组,但不会影响到任何用户的账户状态。
然而,如果删除的组是某个用户的主组(primary group),那么情况会有所不同。在这种情况下,大多数Linux发行版会在删除主组时报告错误,因为一个用户必须属于至少一个组。
6.2 创建用户时默认创建组吗
当在Linux系统中使用useradd
命令创建一个新用户时,如果不指定用户所属的组,系统会默认创建一个与该用户名同名的组作为该用户的主组(也被称为私有组或默认组)
6.3 如果在创建用户时没有配置相关信息,后续应该怎样修改
修改用户权限需要使用管理员权限才能执行,在命令前通常需要加上
sudo
- 修改用户密码: 使用
passwd
命令可以修改用户密码。作为管理员,可以直接修改任何用户的密码,而普通用户只能修改自己的密码。例如:
输入新密码两次即可完成修改。
- 修改用户主目录: 使用
usermod
命令可以改变用户的主目录。例如:
这里/new/home/directory
是要设置的新主目录路径。
- 修改用户组: 可以使用
usermod
命令将用户添加到或从组中移除。例如,将用户添加到一个新组:
移除用户从一个组:
- 设置用户过期时间: 使用
chage
命令可以设置用户账户的过期时间。例如,设置用户账户在2024年1月1日过期:
- 设置用户密码过期时间: 同样使用
chage
命令可以设置用户密码的有效期。例如,设置用户密码90天后过期:
- 更改用户的UID/GID: 使用
usermod
命令可以更改用户的UID(User ID)或GID(Group ID)。例如,更改用户的UID:
更改用户的主组(GID):
- 更改用户登录Shell: 使用
usermod
命令可以更改用户登录时默认使用的shell。例如,更改用户的登录shell为bash:
6.4 创建的用户和用户组的配置文件存放位置?
-
/etc/passwd
: 这个文件包含系统中所有用户的账号信息。每一行代表一个用户,字段包括用户名、密码占位符、用户ID(UID)、组ID(GID)、用户全名、主目录和登录Shell。密码在这里实际上并不存储明文,而是存储一个占位符,真正的密码存储在/etc/shadow
文件中(对于加密密码)。 -
/etc/shadow
: 这个文件存储用户的加密密码以及其他密码相关的策略信息,如密码的最后修改时间、密码过期时间等。这是为了增加系统的安全性,防止非授权访问。 -
/etc/group
: 类似于/etc/passwd
,这个文件包含了系统中所有用户组的信息。每一行代表一个组,字段包括组名、密码占位符、组ID(GID)和组成员列表。 -
/etc/sudoers
: 这个文件定义哪些用户和用户组可以使用sudo
命令,并规定了他们可以执行的命令和目标主机等。这是一个非常重要的文件,用于控制系统的超级用户权限。 -
/etc/login.defs
: 这个文件包含登录和密码管理的默认策略和参数,例如密码过期时间、密码尝试次数限制等。
6.5 如何给普通用户配置sudo权限?
这里以给xianggu
用户添加sudo权限为例
在root账号下或者其他具有sudo权限的用户下
- 编辑sudoers文件:
这将使用默认的文本编辑器打开/etc/sudoers
文件。
- 找到相关行: 在文件中找到类似下面的一行:
快捷操作:在命令模式下,输入
/root
,按回车,既可以在文件中搜索root,然后按n
,可以搜索下一个root字符
这行表示root用户可以在所有主机上以任何用户身份执行任何命令。
- 添加用户到sudoers: 在文件的适当位置(通常是文件末尾)添加一行,格式如下:
将用户名
替换为你希望给予sudo权限的用户名称。这样,该用户就能以root权限执行命令。
- 保存并退出: 编辑完成后,保存文件并退出编辑器。在
vi
编辑器中,你可以使用Esc
键回到命令模式,然后输入:wq!
来保存并退出。
6.6 如何给普通用户配置免密操作sudo
这里以给xianggu
用户添加免密sudo权限为例
在root账号下或者其他具有sudo权限的用户下
- 编辑sudoers文件:
这将使用默认的文本编辑器打开/etc/sudoers
文件。
- 找到相关行: 在文件中找到类似下面的一行:
快捷操作:在命令模式下,输入
/root
,按回车,既可以在文件中搜索root,然后按n
,可以搜索下一个root字符
这行表示root用户可以在所有主机上以任何用户身份执行任何命令。
- 添加用户到sudoers: 在文件的适当位置(通常是文件末尾)添加一行,格式如下:
将用户名
替换为你希望给予sudo权限的用户名称。这样,该用户就能以root权限执行命令。
如果想要给某个组添加sudo免密权限,则需要如下配置
- 保存并退出: 编辑完成后,保存文件并退出编辑器。在
vi
编辑器中,你可以使用Esc
键回到命令模式,然后输入:wq!
来保存并退出。