2025年2月28日

静态链接在 Linux 上的工作原理

了解如何使用静态库将多个 C 目标文件组合成单个可执行文件。使用 C 编写的应用程序代码通常具有多个源文件,但最终您需要将它们编译为单个可执行文件。您可以通过两种方式执行此操作:创建静态库或动态库(也称为共享库)。这两种类型的库在创建和链接方式上有所不同。您选择使用哪个取决于您的用例。在上一篇文章中,我演示了如何创建动态链接的可执行文件,这是更常用的方法。在本文中,我将解释如何创建静态链接的可执行文件。使用带有静态库的链接器链接器是将程序的多个部分组合在一起并重新组织它们的内存分配的命令。链接器的功能包括:集成程序的所有部分找出新的记忆组织,使所有部分组合在一起恢复地址,使程序可以在新的内存组织下运行解析符号引用所有这些链接器功能的结果是,创建了一个称为可执行文件的可运行程序。静态库是通过将程序中使用的所有必需的库模块…
2025年2月28日

限制 su 对 Linux 中特权帐户的访问

如何限制 Linux 上的 su 命令仅允许特权帐户(例如管理员用户组)使用? su 实用程序通过 PAM 请求适当的用户凭据并切换到该用户 ID(默认用户是超级用户)。在本文中,我们将了解如何在 Linux 系统中配置 pam 以将 su 限制为仅限某些用户。我们将创建一个组并将 su 的使用限制为该组中的用户。 PAM 用于设置 su 将使用的策略。可以配置为允许不同组的用户通过su访问特定的目标UID。此操作所需的 PAM 模块是:pam_succeed_ifpam_wheel.sopam_listfile.so在本指南结束时我们将完成什么:创建 Linux 群组通话 sysadmins配置 PAM 以允许组中的用户使用 su使用 su 切换为任何其他用户将失败第 1 步:创建组并添加用户我们首先创建两个 Linux 组:sysadmins 和 dbadminssudo grou…
2025年2月28日

解释粘性位:Linux 目录权限中的“t”意味着什么

大多数经验丰富的 Linux 用户已经熟悉基本的文件权限,例如读、写和执行。这些权限存在于每个文件中,管理员通常需要编辑此类权限,以加强安全性或向某些用户授予文件访问权限。您可能不太熟悉的一个不太常见的权限是“粘性位”。 ” 粘滞位是一种特殊类型的 Linux 文件权限。它的工作独立于日常的读、写和执行权限,并且只能在目录中找到(默认情况下很少),不能在文件中找到。准备好了解更多信息了吗?在本教程中,我们将解释 Linux 上粘性位权限背后的含义,解释它的用途,并了解如何在 Linux 系统中的目录上分配它。在本教程中您将学习:Linux文件权限中的粘滞位有什么用?如何为 Linux 中的目录分配粘滞位权限如何检查目录的粘滞位权限Linux Sticky Bit 权限解释粘滞位是一种特殊权限,对文件没有影响。但当在目录上使用时,该目录中的所…
2025年2月28日

添加到 Linux 中的路径

安装了新软件并想从任何地方运行它?您需要修改 PATH 变量。在此快速教程中了解如何添加到路径。如果您已经使用 Linux 一段时间,您可能会熟悉“Linux 中的一切都是文件”,这是非常正确的,因为甚至目录也是文件。但我们必须问的问题是你的系统如何到达你想要执行的文件。该问题的简单答案是显示系统路径,在其中查找可执行文件。这就是PATH变量的作用。但是,您想知道如何将路径添加到 ` PATH 环境变量。好吧,本指南将引导您了解与 ` PATH 变量相关的所有基础知识,包括它是什么以及如何在本地和全局添加路径。` PATH 变量的重要性` PATH 是 Linux 中的一个环境变量,当您尝试打印 ` PATH 变量的值时,您将得到与此类似的结果:echo $PATH您会看到用冒号分隔的多个路径,Linux 将遍历每个路径来查…
2025年2月28日

检测 Linux 系统上正在运行哪个系统管理器

客观的有多个系统管理器可以在您的 Linux 系统上运行。目前最常见的系统管理器是SysV(init)、Systemd和Upstart。如果您不确定您的 Linux 系统上正在运行哪个系统管理器,您可能会发现这个简短的指南对您有用。要求需要对 Linux 系统进行特权访问。困难简单的惯例# – 要求以root权限直接以root用户身份或使用sudo命令执行给定的linux命令$ – 要求以常规非特权用户身份执行给定的 Linux 命令指示系统管理器是 Linux 系统上启动的第一个进程。因此,使用 ps -p 1 命令查看首先启动的进程可以提供一些线索,但没有明确的答案。例子:系统V# ps -p 1 PID TTY TIME CMD 1 ? 00:00:01 init 系统# ps -p 1 PID TTY TIME CMD 1 ? 00:00:04 systemd 暴发户# ps -p 1 PID…
2025年2月28日

检查Linux中的文件访问和修改时间

本教程的目的是展示几种可用于检查 Linux 系统上文件访问和修改时间的命令行方法。请查看下面的示例,我们将介绍用于该工作的多种工具,例如 ls、date、stat 和 find 等。在本教程中您将学习:如何在Linux中检查文件访问和修改时间检查Linux示例中的文件访问和修改时间Linux 命令行附带了几个工具,我们可以使用它们来检查文件访问和修改时间。无需安装任何额外的工具。查看下面的一些示例,了解在 Linux 上检查文件访问和修改时间的各种方法。您知道吗?访问时间是文件最后一次访问(读取或修改)的时间。 修改时间是文件内容最后一次被修改的时间。 更改时间是文件最后一次更改其元数据(例如文件权限或文件名)的时间。Linux stat 命令将向我们显示文件的访问时间、修改时间和更改时间。只需在命令中指定文件的路径即可。 $ stat e…
2025年2月28日

检查 Linux 中的文件系统类型

本教程的目的是展示在 Linux 中检查存储设备的文件系统类型的几种方法。我们将展示用户如何确定已安装和未安装分区的文件系统类型。请参阅下面的各种命令来开始。在本教程中您将学习:如何在 Linux 中检查分区的文件系统类型检查文件系统类型使用以下任意命令来检测您自己的 Linux 系统上分区的文件系统类型。使用df命令和-T(类型)选项可以很容易地检测已安装分区的文件系统类型。$ df -T Filesystem Type 1K-blocks Used Available Use% Mounted on udev devtmpfs 986848 0 986848 0% /dev tmpfs tmpfs 203296 1372 201924 1% /run /dev/sda5 ext4 40503552 8017120 30399264 21% / ... 我们可以使用file命令来检测未…
2025年2月28日

查找 setuid 二进制文件来执行 Linux 服务器强化 - Linux 安全

本教程的目的是在 Linux 上查找 setuid 二进制文件。您的 Linux 服务器安装的软件包很可能比您真正需要的多。更糟糕的是,这些额外的软件包可能包含一些打开了 setuid 和 setguid 的二进制文件。在 Linux 系统上,某些二进制文件具有 setuid 权限,这是一种特殊的 Linux 权限,它会导致可执行文件不以启动它的用户的权限运行,而是以文件所有者的权限运行。如果系统的一个或多个二进制文件设置了 setuid 权限,这可能会导致不必要的风险,因为某些 shell 用户利用此漏洞获取 root 权限可能只是时间问题。在本教程中您将学习:如何在 Linux 上查找 setuid 二进制文件如何从二进制文件中删除 setuid 和 setgid 权限通过消除 setuid 和 setgid 二进制文件来强化服务器按照以下步骤编译系统上具有 setuid 或 s…
2025年2月28日

有关如何在 Linux 中编写基本 udev 规则的教程

客观的了解 udev 背后的基本概念,并学习如何编写简单的规则要求根权限困难中等的惯例# – 需要以root权限执行给定的linux命令 直接以 root 用户身份或使用 sudo 命令$ – 要求以常规非特权用户身份执行给定的 Linux 命令介绍在 GNU/Linux 系统中,虽然设备低级支持是在内核级别处理的,但与它们相关的事件的管理是由 udev 在用户空间中管理的,更准确地说是由 udevd 守护进程。学习如何编写应用于这些事件发生的规则对于修改系统的行为并使其适应我们的需求非常有用。规则是如何组织的Udev 规则定义在扩展名为 .rules 的文件中。这些文件可以放置在两个主要位置: /usr/lib/udev/rules.d 它是用于系统安装规则的目录,/etc/udev/rules。 d/ 保留用于定制规则。定义规则的文件通常以数字作为前缀命名(…
2025年2月28日

有关如何在 Linux 上使用 xargs 命令的示例

xargs Linux 命令允许用户从标准输入执行命令行。如果这听起来令人困惑,那么看一个基本示例可能会更容易。以下命令将使用 xargs 来 cat 由 ls 命令列出的所有文件。 $ ls 1.txt 2.txt 3.txt $ ls | xargs cat this is file1 this is file2 this is file3 在上面的命令中,我们将 ls 命令的输出通过管道传输到 xargs,并使用 cat 命令列出三个文件中每个文件的内容。 xargs 的大多数用途都涉及从不同的命令通过管道传输到它,并利用它连续执行另一个命令。如果您想从其他基本示例开始,请查看我们的 xargs 初学者指南或多线程 xargs 示例。在本指南中,我们将介绍 xargs 命令的各种命令行示例,以便您可以了解如何在 Linux 系统上有效地使用它。请跟随我们了解 xargs 命令的基础知识和更复杂…