linux 用户和组管理
https://zhuanlan.zhihu.com/p/30252309
https://wenku.baidu.com/view/a2d3503bf9d6195f312b3169a45177232f60e41d.html
https://www.cnblogs.com/sxdcgaq8080/p/7498906.html (详细)
一、前言
Linux 的安全性很高,它完善的用户和权限管理机制功不可没。
妥善管理好 Linux 系统上的用户和组是 Linux 系统管理员的义务。
本文以 CentOS 7.4.1708 为例,其他 Linux 发行版部分内容可能会有所不同。
===============================================================
读取r:允许查看⽂件内容、显⽰⽬录列表
写⼊w:允许修改⽂件内容,允许在⽬录中新建、移动、删除⽂件或⼦⽬录
可执⾏x: 允许运⾏程序、切换⽬录
===============================================================
二、用户管理
2.1 用户的类型
在 Linux 系统中,有三种用户。
2.1.1 超级用户
用户名为 root,用户 ID 为 0。有着至高无上的权限,可执行所有任务,可访问所有文件,可管理所有用户。
在服务器配置工作完毕后,为了安全,不应该直接使用超级用户。
2.1.2 普通用户
用户 ID 默认从 1000 开始。供普通用户使用。
2.1.3 系统服务用户
用户 ID 默认为 1-499。仅供系统服务使用,默认不可登录(即默认 SHELL 为 /sbin/nologin)。
2.2 查看本机用户信息
2.2.1 /etc/passwd
文件的格式如下:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
该文件以 : 作为字段分隔符,保存了本机所有用户的基本信息。以下详细说明其含义。
在早期的 Linux 系统中,密码是保存在这个文件里的。但是该文件默认所有用户都可读,会对系统安全造成威胁。现在,密码都以散列的形式存储在了 /etc/shadow 中了。
2.2.2 /etc/shadow
文件的格式如下:
root:$6$3Cprk6.h$Ied2v...:17438:0:99999:7:::
bin:*:17110:0:99999:7:::
...
该文件默认的权限为 000,也就是所有用户都不可访问(root 肯定可以访问,但是不建议直接修改此文件)。
该文件同样以 : 作为字段分隔符,保存了本机所有用户有关密码以及安全的信息。以下详细说明其含义。
2.3 添加用户
命令用法
useradd [选项] <用户名>
2.4 删除用户
命令用法
userdel [选项] <用户名>
2.5 修改用户参数
命令用法
usermod [选项] <用户名>
2.6 用户密码及安全管理
命令用法
passwd [选项] <用户名>
2.7 切换到某一用户执行命令
命令用法
sudo [选项] <命令>
三、组管理
3.1 组的概述
组是一类特殊账户,指具有相同或者相似特性的用户集合。
一个用户可以同时属于多个组,其中某个组为该用户的主要组,其他组为该用户的附加组。
而主要组是在用户登录时默认使用的组身份。在创建文件或目录时,若不指定属主,默认使用该组身份。
组的分类以及组 ID 的分布情况与用户基本一致。
每一个组可以由 `root` 指定一个或多个组管理员。
管理员可以添加或删除组中的成员。所有组管理员共用一个管理员密码。
组管理员可以是系统中的任意账户,可以不是组中的成员。
3.2 查看本机组信息
3.2.1 /etc/group
文件的格式如下:
root:x:0:
bin:x:1:
...
该文件以 : 作为字段分隔符,保存了本机组的基本信息。以下详细说明其含义。
在早期的 Linux 系统中,组管理员密码是保存在这个文件里的。但是该文件默认所有用户都可读,会对系统安全造成威胁。现在,密码都以散列的形式存储在了 /etc/gshadow 中了。
3.2.2 /etc/gshadow
文件的格式如下:
root:::
bin:::
...
该文件默认的权限为 200,也就是只有 root 有写权限(root 也肯定可以读)。
该文件同样以 : 作为字段分隔符,保存了本机所有组的组管理员以及管理员密码。以下详细说明其含义。
3.3 添加组
命令用法
groupadd [选项] <组名>
3.4 删除组
命令用法
groupdel <组名>
3.5 修改组参数
命令用法
groupmod [选项] <组名>
3.6 组成员管理
3.6.1 添加一个成员到组中
命令用法
gpasswd -a <用户名> <组名>
3.6.2 从组中删除一个成员
命令用法
gpasswd -d <用户名> <组名>
3.6.3 设置组成员列表
命令用法
gpasswd -M <用户名1>[,<用户名2>,...] <组名>
3.6.4 设置组管理员列表
命令用法
gpasswd -A <用户名1>[,<用户名2>,...] <组名>
3.6.5 设置组管理员密码
命令用法
gpasswd <组名>
3.6.6 删除组管理员密码
命令用法
gpasswd -r <组名>
3.6.7 查看用户加入的组
命令用法
groups [用户名]
若不指定用户名,则查看当前用户加入的组。
3.7 切换用户当前的组身份
命令用法
newgrp <组名>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构