MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Linux 用户和组管理功能详解

2024-12-13 13:34 huorong 精选文章 5 ℃ 0 评论

Linux 用户和组管理是系统管理中一个非常重要的部分。Linux 是多用户操作系统,允许多个用户同时使用一个系统。通过用户和组的管理,管理员可以控制对系统资源的访问权限,确保系统的安全性和资源的合理分配。


在 Linux 中,用户(User)是指具有访问权限和身份的个人,而组(Group)是对用户进行分类的方式。组管理允许管理员将多个用户归入同一个组,并对组进行权限分配。以下是 Linux 用户和组管理的功能详解:


### 1. **用户管理**

Linux 中的每个用户都有一个唯一的用户账号(用户名)和一组关联的属性(如 UID、GID、主目录、Shell 等)。用户管理的功能包括创建、删除、修改用户信息和管理用户权限。


#### **创建用户**

使用 `useradd` 命令创建新用户:

```bash

sudo useradd username

```

- `username` 是要创建的用户名。执行后,系统会创建一个新的用户并分配一个默认的主目录(通常是 `/home/username`)。

- `useradd` 命令的其他常用选项:

- `-m`:创建用户的主目录,如果没有指定,则创建默认主目录。

- `-s`:指定用户的默认 Shell。

- `-G`:将用户添加到一个或多个附加组。

- `-d`:指定用户主目录。

- `-e`:指定账号过期日期。

例如,创建一个用户名为 `john` 的用户,并指定其默认 Shell 为 `/bin/bash`:

```bash

sudo useradd -m -s /bin/bash john

```


#### **修改用户**

使用 `usermod` 命令修改用户的属性:

```bash

sudo usermod -aG groupname username

```

- `-aG`:将用户添加到一个或多个组(不会删除其已有的组)。

- `-d`:修改用户的主目录。

- `-s`:修改用户的默认 Shell。


例如,将用户 `john` 添加到组 `sudo`:

```bash

sudo usermod -aG sudo john

```


#### **删除用户**

使用 `userdel` 命令删除用户:

```bash

sudo userdel username

```

- `-r`:删除用户的主目录及其所有文件。


例如,删除用户 `john` 及其主目录:

```bash

sudo userdel -r john

```


#### **查看用户信息**

查看当前系统中的用户信息,可以查看 `/etc/passwd` 文件,其中存储了所有用户的基本信息:

```bash

cat /etc/passwd

```

每行记录表示一个用户,字段包括:

- 用户名

- 用户密码(加密后的密码,通常是 `x` 或 `*`,实际密码存储在 `/etc/shadow`)

- 用户 ID(UID)

- 用户组 ID(GID)

- 用户描述信息

- 用户主目录路径

- 用户默认 Shell


### 2. **组管理**

组(Group)是多个用户的集合。Linux 通过组管理实现资源和权限的共享。每个用户至少属于一个组,用户所属的默认组通常与用户名相同。


#### **创建组**

使用 `groupadd` 命令创建新组:

```bash

sudo groupadd groupname

```

例如,创建一个名为 `developers` 的组:

```bash

sudo groupadd developers

```


#### **修改组**

使用 `groupmod` 命令修改组的属性:

```bash

sudo groupmod -n newgroupname oldgroupname

```

- `-n`:修改组名。


例如,将 `developers` 组重命名为 `devteam`:

```bash

sudo groupmod -n devteam developers

```


#### **删除组**

使用 `groupdel` 命令删除组:

```bash

sudo groupdel groupname

```


#### **查看组信息**

查看当前系统中的组信息,可以查看 `/etc/group` 文件,其中存储了所有组的信息:

```bash

cat /etc/group

```

每行记录表示一个组,字段包括:

- 组名

- 组密码(一般为空)

- 组 ID(GID)

- 组成员(属于该组的用户列表)


### 3. **用户与组的权限管理**

用户和组管理的重要功能之一就是控制访问权限,Linux 使用文件权限(读、写、执行)来管理对文件和目录的访问。每个文件或目录都有三个权限:

- **所有者权限**(Owner):文件或目录的创建者的权限。

- **组权限**(Group):与文件或目录相关联的组的权限。

- **其他权限**(Others):除文件所有者和组外,其他用户的权限。


#### **查看文件权限**

使用 `ls -l` 命令查看文件或目录的权限:

```bash

ls -l filename

```

输出格式:

```

-rwxr-xr--

```

解释:

- 第一列表示文件类型和权限。

- `r` 表示读取权限。

- `w` 表示写入权限。

- `x` 表示执行权限。

- `-` 表示没有该权限。


#### **修改文件权限**

使用 `chmod` 命令修改文件权限:

```bash

sudo chmod permissions filename

```

- `permissions` 可以是符号模式(如 `rwx`)或数字模式(如 `755`)。

- 数字模式:

- `4` 表示读权限(r)

- `2` 表示写权限(w)

- `1` 表示执行权限(x)

- 权限的数字是三个数值的和(所有者、组、其他)。


例如,给文件 `file.txt` 设置所有者可读写,组用户可读,其他用户只可读:

```bash

sudo chmod 644 file.txt

```


#### **修改文件所属用户和组**

使用 `chown` 命令修改文件的所有者和所属组:

```bash

sudo chown owner:group filename

```

例如,将文件 `file.txt` 的所有者改为 `john`,组改为 `developers`:

```bash

sudo chown john:developers file.txt

```


### 4. **用户与组的其他操作**

#### **切换用户**

使用 `su` 或 `sudo` 命令切换到另一个用户:

```bash

su - username

```

或者

```bash

sudo -u username command

```

例如,切换到用户 `john` 的身份:

```bash

sudo -u john ls /home/john

```


#### **查看当前用户所属的组**

使用 `groups` 命令查看当前用户所属的所有组:

```bash

groups

```


#### **查看某个用户所属的组**

使用 `id` 命令查看某个用户的 UID、GID 及所属的组:

```bash

id username

```


#### **临时添加用户到组**

使用 `gpasswd` 或 `usermod` 临时将用户加入到某个组:

```bash

sudo usermod -aG groupname username

```

例如,将用户 `john` 加入到 `developers` 组:

```bash

sudo usermod -aG developers john

```


#### **组成员管理**

管理员可以在任何时候将用户添加或移除组,但默认情况下,添加组成员需要注销并重新登录才能生效。


### 总结

Linux 用户和组管理是系统管理员日常管理任务中的重要部分。通过合理的用户和组管理,可以更好地控制系统资源的访问权限和安全性。理解用户和组的创建、修改、删除以及权限设置,是有效管理 Linux 系统的基础。在多用户、多任务的 Linux 系统中,用户和组管理的有效性直接影响到系统的安全性和稳定性。

Tags:linux添加用户

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言