本文介绍了在Linux系统中如何有效地管理和操作用户及组的相关知识,包括创建、删除以及修改等基本命令。
### Linux 用户与组管理
#### 一、用户及组的基础概念
1. **超级用户 (root)**:
- UID:0
- GID:0
- 拥有最高权限,可以访问系统中的所有文件并执行任何操作。
2. **普通用户**:
- UID:1000-60000
- GID:1000-60000
- 创建的用户通常具有有限的权限,并可以通过`sudo`命令临时获取root权限。
3. **UID (User ID)**:
- 用户标识符,用于区分不同的用户。
- 每个用户都有唯一的UID,且不能重复。
4. **GID (Group ID)**:
- 组标识符,用于区分不同的组。
- 每个组有唯一的GID。
5. **组**:
- **基本组**:创建用户时自动生成的组,作为用户的默认组。
- **附加组**:允许用户加入多个附加组以增强权限管理灵活性。
#### 二、用户配置文件
1. **/etc/passwd**
- 存储非敏感信息如用户名和UID等。
- 每行代表一个用户,字段包括用户名、密码占位符、UID、GID等。
- 示例格式:`username:x:UID:GID:User Info:Home Directory:Login Shell`
2. **/etc/group**
- 存储组信息,每行代表一个组,包含组名和成员列表。
- 示例格式:`groupname:x:GID:user1,user2`
3. **/etc/shadow**
- 包含用户的密码及其他敏感数据如过期日期等。
- 仅root用户可以访问。
#### 三、用户管理命令
1. **创建用户 (useradd)**
- `useradd [选项] 用户名`
- 示例:`useradd -u 2000 -G group -s /bin/bash susa`
常用的选项包括:
`-u UID`: 设置用户的UID。
`-G 组名`: 添加用户到附加组。
`-g 组名`: 设定基本组。
`-s 登录shell`: 指定登录时使用的默认shell。
2. **设置密码 (passwd)**
- `passwd 用户名`
- 示例:`passwd susa`
3. **删除用户 (userdel)**
- `userdel [-r] 用户名`
- 选项示例:
`-r`: 同步移除用户的家目录及所有文件。
#### 四、组管理命令
1. **创建组 (groupadd)**
- `groupadd [选项] 组名`
- 示例:`groupadd -g 2000 group`
常用的选项包括:
`-g GID`: 设置组GID。
2. **删除组 (groupdel)**
- `groupdel 组名`
- 示例:`groupdel group`
3. **查询用户身份信息 (id)**
- `id 用户名`
- 显示用户的UID、GID和所属的组列表。
#### 五、文件目录权限及归属
1. **查看文件目录权限 (ls -l)**
示例:`ls -l`
输出格式:`权限 硬链接数 所属用户 所属组 文件大小 文件名`
2. **修改文件或目录的访问控制**
3. **设置权限 (chmod)**
- `chmod [选项] 权限 文件/目录`
- 选项示例:
`-R`: 对子目录及其中的所有文件递归执行。
示例:`chmod u+w aa.txt`
4. **修改属主和组 (chown)**:
- `chown [选项] 属主[:属组] 文件/目录`
- 示例:`chown root:group AA`
#### 六、示例配置命令
1. **创建组 group 并添加用户 aa 和 bb**
```sh
groupadd group
useradd -G group aa
useradd -G group bb
```
2. **创建文件 abc.txt 且设置权限**:
```sh
touch abc.txt
chown aa abc.txt
chmod u=rwx,g=rx,o-r abcd.txt
chown :group abcd.txt
chmod g+w abcd.txt
chmod o-r abcd.txt
```
3. **文件 ACL 权限**
- 设置用户及组权限的命令:
```sh
setfacl -m u:username:rwx 文件或目录
setfacl -m g:groupname:rw 文件或目录
```
示例:设置文件 aa.txt 对于用户 aa 具有读