diff --git a/wiki/operating-system/Linux/基础/Linux 用户和权限.md b/wiki/operating-system/Linux/基础/Linux 用户和权限.md new file mode 100644 index 00000000..83619862 --- /dev/null +++ b/wiki/operating-system/Linux/基础/Linux 用户和权限.md @@ -0,0 +1,407 @@ +--- +title: Linux 用户和权限 +description: Linux 用户和权限 +keywords: +- Linux +- 用户 +- 权限 +tags: +- Linux +sidebar_position: 4 +author: 7Wate +date: 2023-03-30 +--- + +## 概述 + +Linux 多用户系统的历史可以追溯到 1960 年代的 Unix 系统,Unix 是一种多用户、多任务的操作系统,被广泛应用于大型计算机和服务器上。随着 Linux 的发展,它也成为了一种强大的多用户操作系统,并被广泛应用于服务器、个人电脑和移动设备等领域。 + +Linux 多用户系统的设计基于以下原则: + +- 每个用户都有一个唯一的标识符(UID),用于标识其身份。 +- 每个用户可以分配到一个或多个用户组(Group),用户组也有一个唯一的标识符(GID)。 +- 每个文件和目录都有一个所有者(Owner)和一个所属用户组(Group),用于控制访问权限。 +- 每个用户都有一个主目录(Home Directory),用于存储其个人文件和设置。 +- 系统管理员可以创建、删除和管理用户和用户组,以及控制用户的权限和访问权限。 + +Linux 多用户系统的实现基于以下机制: + +- 用户和用户组的信息存储在特定的配置文件中,如 /etc/passwd、/etc/shadow、/etc/group 和 /etc/gshadow。 +- 用户登录时需要进行身份验证,通常使用用户名和密码进行认证。 +- 系统管理员可以使用命令行工具或图形界面来创建、删除和管理用户和用户组,以及配置用户的权限和访问权限。 +- Linux 系统提供了许多安全机制,如访问控制列表(ACL)、文件系统权限和 SELinux 等,用于保护系统和用户的数据安全。 + +目前随着云计算、容器化和虚拟化技术的发展,Linux 多用户系统的方向也在不断发展。未来的趋势包括: + +- 更加丰富和灵活的权限管理机制,如更细粒度的 ACL 和更灵活的访问控制策略。 +- 更加集成和自动化的用户和权限管理工具,如自动化用户创建和删除、自动化权限管理和集成用户和权限管理工具等。 +- 更加安全和可靠的身份验证机制,如双因素身份验证和基于生物识别的身份验证等。 +- 更加简单和易用的图形界面和命令行工具,以方便用户进行用户和权限管理操作。 + +Linux 多用户系统具有强大的用户和权限管理功能,可以帮助管理员有效地管理系统和保护用户数据的安全。管理员可以使用命令行工具或图形界面来创建、删除和管理用户和用户组,以及配置用户的权限和访问权限。 + +在使用 root 用户时,应注意系统的安全性,并使用 `sudo` 或 `su` 命令以普通用户身份执行命令。文件和目录的权限由三个组件组成,每个组件可以设置为读取、写入和执行权限,这些权限用数字表示。 + +在 Linux 系统中,有多个配置文件存储用户和权限信息,包括 `/etc/passwd`、`/etc/shadow`、`/etc/group`、`/etc/gshadow`、`/etc/login.defs` 和 `/etc/adduser.conf` 等文件。 + +## 用户 + +### 创建 + +#### useradd + +`useradd` 命令是 Linux 系统中的一个命令行工具,用于创建新用户帐户。通过 `useradd` 命令,可以指定新用户的用户名、用户 ID(UID)、主目录、默认 shell 和密码等信息。 + +在大多数 Linux 系统中,只有管理员用户(如 root 用户)可以创建新用户。通常情况下,管理员用户需要使用 `sudo` 命令或以 root 用户身份登录系统,才能使用 `useradd` 命令创建新用户。 + +```shell +# 创建一个新用户 +sudo useradd john +``` + +| 选项 | 描述 | 示例 | +| ------------------------------ | --------------------------------------------------- | -------------------------------------- | +| `-c, --comment COMMENT` | 指定用户的注释字段。 | `sudo useradd -c "John Smith" john` | +| `-d, --home-dir HOME_DIR` | 指定用户的家目录。 | `sudo useradd -d /home/john john` | +| `-e, --expiredate EXPIRE_DATE` | 指定用户的账户过期日期。 | `sudo useradd -e 2023-06-30 john` | +| `-f, --inactive INACTIVE` | 设置密码过期后的不活动期限为 INACTIVE,以禁用账户。 | `sudo useradd -f 30 john` | +| `-g, --gid GROUP` | 指定用户的主用户组。 | `sudo useradd -g staff john` | +| `-G, --groups GROUPS` | 指定用户所属的其他用户组。 | `sudo useradd -G staff,developer john` | +| `-m, --create-home` | 创建用户的家目录。 | `sudo useradd -m john` | +| `-p, --password PASSWORD` | 指定用户的加密密码。 | `sudo useradd -p password_hash john` | +| `-s, --shell SHELL` | 指定用户的默认 shell。 | `sudo useradd -s /bin/bash john` | +| `-u, --uid UID` | 指定用户的 UID。 | `sudo useradd -u 1001 john` | + +### 管理 + +#### id + +`id` 命令用于显示用户和用户组的标识信息。它可以用于查看当前用户或指定用户的 UID(用户标识符)、GID(组标识符)和所属用户组的名称。 + +```shell +debian@SevenWate-PC:$ id +uid=1000(debian) gid=1000(debian) groups=1000(debian),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev) +``` + +#### whoami + +`whoami` 命令用于显示当前登录用户的用户名。它是一个非常简单的命令,通常用于 shell 脚本和命令行中,以便在需要当前用户的用户名时快速获取它。 + +```shell +debian@SevenWate-PC:$ whoami +debian +``` + +#### chfn + +`chfn`(Change Finger)命令用于修改用户信息。该命令可以用来更改用户的全名、办公室电话、家庭电话、其他说明等信息。 + +```shell +# 更改当前用户信息 +debian@SevenWate-PC:$ chfn +Password: +Changing the user information for debian +Enter the new value, or press ENTER for the default + Full Name: + Room Number []: + Work Phone []: + Home Phone []: +``` + +| 选项 | 描述 | 示例 | +| ------------------- | -------------------------- | ---------------------------------------------- | +| `-f, --full-name` | 更改用户的全名。 | `chfn --full-name "John Doe" [username]` | +| `-h, --home-phone` | 更改用户的家庭电话号码。 | `chfn --home-phone "123-456-7890" [username]` | +| `-o, --other` | 更改用户的其他说明。 | `chfn --other "这是一个测试用户" [username]` | +| `-r, --room-number` | 更改用户的办公室电话号码。 | `chfn --room-number "555-1234" [username]` | +| `-u, --uid` | 更改用户的 UID。 | `chfn --uid 1001 [username]` | +| `-c, --comment` | 更改用户的注释字段。 | `chfn --comment "这是一个测试用户" [username]` | + +#### chsh + +`chsh` (Change Shell)命令是 Linux 系统中的一个命令行工具,用于更改用户的默认 shell。默认情况下,用户登录后会进入一个特定的 shell 环境,该环境定义了用户与系统交互的方式。`chsh` 命令可用于更改用户的默认 shell,从而改变用户与系统交互的方式。 + +```shell +# 查看当前系统 shell +cat /etc/shells + +# 更改当前用户的默认 shell +chsh -s /bin/bash + +# 更改其他用户的默认 shell +chsh -s /bin/bash john +``` + +#### passwd + +`passwd` (Password)命令是 Linux 系统中的一个命令行工具,用于更改用户的密码或口令。默认情况下,每个 Linux 用户都有一个口令或密码来保护其账户的安全性。`passwd` 命令可用于更改密码或口令。 + +```shell +# 更改当前用户的 +passwd + +# 更改其他用户的密码 +passwd john +``` + +| 选项 | 描述 | 示例 | +| -------------- | -------------------------------------- | --------------------------- | +| `-l, --lock` | 锁定用户的账户,禁止用户登录。 | `sudo passwd --lock john` | +| `-u, --unlock` | 解锁用户的账户,允许用户登录。 | `sudo passwd --unlock john` | +| `-d, --delete` | 删除用户的密码或口令,允许无密码登录。 | `sudo passwd --delete john` | +| `-e, --expire` | 强制用户在下一次登录时更改密码或口令。 | `sudo passwd --expire john` | +| `-S, --status` | 显示用户密码或口令的状态。 | `passwd --status john` | + +#### usermod + +`usermod`(User Modify)命令是 Linux 系统中的一个命令行工具,用于修改用户的属性或配置。`usermod` 命令允许您更改现有用户的用户名、UID、主目录、默认 shell 等信息,还可以将用户添加到其他用户组中。 + +| 选项 | 描述 | 示例 | +| ------------------------------ | --------------------------------------------------- | ------------------------------------ | +| `-c, --comment COMMENT` | 指定用户的注释字段。 | `sudo usermod -c "John Smith" john` | +| `-d, --home HOME_DIR` | 指定用户的家目录。 | `sudo usermod -d /home/newhome john` | +| `-e, --expiredate EXPIRE_DATE` | 指定用户的账户过期日期。 | `sudo usermod -e 2023-06-30 john` | +| `-f, --inactive INACTIVE` | 设置密码过期后的不活动期限为 INACTIVE,以禁用账户。 | `sudo usermod -f 30 john` | +| `-g, --gid GROUP` | 指定用户的主用户组。 | `sudo usermod -g staff john` | +| `-aG, --add-subgroups` | 将用户添加到附加组 | `sudo usermod -aG audio john` | +| `-l, --login NEW_LOGIN` | 更改用户的登录名。 | `sudo usermod -l newname john` | +| `-p, --password PASSWORD` | 指定用户的加密密码。 | `sudo usermod -p password_hash john` | +| `-s, --shell SHELL` | 指定用户的默认 shell。 | `sudo usermod -s /bin/bash john` | +| `-u, --uid UID` | 指定用户的 UID。 | `sudo usermod -u 1001 john` | + +### 删除 + +#### userdel + +`userdel`(User Delete)命令是 Linux 系统中的一个命令行工具,用于删除现有用户帐户。默认情况下,`userdel` 命令仅删除用户的帐户,而不删除用户的主目录和邮件箱。如果需要删除用户的主目录和邮件箱,可以使用 `-r` 选项。 + +```shell +# 删除一个用户 +sudo userdel john +``` + +| 选项 | 描述 | 示例 | +| -------------- | -------------------------------------------------- | ---------------------- | +| `-f, --force` | 强制删除用户,即使用户当前已登录或有未完成的进程。 | `sudo userdel -f john` | +| `-r, --remove` | 删除用户及其主目录。 | `sudo userdel -r john` | + +## 用户组 + +### 创建 + +#### groupadd + +`groupadd` 命令是 Linux 系统中的一个命令行工具,用于创建新的用户组。管理员用户(如 root 用户)可以使用 `groupadd` 命令创建新组。 + +```shell +# 创建一个新组 +sudo groupadd newgroup +``` + +| 选项 | 描述 | 示例 | +| --------------------- | ------------------------------------------------------------ | ------------------------------------------ | +| `-g, --gid GID` | 指定新组的 GID。如果未指定,系统会自动分配一个未使用的 GID。 | `sudo groupadd -g 1001 newgroup` | +| `-K, --key KEY=VALUE` | 指定要应用于新组的 SELinux 标签。 | `sudo groupadd -K "type=staff_u" newgroup` | +| `-r, --system` | 创建一个系统组,该组的 GID 小于 1000,且不会在登录屏幕上显示。 | `sudo groupadd -r newgroup` | + +### 管理 + +#### groups + +`groups` 命令是 Linux 系统中的一个命令行工具,用于显示当前用户所属的用户组。如果没有指定用户名,则 `groups` 命令将显示当前用户所属的用户组。 + +```shell +# 显示当前用户所属的用户组 +groups + +# 显示指定用户所属的用户组 +groups john +``` + +#### gpasswd + +`gpasswd` (Group Password)命令是 Linux 系统中的一个命令行工具,用于管理用户组的密码和成员列表。管理员用户(如 root 用户)可以使用 `gpasswd` 命令来添加或删除用户组的成员,或者设置或删除用户组的密码。 + +```shell +# 设置组密码 +sudo gpasswd newgroup +``` + +| 选项 | 描述 | 示例 | +| ------------------------------- | ------------------------------------------------------------ | ------------------------------------ | +| `-a, --add USER` | 将指定的用户添加到指定的用户组中。 | `sudo gpasswd -a john newgroup` | +| `-d, --delete USER` | 从指定的用户组中删除指定的用户。 | `sudo gpasswd -d john newgroup` | +| `-M, --members USER1,USER2,...` | 将指定的用户列表设置为指定组的成员。 | `sudo gpasswd -M john,jane newgroup` | +| `-r, --remove-password` | 从指定的用户组中删除密码。 | `sudo gpasswd -r newgroup` | +| `-R, --restrict` | 启用限制模式。在此模式下,只有组的所有者和管理员才能更改组成员身份。 | `sudo gpasswd -R newgroup` | + +#### groupmod + +`groupmod` (Group Modify)命令是 Linux 系统中的一个命令行工具,用于修改已有用户组的属性,例如组 ID、组名称和组密码等。管理员用户(如 root 用户)可以使用 `groupmod` 命令来更改用户组的属性。 + +| 选项 | 描述 | 示例 | +| -------------------------- | ---------------------------- | -------------------------------------- | +| `-g, --gid GID` | 将组的 GID 设置为指定的值。 | `sudo groupmod -g 1001 newgroup` | +| `-n, --new-name NEW_GROUP` | 将组的名称更改为指定的名称。 | `sudo groupmod -n newgroup2 newgroup` | +| `-o, --non-unique` | 允许使用非唯一 GID 创建组。 | `sudo groupmod -o newgroup` | +| `-p, --password PASSWORD` | 将组密码设置为指定的密码。 | `sudo groupmod -p mypassword newgroup` | + +### 删除 + +#### groupdel + +`groupdel` (Group Delete)是 Linux 系统中的一个命令行工具,用于删除一个用户组。删除用户组时,系统会自动将该组的所有成员从该组中删除,并将文件和目录中的组 ID 更改为其他组。 + +```shell +# 删除一个用户组 +sudo groupdel newgroup +``` + +| 选项 | 描述 | 示例 | +| ----------------------- | ---------------------------------- | -------------------------------------------- | +| `-f, --force` | 强制删除用户组,即使该组仍有成员。 | `sudo groupdel -f newgroup` | +| `-h, --help` | 显示命令帮助信息。 | `groupdel -h` | +| `-R, --root CHROOT_DIR` | 在指定的 chroot 环境中运行命令。 | `sudo groupdel --root /mnt/newroot newgroup` | +| `-v, --verbose` | 显示命令详细输出。 | `sudo groupdel -v newgroup` | + +## root 超级用户 + +在 Linux 系统中,root 是超级用户,具有完全的系统管理权限。root 用户可以执行任何命令,并访问系统中的所有文件和资源。在默认情况下,root 用户的密码是空的,因此在安全性方面需要额外注意。 + +### su + +`su`(Switch User)命令是 Linux 系统中的一个命令行工具,它允许您在不注销当前用户的情况下切换到其他用户帐户。默认情况下,`su` 命令切换到超级用户帐户(root)。 + +```shell +# 默认切换 root +su + +# 切换到 debian +su debian +``` + +| 选项 | 描述 | 示例 | +| ----------------------- | ------------------------------------------------------------ | ----------------------- | +| `-c, --command COMMAND` | 在切换到另一个用户后执行指定的命令或脚本。 | `su -c "ls -l" user1` | +| `-s, --shell SHELL` | 指定要使用的 shell,而不是默认 shell。 | `su -s /bin/bash user1` | +| `-l, --login` | 在切换用户时模拟完整的登录过程,包括加载环境变量、切换工作目录等。 | `su -l user` | + +### sudo + +在 Linux 系统中,`sudo` 命令可以让普通用户以超级用户的权限执行某些命令。要使用 `sudo` 命令,首先需要创建一个具有 `sudo` 权限的用户。以下是创建 `sudo` 用户的步骤: + +```shell +1.创建用户 +sudo adduser username + +2.将用户添加到 sudo 组 +sudo usermod -aG sudo username + +3.检查用户是否已成功添加到 sudo 组 +groups username + +4.确认用户可以使用 sudo 命令 +sudo -l -U username +``` + +| 选项 | 描述 | 示例 | +| ----------------------- | ------------------------------------------------------------ | --------------------------------------- | +| `-u, --user USER` | 指定要切换到的用户。 | `sudo -u user1 ls -l` | +| `-g, --group GROUP` | 指定要切换到的组。 | `sudo -g group1 ls -l` | +| `-k, --reset-timestamp` | 重置 `sudo` 命令的时间戳。 | `sudo -k` | +| `-v, --validate` | 验证 `sudo` 命令的权限,但不执行任何命令。 | `sudo -v` | +| `-l, --list [COMMAND]` | 显示 `sudo` 命令当前用户的授权信息,或显示指定命令的授权信息。 | `sudo -l` 或 `sudo -l /usr/bin/apt-get` | +| `-h, --help` | 显示 `sudo` 命令的帮助信息。 | `sudo -h` | +| `-V, --version` | 显示 `sudo` 命令的版本信息。 | `sudo -V` | + +### newusers + +`newusers` 是一个 Linux 系统命令,用于批量创建新的用户账号。 + +该命令可以从指定的文件中读取一组用户信息,每行包括用户名、密码、用户ID、主组ID、全名、主目录、默认 shell 等字段。`newusers` 会自动创建这些用户账号,并设置相应的密码、主目录和 shell。 + +```shell +-------------------- user.txt -------------------- +user1:x:1001:1001:User One:/home/user1:/bin/bash +user2:x:1002:1002:User Two:/home/user2:/bin/bash +user3:x:1003:1003:User Three:/home/user3:/bin/bash +-------------------------------------------------- + +# 读取 user.txt 批量创建用户 +newusers user.txt +``` + +| 选项 | 描述 | 示例 | +| ---------------------- | -------------------------- | ------------------------------------------------------------ | +| `-u, --uid` | 指定起始用户ID | `newusers -u 1000 users.txt` | +| `-g, --gid` | 指定起始组ID | `newusers -g 1000 users.txt` | +| `-c, --comment` | 指定用户的注释信息 | `newusers -c "User One" users.txt`, `newusers --comment "User One" users.txt` | +| `-s, --shell` | 指定新用户的默认 shell | `newusers -s /bin/bash users.txt`, `newusers --shell /bin/bash users.txt` | +| `-H, --no-create-home` | 禁止创建用户主目录 | `newusers -H users.txt`, `newusers --no-create-home users.txt` | +| `-N, --no-user-group` | 禁止创建与用户名同名的主组 | `newusers -N users.txt`, `newusers --no-user-group users.txt` | + +### chpasswd + +`chpasswd` 命令用于批量修改用户的密码,可以一次性修改多个用户的密码,而不需要逐个输入密码。它可以从标准输入、文件或命令行参数中读取用户密码信息,并将其应用于指定的用户账户。 + +```shell +-------------------- users.txt -------------------- +user1:password1 +user2:password2 +-------------------------------------------------- + +# 将 user1 的密码修改为 password1 +echo 'user1:password1' | chpasswd + +# 批量更新,使用 md5 加密方式 +sudo chpasswd -m < users.txt +``` + +| 选项 | 描述 | 示例 | +| -------------------- | -------------------------- | -------------------------------------------- | +| `-e, --encrypted` | 指定密码已加密 | `chpasswd -e < users.txt` | +| `-h, --help` | 显示帮助信息并退出 | `chpasswd --help` | +| `-m, --md5` | 指定密码以 MD5 格式加密 | `chpasswd -m < users.txt` | +| `-c, --crypt-method` | 指定密码加密方法 | `chpasswd --crypt-method SHA512 < users.txt` | +| `-R, --root` | 以 root 权限运行命令 | `sudo chpasswd --root` | +| `-u, --update` | 仅更新现有用户的密码 | `chpasswd -u < users.txt` | +| `-I, --inactive` | 指定密码失效时间,单位为天 | `chpasswd --inactive 7 < users.txt` | + +### pwck、grpck + +`pwck` (Password Check)和 `grpck` (Group Check)命令是 Linux 系统中用于检查 `/etc/passwd`、`/etc/shadow` 和 `/etc/group` 等文件的格式和完整性的工具。这些命令可以帮助系统管理员查找和修复这些文件中的错误,以确保系统的安全性和稳定性。 + +- 用户配置文件:`/etc/passwd` 文件是 Linux 系统中存储用户信息的文件之一。该文件包含每个用户的用户名、用户 ID、主目录、登录 shell 等信息。 + +- 用户密码配置文件:`/etc/shadow` 文件是 Linux 系统中存储用户密码信息的文件之一。该文件包含每个用户的密码哈希值、最后一次更改密码的日期等信息。 + +- 用户组配置文件:`/etc/group` 文件是 Linux 系统中存储用户组信息的文件之一。该文件包含每个用户组的名称、组 ID 和组成员列表等信息。 + +- 用户组密码配置文件:`/etc/gshadow` 文件是 Linux 系统中存储用户组密码信息的文件之一。该文件包含每个用户组的密码哈希值、管理员列表和成员列表等信息。 + +- 默认配置文件:`/etc/login.defs` 文件是 Linux 系统中存储默认登录选项的文件之一。该文件包含默认的密码长度、最大尝试登录次数等信息。 + +- 配置文件:`/etc/adduser.conf` 文件是 Linux 系统中存储新用户默认配置选项的文件之一。该文件包含新用户的默认主目录、默认 shell 等信息。 + +| 选项 | 描述 | 示例 | +| ---------------- | ------------------------ | --------------------------------------- | +| `-r, --root DIR` | 指定要检查的根目录 | `pwck/grpck -r /mnt` | +| `-s, --silent` | 安静模式,只输出错误信息 | `pwck/grpck -s /etc/passwd /etc/shadow` | +| `-q, --quiet` | 安静模式,不输出信息 | `pwck/grpck -q /etc/passwd /etc/group` | +| `-n, --nocheck` | 不检查用户主目录和组文件 | `pwck/grpck -n /etc/passwd /etc/shadow` | + +### pwconv、pwunconv、grpconv、grpunconv + +`pwconv`(Password Conversion)、`pwunconv`(Password unConversion)、`grpconv` (Group Conversion)和 `grpunconv`(Group unConversion) 命令是 Linux 系统中的用于转换密码文件和组文件格式的工具。这些工具可以帮助系统管理员将 `/etc/passwd`、`/etc/shadow` 和 `/etc/group` 等文件的格式转换为其他格式或者将已转换的文件恢复为原始格式。 + +这些工具的作用如下: + +- `pwconv` 命令:将 `/etc/passwd` 和 `/etc/shadow` 文件的格式从标准格式(包括用户名、密码和 UID 等信息)转换为 shadow 格式(将密码单独存储在 `/etc/shadow` 文件中)。 +- `pwunconv` 命令:将 `/etc/passwd` 和 `/etc/shadow` 文件的格式从 shadow 格式转换为标准格式。 +- `grpconv` 命令:将 `/etc/group` 文件的格式从标准格式(包括组名、组密码和 GID 等信息)转换为 Gshadow 格式(将组密码单独存储在 `/etc/gshadow` 文件中)。 +- `grpunconv` 命令:将 `/etc/group` 文件的格式从 Gshadow 格式转换为标准格式。 + +这些工具的用途包括但不限于: + +- 提高系统的安全性:使用 shadow 格式将用户密码单独存储在 `/etc/shadow` 文件中,可以防止未经授权的用户访问密码信息,提高系统的安全性。 +- 管理用户和组的身份验证:通过转换和恢复密码和组文件格式,可以更轻松地管理用户和组的身份验证信息,例如更改密码、添加或删除用户和组等操作。 diff --git a/wiki/operating-system/Linux/基础/Linux 软件包管理器.md b/wiki/operating-system/Linux/基础/Linux 软件包管理器.md index 901c2949..d76e7b16 100644 --- a/wiki/operating-system/Linux/基础/Linux 软件包管理器.md +++ b/wiki/operating-system/Linux/基础/Linux 软件包管理器.md @@ -57,17 +57,17 @@ dpkg 的主要设计理念是简单、稳定、可扩展。它旨在为 Debian | 命令 | 说明 | | ------------------------------- | ---------------------------------------------------------- | -| dpkg -i | 安装一个 DEB 软件包 | -| dpkg -r | 移除一个已安装的软件包,但保留配置文件 | -| dpkg -P | 完全移除一个已安装的软件包,包括配置文件 | -| dpkg -L | 列出已安装软件包的所有文件 | +| dpkg -i package.deb | 安装一个 DEB 软件包 | +| dpkg -r package_name | 移除一个已安装的软件包,但保留配置文件 | +| dpkg -P package_name | 完全移除一个已安装的软件包,包括配置文件 | +| dpkg -L package_name | 列出已安装软件包的所有文件 | | dpkg -l | 列出所有已安装的软件包 | -| dpkg -s | 显示已安装软件包的状态信息 | -| dpkg -S | 查询指定文件属于哪个软件包 | +| dpkg -s package_name | 显示已安装软件包的状态信息 | +| dpkg -S file_path | 查询指定文件属于哪个软件包 | | dpkg --get-selections | 获取当前系统上所有软件包的安装状态 | | dpkg --set-selections | 从文件或标准输入中读取软件包状态信息,设置相应软件包的状态 | -| dpkg --configure | 配置一个尚未配置的软件包 | -| dpkg --unpack | 解包 DEB 文件,但不配置软件包 | +| dpkg --configure package_name | 配置一个尚未配置的软件包 | +| dpkg --unpack package.deb | 解包 DEB 文件,但不配置软件包 | | dpkg --print-architecture | 显示当前系统的架构 | ### 选项 @@ -89,7 +89,7 @@ dpkg 的主要设计理念是简单、稳定、可扩展。它旨在为 Debian | --force-<选项> | 强制执行某些操作,如 --force-depends 强制忽略依赖问题 | | --no-act | 模拟操作,不实际执行 | | --refuse-<选项> | 拒绝执行某些操作 | -| --ignore-depends= | 安装或删除软件包时忽略指定的依赖关系 | +| --ignore-depends=package_name | 安装或删除软件包时忽略指定的依赖关系 | ## APT @@ -174,19 +174,19 @@ RPM未来发展方向主要包括提高与其他软件包管理系统的兼容 | 命令 | 功能描述 | | ------------------------------- | ------------------------------- | -| rpm -i | 安装指定的 RPM 软件包 | -| rpm -U | 升级指定的 RPM 软件包 | -| rpm -e | 卸载指定的 RPM 软件包 | +| rpm -i package.rpm | 安装指定的 RPM 软件包 | +| rpm -U package.rpm | 升级指定的 RPM 软件包 | +| rpm -e package_name | 卸载指定的 RPM 软件包 | | rpm -qa | 查询所有已安装的 RPM 软件包 | -| rpm -q | 查询指定 RPM 软件包的安装状态 | -| rpm -qi | 显示指定 RPM 软件包的详细信息 | -| rpm -qf | 查询指定文件属于哪个 RPM 软件包 | -| rpm -ql | 列出指定 RPM 软件包中的所有文件 | -| rpm -qp --scripts | 显示指定 RPM 软件包的脚本信息 | -| rpm -qR | 显示指定 RPM 软件包的依赖关系 | -| rpm -V | 验证指定 RPM 软件包的完整性 | -| rpm -ivh | 安装指定的 RPM 软件包并显示进度 | -| rpm -Uvh | 升级指定的 RPM 软件包并显示进度 | +| rpm -q package_name | 查询指定 RPM 软件包的安装状态 | +| rpm -qi package_name | 显示指定 RPM 软件包的详细信息 | +| rpm -qf file_path | 查询指定文件属于哪个 RPM 软件包 | +| rpm -ql package_name | 列出指定 RPM 软件包中的所有文件 | +| rpm -qp package.rpm --scripts | 显示指定 RPM 软件包的脚本信息 | +| rpm -qR package_name | 显示指定 RPM 软件包的依赖关系 | +| rpm -V package_name | 验证指定 RPM 软件包的完整性 | +| rpm -ivh package.rpm | 安装指定的 RPM 软件包并显示进度 | +| rpm -Uvh package.rpm | 升级指定的 RPM 软件包并显示进度 | ### 选项 @@ -237,18 +237,18 @@ Yum 的设计理念是易用、灵活、可扩展。Yum 提供了一个简单的 | -------------------------------- | -------------------------------- | | yum check-update | 检查可用更新 | | yum update | 更新已安装的软件包 | -| yum install | 安装指定软件包 | -| yum remove | 卸载指定软件包 | -| yum search | 搜索包含指定关键字的软件包 | -| yum info | 显示指定软件包的详细信息 | +| yum install package_name | 安装指定软件包 | +| yum remove package_name | 卸载指定软件包 | +| yum search keywords | 搜索包含指定关键字的软件包 | +| yum info package_name | 显示指定软件包的详细信息 | | yum list | 列出所有可安装软件包的信息 | | yum clean all | 清理软件包缓存和元数据 | -| yum deplist | 显示指定软件包的依赖关系 | +| yum deplist package_name | 显示指定软件包的依赖关系 | | yum history | 显示软件包操作历史记录 | -| yum downgrade | 降级指定软件包到较旧的版本 | -| yum provides | 查找提供指定文件的软件包 | -| yum groupinstall | 安装指定的软件包组 | -| yum groupremove | 卸载指定的软件包组 | +| yum downgrade package_name | 降级指定软件包到较旧的版本 | +| yum provides file_path | 查找提供指定文件的软件包 | +| yum groupinstall package_group | 安装指定的软件包组 | +| yum groupremove package_group | 卸载指定的软件包组 | | yum repolist | 显示已启用的所有软件包仓库的列表 | ## DNF diff --git a/wiki/programming-language/Python/进阶/项目实践/虚拟环境/概述.md b/wiki/programming-language/Python/进阶/项目实践/虚拟环境/概述.md index e5fc56cb..e109d691 100644 --- a/wiki/programming-language/Python/进阶/项目实践/虚拟环境/概述.md +++ b/wiki/programming-language/Python/进阶/项目实践/虚拟环境/概述.md @@ -20,7 +20,7 @@ date: 2023-01-1 - [virtualenv](https://virtualenv.pypa.io/):一款老牌、成熟的虚拟环境管理工具。 - [Poetry](https://python-poetry.org/):一个面向未来的 Python 依赖管理和打包工具。 - [pipenv](https://pipenv.pypa.io/):一个较新的结合 pip 和 virtualenv 的虚拟环境管理工具。 -- [Conda]([docs.conda.io/projects/conda/](https://docs.conda.io/projects/conda/)):一个跨平台的包(或库)和虚拟环境管理系统。 +- [Conda](https://docs.conda.io/projects/conda/):一个跨平台的包(或库)和虚拟环境管理系统。 | 工具 | 优点 | 缺点 | 不同点 | | ---------- | ------------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------------ |