借助学校的课程学习了一遍Linux的用户与用户组管理,在这里做一些学习记录
目录
一、用户与用户组的概念
1.1、用户和用户组是什么?
Linux操作系统中设立了用户和用户组的概念,在使用系统资源时必须有身份,因此用户需要先向系统管理员申请一个账号Linux允许多个用户同时登陆操作系统,针对系统中的多名用户,Linux还设计了用户组的概念,为用户指定用户组,可以在需要时方便地对多个用户进行管理。
1.1.1、用户
- 用户是系统中的一个个体,可以是一个人、一个程序或者一个服务。每个用户都有一个唯一的用户名(username)和用户标识号(user ID),用于区分不同的用户。
- 用户拥有自己的家目录(home directory),用于存储个人文件和设置。每个用户都有权限访问自己的家目录以及系统中的其他资源,但这些权限可以通过权限管理进行调整。
例如:假设在一个家庭共享电脑上,父母、孩子和客人可以分别拥有自己的用户账户。每个用户可以有自己的桌面设置、文件和应用程序,而不会互相干扰。
1.1.2、用户组
- 用户组是一组具有相似权限和特权的用户的集合。每个用户可以属于一个或多个用户组,这样他们就可以共享相同的权限和访问资源。
- 用户组有一个唯一的组名(group name)和组标识号(group ID),用于区分不同的用户组。
例如:假设在一个公司的服务器上,有不同的用户组用于区分不同部门的员工,如“市场部”、“开发部”和“财务部”。每个用户被分配到对应的用户组,这样他们就可以共享相同的文件和资源,并且管理员可以更轻松地管理权限。
1.1.3、关系
想象一个大型演唱会中的安检队伍。每个参与者(用户)都有自己的身份证(用户标识号)和姓名(用户名),允许他们进入特定区域或执行特定任务。安检队伍被分为不同的小组(用户组),例如安检人员、票务人员和保安人员。每个小组成员共享相似的权限和责任,例如安检人员负责检查行李,票务人员负责发放门票,而保安人员负责维护秩序。通过分配参与者到不同的小组,活动组织者可以更有效地管理活动并确保安全。
二、用户与用户组管理
2.1、用户管理
2.1.1、添加用户命令
useradd [选项] 用户名
常用选项:
选项 | 说明 |
-d | 指定用户登入时的目录 |
-c | 指定账户的备注文字 |
-e | 指定账号的有效期限 |
-f | 缓冲天数,密码过期时在指定天数后关闭该账号 |
-g | 指定用户所属组 |
-G | 指定用户所属的附加用户组 |
-m | 自动建立用户的登入目录 |
-r | 创建系统账号 |
-s | 指定用户的登陆shell |
-u | 指定用户的用户ID。若添加-0选项,则用户ID可与其它用户重复 |
示例:
useradd zhangsan #创建用户zhangsan
创建用户之后进入homo目录查看,创建用户成功
2.1.2、设置用户密码
passwd [选项] 用户名
常用选项:
选项 | 说明 |
-l | 锁定密码,锁定后密码失效,无法登陆(新用户默认锁定) |
-d | 删除密码,仅系统管理员可使用 |
-S | 列出密码相关信息,仅系统管理员可使用 |
-f | 强行执行 |
示例:
passwd zhangsan #修改用户zhangsan的密码
提示输入新的密码,输入之后点击回车,修改成功
说明:用户M密码统一储存在etc/shadow中,可以输入more /etc/shadow 查看系统用户密码
输入tail -1 /etc/shadow 查看最新添加的用户密码信息
2.1.3、删除用户
该命令可删除指定账户以及与账户相关的文件和信息。
userdel [选项] 用户名
常用选项:
选项 | 说明 |
-f | 强制删除用户,即便该用户为当前用户 |
-r | 删除用户的同时,删除与用户相关的所有文件 |
示例:
userdel zhangsan #删除用户zhangsan
如果不加-rf只会删除用户信息,而不会删除相关文件,输入userdel -rf 删除全部相关信息
2.1.4、修改用户账号
修改用户账号信息,即修改账号的属性,如用户ID、主目录、用户组、登陆shell等。
usermod [选项] 用户名
常用选项:
选项 | 说明 |
-c | 修改用户账号的备注信息 |
-d | 修改用户的登入目录 |
-e | 修改账号的有效期限 |
-f | 修改缓冲天数,即修改密码过期后关闭账号的时间 |
-g | 修改用户所属组 |
-l | 修改用户账号名称 |
-L | 锁定用户密码,使密码失效 |
-s | 修改用户登陆后使用的shell |
-u | 修改用户ID |
-U | 解除密码锁定 |
示例:
usermod -l lisi zhangsan 将zhangsan用户名改为lisi
这里修改了zhangsan的用户名,但是home中的zhangsan并没有修改.
这是因为用户名实际上是修改的,但是对应的文件夹没有修改,使用userdel命令删除zhangsan可以得知zhangsan用户不存在,删除lisi则成功删除.
插入一条:
/etc/passwd 中存储的用户的基本信息,包括:
用户名(Username): 用于登录系统的用户名。
密码占位符(Password Placeholder): 通常是 x,表示密码被存储在 /etc/shadow 文件中,以增加安全性。
用户标识号(UID,User ID): 每个用户都有一个唯一的数值标识符,用于标识用户。
用户组标识号(GID,Group ID): 表示用户所属的主要用户组的标识符。
用户描述信息(User ID Info): 包含一些关于用户的描述性信息,如全名、联系方式等。
家目录(Home Directory): 用户登录后所在的初始目录。
登录 Shell(Login Shell): 用户登录时使用的 Shell 程序。
可以使用vim或者more等 /etc/passwd 查看用户基本信息
2.2、用户组管理
每个用户都有一个用户组,若在创建账户时未指定,那么系统会以用户账号名作为该用户的用户组,并将与该账号同名的用户组同步到/etc/group文件中。
/etc/group中记录的各个组的基本信息
2.2.1、添加用户组
groupadd [选项] 组名
常用选项:
选项 | 说明 |
-g | 指定新建用户组的组ID |
-r | 创建系统用户组,组ID取值范围为1~499 |
-o | 允许创建组ID已存在的用户组 |
示例:
创建一个nuc的组之后查看etc/group中的最新一行,发现添加成功
groupadd nuc #创建一个名为nuc的组
2.2.2、删除用户组
groupdel 用户名
示例:
输入删除之后查看/etc/group中发现删除成功
groupdel nuc #删除nuc组
插入一条:
若用户被创建时没有指定用户组,系统会为用户创建一个与用户名相同的组,这个组就是基本组,若在某个用户的目录中创建文件,文件的所属组,就是用户的基本组;另外可以为用户指定附加组,除基本组之外,用户所在的组都是附加组,为用户指定附加组,可以使用户拥有对应组的权限。
2.2.3、修改组密码
gpasswd 用户组名
示例:
提示输入两次密码之后回车,修改成功
gpasswd nuc #修改nuc组的密码
2.2.3、临时切换用户组
这个切换用户组只是临时切换,当用户退出重进之后工作组就会重置。
newgrp 用户组名
示例:
首先切换用户,这里切换为pdh,然后输入newgrp nuc ,输入密码之后切换成功,使用pdh创建一个a.txt文件之后查看发现工作组已经变为ncu
newgrp nuc #切换工作组为nuc
一个用户同一时刻只能在一个组当中
2.2.4、用户组管理用户
gpasswd [选项] 用户组名
常用选项:
选项 | 说明 |
选项为空时表示给组设置密码 | |
-A user1,... | 将user1等设置为组的管理员 |
-M user1,... | 将user1等加入到群组当中 |
-r | 移除群组的密码 |
-R | 让群组密码失效 |
-a user | 将user加入到群组当中 |
-d user | 将user从群组中移除 |
示例:
将pdh移入nuc,然后移出nuc
gpasswd -a pdh nuc #将pdh移入工作组nuc
gpasswd -d pdh nuc #将pdh移出工作组nuc
这里插一条:
当用户创建文件时,文件的所属组将是用户的基本组,而不是用户当前所属的任何其他附加组。
因此,即使将用户
pdh
添加到组nuc
中,他的基本组仍然是pdh
,除非显式地将文件的所属组更改为nuc
。例如使用newgrp切换至nuc然后创建。
三、用户切换
3.1、su命令
使用su命令切换用户是最简单的用户切换方式
su [选项] 用户名
常用选项:
选项 | 说明 |
-c | 执行完指定的指令后,切换回原来的用户 |
-l | 切换用户的同时,切换到对应用户的工作目录,环境变量也会随之改变 |
-m,-p | 切换用户时,不改变环境变量 |
-s | 指定要执行的shell |
示例:
su pdh #切换至pdh用户
su -c "ll" pdh #切换至pdh用户,执行完ll命令之后退回
注意:
说明:
①使用su命令切换用户时,需要输入的是目标用户的密码,②选项与用户名缺省的情况下,只切换用户,但不改变用户环境
③由root用户切换到其它用户,可以不输入密码
④在命令行输入“exit”或“su -user”可退出目标用户
3.2、sudo命令
sudo [选项] -u 用户命 [命令]
常用选项:
选项 | 说明 |
-b | 在后台执行命令 |
-h | 显示帮助 |
-H | 将HOME环境变量设置为新身份的HOME环境变量 |
-k | 结束密码的有效期限 |
sudo命令可以视为受限的su,它可以使“部分”用户使用其它用户的身份执行命令
四、小结
本文主要讲解了Linux中的用户与用户组的管理以及用户间的切换方式。理解掌握用户与用户组的概念是学习Linux系统的基础,掌握用户切换命令su与sudo能方便对Linux系统的管理,读者应掌握用户与用户组的概念与相关操作,并能熟练运用用户切换命令切换用户。