linux-用户-用户组
本文由刘遄老师的《Linux就该这么学》摘抄整理而成,写成博客方便自己后期查阅
该书非常棒,语言简练,通俗易懂,非常推荐,你可以点连接去学习~
用户管理
Linux 是一个多用户、多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux 系统安全的则是一系列复杂的配置工作。
本博客即下篇博客将详细讲解以下几点
- 文件的所有者、所属组
- 以及其他人可对文件进行的读(r)、写(w)、执行(x)等操作
- 以及如何在Linux系统中添加、删除、修改用户账户信息
- 我们还可以使用SUID、SGID与SBIT特殊权限更加灵活地设置系统权限功能,来弥补对文件设置一般操作权限时所带来的不足。
- 隐藏权限能够给系统增加一层隐形的防护层,让黑客最多只能查看关键日志信息,而不能进行修改或删除。
- 而文件的访问控制列表(Access Control List,ACL)可以进一步让单一用户、用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权限。
知识储备
1.Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
2.Linux 的用户需要至少要属于一个组
用户
正常在公司是不会给你 root 权限的,就算给你了 root 权限,也不要拿 root 用户直接登录,避免操作失误
正常情况都是使用普通用户登录,然后需要管理员权限的时候再切换
添加用户 useradd
添加的用户要在创建完密码之后才能登录
基本语法
useradd [选项] 用户名
例子:
创建一个普通用户(最简便的写法)
useradd lxx
指定家目录
useradd -d 目录路径 用户名
指定用户组
useradd -g 用户组名 用户名
说明:
创建用户成功后会自动创建和用户名同名的家目录,默认的用户家目录会被存放在/home目录中
useradd 命令的可选参数
参数 | 作用 |
---|---|
-d | 指定用户的家目录(默认为/home/username) |
-e | 账户的到期时间,格式为YYYY-MM-DD. |
-u | 指定该用户的默认UID |
-g | 指定一个初始的用户基本组(必须已存在) |
-G | 指定一个或多个扩展用户组 |
-N | 不创建与用户同名的基本用户组 |
-s | 指定该用户的默认Shell解释器 |
修改用户密码、过期时间、认证信息等 passwd
passwd命令用于修改用户密码、过期时间、认证信息等
基本语法
passwd [选项] 用户名
passwd mac
passwd 指令可选参数
参数 | 作用 |
---|---|
-l | 锁定用户,禁止其登录 |
-u | 解除锁定,允许用户登录 |
--stdin | 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username |
-d | 使该用户可用空密码登录系统 |
-e | 强制用户在下次登录时修改密码 |
-S | 显示用户的密码是否被锁定,以及密码所采用的加密算法名称 |
小运用
假设您有位同事正在度假,而且假期很长,那么可以使用passwd命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该命令允许用户登录系统,而不是将其删除。
这样既保证了这段时间内系统的安全,也避免了频繁添加、删除用户带来的麻烦。
删除用户 userdel
基本语法
userdel [选项] 用户名
userdel 用户名 删除用户,保留家目录
userdel -r 用户名 删除用户,不保留家目录
说明
删除用户的时候,其家目录一般会保留下来(实际管理时,用户的家用户也应该保留下来)
userdel 指令可项参数
参数 | 作用 |
---|---|
-f | 强制删除用户 |
-r | 同时删除用户及用户家目录 |
查询用户信息 id
基本语法
id 用户名
用户名不存在
切换用户 su
说明
当用户权限不够时,可以通过 su -
,来通过输入密码切换到高权限用户,比如切换到 root 用户
从高权限用户切换到低权限用户时,不需要密码
基本语法
su 用户名
su - 用户名 切换用户
exit 返回原来用户
注销用户
备注:在图形界面无效
logout
小练习
- 创建一个 lxx 的用户并指定密码
- 切换到 lxx
- 切换回root用户
用户组
Linux 为了方便管理权限,引入了用户组的概念,我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或者指定任务
假设有一个公司中有多个部门,每个部门中又有很多员工。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设置权限。例如,可以通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的数据库信息等。
科普
在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。
如果该用户以后被归纳入其他用户组,则这个其他用户组称之为扩展用户组。
一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。
创建用户组 groupadd
说明
为了能够更加高效地指派系统中各个用户的权限,在工作中常常会把几个用户加入到同一个组里面,这样便可以针对一类用户统一安排权限。
就好比:技术组、运维组
增加组
groupadd [选项] 组名
删除组
groupdel 组名
前提:组内不能有用户,否则无法删除
修改用户的组
Linux系统中的一切都是文件
因此在系统中创建用户也就是修改配置文件的过程
用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息
诸如用户的UID、基本/扩展用户组、默认终端等。
基本指令
usermod [选项] 组名 用户名
usermod 命令可选参数
参数 | 作用 |
---|---|
-c | 填写用户账户的备注信息 |
-d -m | 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去 |
-e | 账户的到期时间,格式为YYYY-MM-DD |
-g | 变更所属用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户禁止其登录系统 |
-U | 解锁用户,允许其登录系统 |
-s | 变更默认终端 |
-u | 修改用户的UID |
用户配置文件 /etc/passwd
这是用户的配置文件,记录着用户的各种信息
每行含义
root:x:1:0:root:/root:/bin/bash
用户名:口令(不显示):用户id:组id:注释性描述:主目录:Shell
口令配置文件 /etc/shadow
口令配置文件
存用户密码和相关时间的地方(有权限要求)
组的配置文件 /etc/group
组的配置文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构