在CentOS这一类的Linux发行版中,用户与组权限管理是系统安全和资源分配的核心机制之一。通过精细的权限设定,系统管理员能够确保不同用户根据其角色和职责获得适当的系统访问权限,从而保障数据安全和系统稳定运行。本文将深入解析CentOS中用户、组权限、以及用户管理的基本操作命令。
### 一、用户账户与组账户
#### 1. 用户账户分类
Linux系统支持多用户多任务操作,其中用户账户分为两类:
- **普通用户账户**:拥有有限的系统权限,通常无法执行对系统有重大影响的操作。
- **超级用户账户**(即root账户):具有最高级别的权限,可以对系统进行任何操作。
#### 2. 组账户
组账户是用户账户的集合,用于方便地管理一组具有相似权限需求的用户。CentOS中存在两种类型的组:
- **私有组**:当创建一个新用户时,如果没有明确指定其所属的组,系统会自动为其创建一个与用户名同名的私有组,该组仅包含该用户。
- **标准组**:可容纳多个用户,允许用户同时属于多个组,便于权限的灵活分配。
### 二、账户系统文件
Linux环境下的账户信息主要存储在以下四个文件中:
- `/etc/passwd`:记录了用户的基本信息,如用户名、UID(用户标识号)、GID(组标识号)、用户家目录等。
- `/etc/shadow`:存储用户的加密密码及密码相关策略信息,对普通用户不可读。
- `/etc/group`:记录了组账户的信息,包括组名、GID和组成员。
- `/etc/gshadow`:类似于`/etc/shadow`,但针对组账户,存储组密码和组权限信息。
### 三、用户与组管理命令
#### 1. 用户管理
- `useradd`:用于添加新用户。
- `usermod`:用于修改现有用户的属性,如更改家目录、用户名等。
- `userdel`:用于删除用户,使用`-r`选项可以一同删除用户的家目录。
#### 2. 组管理
- `groupadd`:用于创建新的组。
- `groupmod`:用于修改现有组的属性,如更改组名。
- `groupdel`:用于删除组。
### 四、口令管理
- `passwd`:用于设置或更改用户密码。
- `passwd -l 用户名`:锁定用户账户,使其无法登录。
- `passwd -S 用户名`:显示用户账户密码状态。
- `passwd -u 用户名`:解锁用户账户。
- `passwd -d 用户名`:删除用户密码,使用户无需密码即可登录。
- `chage`:用于管理用户密码的时效性,如设置密码最短和最长有效期、到期前警告天数等。
### 五、用户与组状态查询
- `whoami`:显示当前登录的用户名。
- `groups 用户名`:显示用户所属的所有组。
- `id`:显示用户的UID、GID以及所属组信息。
- `su – 用户`:切换到其他用户的身份,若省略用户名则切换至root用户。
- `newgrp 组名`:临时将当前用户的组更改为指定的附加组。
### 六、更改文件属主与组
`chown`命令用于更改文件或目录的所有者或所属组:
- `chown 新属主 文件`:更改文件的属主。
- `chown 新属主.新组 文件`:同时更改文件的属主和所属组。
- 使用`-R`选项可递归更改目录及其下所有文件和子目录的所有者和所属组。
### 七、文件权限与目录生成掩码
`umask`命令用于设置新创建文件的默认权限掩码,决定新文件的初始权限。默认情况下,文件的权限由文件所有者、同组用户和其他用户的读写执行权限组成,而`umask`值决定了这些权限哪些不应被赋予。例如,`umask 022`意味着新创建的文件默认权限为644(所有者读写、同组和其他用户只读),而目录的默认权限为755(所有者读写执行、同组和其他用户只读执行)。通过将`umask`命令置于用户的`.bash_profile`文件中,可以全局设置新建文件和目录的权限。
CentOS的用户与组权限管理是系统安全的关键组成部分,熟练掌握相关命令不仅有助于维护系统安全,还能有效提升系统管理和资源分配的效率。