2025年2月28日

Linux 中的 Watch 命令示例 - Linux 命令行教程

您是否曾经不得不坐在 Linux 终端前重复输入相同的命令,同时等待不同的结果?个人经验中的一个常见示例是在等待某个文件出现在目录中时键入 ls 命令,例如当正在运行的 Bash 脚本预期生成文件时。对于这样的情况,这正是我们在 Linux 中使用 watch 命令的原因。watch 命令将持续运行指定的命令,用更新的输出刷新屏幕,以便您可以监视它以获取您一直在等待的所需更改。正如您可以想象的那样,这比不断地反复点击向上箭头键和Enter方便得多。如果您需要每秒、10 秒或 10 分钟运行相同的命令,这并不重要。使用watch命令指定时间间隔非常容易。您还可以将其配置为在屏幕上突出显示更改的输出,这样您就可以准确地知道何时获得了正在等待的结果。在本指南中,我们将向您展示所有提到的选项以及更多选项。您准备好掌握watch命令并减少命令行垃圾…
2025年2月28日

Linux 中的 Watch 命令:基本示例

Watch 是一个很棒的实用程序,可以自动刷新数据。此命令的一些更常见用途涉及监视系统进程或日志,但它可以与管道结合使用以获得更多功能。Watch 是一个很棒的实用程序,可以自动刷新数据。此命令的一些更常见用途涉及监视系统进程或日志,但它可以与管道结合使用以获得更多功能。watch [options] [command]观看命令示例使用不带任何选项的 watch 命令将使用默认参数 2.0 秒刷新间隔。正如我之前提到的,更常见的用途之一是监视系统进程。让我们将它与 free 命令一起使用。这将为您提供有关我们系统内存使用情况的最新信息。watch free是的,就是这么简单,我的朋友们。Every 2.0s: free pop-os: Wed Dec 25 13:47:59 2019 total used free shared buff/cache avai…
2025年2月28日

Linux 中的 usermod 命令及示例 - Linux 命令行教程

Linux中的usermod命令用于修改用户帐户。特别是,它用于更改已创建帐户的各种属性,因为在 Linux 上创建全新帐户时使用单独的命令。Linux 系统的大多数用户,尤其是管理员,最终都会遇到需要进行一些用户帐户管理的情况。这可能包括从系统中添加或删除用户,或者将用户添加到组中以及从组中删除用户。在本指南中,您将通过示例了解如何在 Linux 中使用 usermod 命令。请按照下面的说明了解可与此命令一起使用的各种选项。在本教程中您将学习:如何在 Linux 上使用 usermod 命令常用选项usermod 命令允许我们修改 Linux 上用户帐户的某些属性。大多数人在需要向组中添加或删除用户时都会第一次接触到此命令,但是您还可以使用 usermod 命令执行更多操作。请参阅下面的一些最常见的示例。Linux 中的 usermod 命令基…
2025年2月28日

Linux 中的 tee 命令及示例 - Linux 命令行教程

任何在命令行上花费了足够时间的 Linux 用户最终都会遇到这样的情况:他们希望同时将标准输出和/或标准错误重定向到一个文件(或多个文件)以及终端。对于如此微不足道的事情,肯定有一种方法可以将我们的输出同时发送到两个地方。这正是 Linux 中 tee 命令的用途。Linux Bash shell 支持将标准输入和标准输出重定向到文件或终端,但不能同时重定向到这两者。如果您遇到这样的功能很有用的情况,您可以将命令的输出通过管道传输到tee。在本指南中,您将通过示例了解如何在 Linux 中使用 tee 命令。请按照下面的说明了解可与此命令一起使用的各种选项。在本教程中您将学习:如何在 Linux 上使用 tee 命令常用选项tee 命令语法简单,用途也非常简单,因此不需要花很长时间就能学会。以下示例将教您有关 tee 命令所需了解的所有信息,以便您能…
2025年2月28日

Linux 中的 tail 命令及示例 - Linux 命令行教程

Linux 中的 tail 命令是查看文本文件时需要的最基本命令之一。如果您是使用命令行的初学者,那么 tail 命令是一个很好的学习命令,还有 head 命令,后者是其相反的命令。 tail 用于打印多个文件或指定文件的最后10行。 tail具有有趣且方便的功能,可以用来监视对文件的更改。tail 特别重要的是,它允许您将其监视功能用于系统管理和脚本编写等目的。尽管 tail 非常重要,但它并不是一个复杂的命令,就像许多其他常用命令一样。tail 仍然比我们迄今为止所描述的更复杂一点,有许多不同的选项可用于列出文件的内容,其中包含更多细微差别和规范。您会发现其中一些选项非常有用,但这并不是说 tail 本身还不能涵盖广泛的管理情况。您可能认为在 GUI 文本编辑器中查看文件会容易得多,但事实并非如此。掌握 tail 命令将使您能够在许多不同的微妙场…
2025年2月28日

Linux 中的 SUID、GUID 和 Sticky Bit 是什么?如何使用它们?

您在文件权限中看到 s 而不是 x 吗? Linux 有一些特殊的文件权限,称为 SUID、GUID 和 Sticky Bit。了解更多关于他们的信息。文件权限和所有权是 Linux 中基本且重要的安全概念。您可能已经熟悉这些术语。它通常看起来像这样:除了这些常规权限之外,还有一些特殊的文件权限,但没有多少 Linux 用户知道它们。为了开始讨论特殊权限,我假设您对基本文件权限有一些了解。如果没有,请阅读我们解释 Linux 文件权限的优秀指南。现在我将向您展示 Linux 文件系统上一些带有新字母的特殊权限。在此示例中,负责更改用户密码的 passwd 命令在我们期望看到 x 或 -< 的同一位置具有字母 s,用于用户权限。需要注意的是,该文件属于 root 用户和 root 组。有了此权限,当您希望特定用户运行某些根脚本时,无需向其授予 sudo 访问权限。什么是SUID?当可执行文件设置了 SUID 位时,这意味着该文件将以与可执行文件所有者相同的权限执行。让我们举一个实际的例子。如果您查看 passwd 命令的二进制可执行文件,您会发现它设置了 SUID 位。linux:~$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 59640 Mar 22 2019 /usr/bin/passwd这意味着任何运行 passwd 命令的用户都将以与 root 相同的权限运行它。有什么好处? passwd命令需要编辑/etc/passwd、/etc/shadow等文件来更改密码。这些文件归 root 所有,并且只能由 root 修改。但由于 setuid 标志(SUID 位),普通用户还可以修改这些文件(由 root 拥有)并更改他/她的密码。这就是为什么您可以使用 passwd 命令更改自己的密码,尽管该命令修改的文件归 root 所有。为什么普通用户不能修改其他用户的密码?请注意,普通用户无法更改其他用户的密码,只能更改自己的密码。但为什么?如果你能以与root具有相同权限的普通用户运行passwd命令并修改/etc/passwd等文件,为什么不能修改其他用户的密码呢?如果您检查 passwd 命令的代码,您会发现它会使用运行该命令的用户的 UID 来检查正在修改密码的用户的 UID。如果不匹配并且该命令不是由 root 运行的,则会抛出错误。setuid/SUID 概念很棘手,使用时应极其谨慎,否则会在系统中留下安全漏洞。这是一个重要的安全概念,许多命令(如 ping 命令)和程序(如 sudo)都使用它。现在您已经了解了 SUID 的概念,让我们看看如何设置 SUID 位。如何设置SUID位?我发现设置 SUID 位时使用符号方式更容易。您可以通过以下方式使用 chmod 命令:chmod u+s file_name这是一个例子:linux:~$ ls -l test.txt -rwxrw-rw- 1 linux linux 0 Apr 12 17:51 test.txt linux:~$ chmod u+s test.txt linux:~$ ls -l test.txt -rwsrw-rw- 1 linux linux 0 Apr 12 17:52 test.txt您也可以使用数字方式。您只需在正常权限的基础上添加第四位数字即可。 用于设置 SUID 的八进制数始终为 4。linux:~$ ls -l test2.txt -rwxrw-rw- 1 linux linux 0 Apr 12 17:53 test2.txt linux:~$ chmod 4766 test2.txt linux:~$ ls -l test2.txt -rwsrw-rw- 1 linux linux 0 Apr 12 17:54 test2.txt如何删除SUID?您可以在 chmod 命令中使用符号模式,如下所示:chmod u-s test.txt或者,使用数字方式 0 而不是 4 来设置您想要设置的权限:chmod 0766 test2.txt小s和大写S作为SUID位的区别还记得SUID的定义吗?它允许使用与文件所有者相同的权限执行文件。但是如果文件一开始就没有设置执行位怎么办?像这样:linux:~$ ls -l test.txt -rw-rw-rw- 1 linux linux 0 Apr 12 17:51 test.txt如果设置了 SUID 位,它将显示大写的 S,而不是小写的 s:linux:~$ chmod u+s test.txt linux:~$ ls -l test.txt -rwSrw-rw- 1 linux linux 0 Apr 12 17:52 test.txtS as SUID 标志表示存在您应该检查的错误。您希望以与所有者相同的权限执行该文件,但该文件没有可执行权限。这意味着即使是所有者也不允许执行该文件,如果文件无法执行,您将无法获得所有者的权限。这使得设置 SUID 位的整个过程失败了。如何查找所有设置了SUID的文件?如果要搜索具有此权限的文件,请在终端中使用带有选项 -perm 的 find 命令。find / -perm /4000什么是SGID?SGID 与 SUID 类似。设置 SGID 位后,执行该文件的任何用户都将具有与该文件的组所有者相同的权限。它的好处是可以处理目录。当SGID权限应用于目录时,该目录内创建的所有子目录和文件将获得与主目录相同的组所有权(而不是创建文件和目录的用户的组所有权)。打开终端并检查文件 /var/local 的权限:linux:~$ ls -ld /var/local drwxrwsr-x 1 root staff 512 Apr 24 2018 /var/local此文件夹 /var/local 在您希望看到组权限的“x”或“-”的位置上有字母“s”。SGID 的一个实际示例是与 Samba 服务器一起在本地网络上共享文件。保证所有新文件都不会失去所需的权限,无论是谁创建的。如何设置SGID?您可以在符号模式下设置 SGID 位,如下所示:chmod g+s directory_name这是一个例子:linux:~$ ls -ld folder/ drwxrwxr-x 2 linux linux 4096 Apr 12 19:32 folder/ linux:~$ chmod g+s folder linux:~$ ls -ld folder/ drwxrwsr-x 2 linux linux 4096 Apr 12 19:32 folder/您也可以使用数字方式。您只需在正常权限的基础上添加第四位数字即可。 用于 SGID 的八进制数始终为 2。linux:~$ ls -ld folder2/ drwxrwxr-x 2 linux linux 4096 Apr 12 19:33 folder2/ linux:~$ chmod 2775 folder2 linux:~$ ls -ld folder2/ drwxrwsr-x 2 linux linux 4096 Apr 12 19:33 folder2/如何删除SGID位?只需使用 -s 而不是 + ,如下所示:chmod g-s folder删除 SGID 与删除 SGID 相同。在要设置的权限之前使用附加的 0:chmod 0755 folder如何在Linux中查找设置了SGID的文件要查找设置了 SGID 位的所有文件,请使用以下命令:find . -perm /2000什么是粘性位?粘滞位适用于目录。在目录上设置粘性位后,该目录中的所有文件只能由文件所有者或根用户删除或重命名。这通常用在 /tmp 目录中,该目录充当临时文件的垃圾箱。linux:~$ ls -ld /tmp drwxrwxrwt 1 root root 512 Apr 12 13:24 /tmp正如您所看到的,文件夹 /tmp 在我们期望看到 x的位置上有字母 t > 或 – 以获得其他权限。这意味着用户(root 除外)无法删除其他用户在 /tmp 目录中创建的临时文件。如何设置粘滞位?与往常一样,您可以使用符号和数字模式在 Linux 中设置粘滞位。…
2025年2月28日

Linux 中的 Subshell 是什么? [解释]

您可能听说过 shell 脚本在其自己的 shell 中运行。了解有关 Linux 中子 shell 概念的更多信息。您已经了解 shell。它是一个可让您在 Linux 中运行命令的程序。您与 shell 的主要交互是在终端中运行命令时。迟早,您会遇到一个名为“subshell”的术语,这可能会让您感到困惑。什么是子壳?子 shell 基本上是一个新的 shell,只是为了运行所需的程序。子 shell 可以访问“父 shell”设置的全局变量,但不能访问局部变量。子 shell 对全局变量所做的任何更改都不会传递到父 shell。那有意义吗?可能不会。让我用例子详细解释一下。这是一个显示变量“var”值的一行脚本。echo $var我将该变量的值设置为LHB,您认为脚本运行时会显示什么?惊喜!该脚本看不到我之前设置的变量 var 的值。Shell 脚本在子 s…
2025年2月28日

Linux 中的 scp 命令及示例 - Linux 命令行教程

Linux 中的 scp 命令用于将文件和目录复制到远程系统或从远程系统复制文件和目录。它的工作方式与 cp 命令非常相似,不同之处在于它将文件复制到本地网络或互联网上某个位置的其他系统或从其他系统复制文件。scp 命令通过 SSH 协议工作。换句话说,两个系统都必须设置 SSH 才能使用 scp 命令。您可能已经知道,SSH 协议在您的本地系统和另一个系统之间创建安全且加密的隧道,这意味着您使用 scp 命令复制的文件不会被拦截。你知道吗? SCP 命令基于 BSD RCP 协议。该协议用于本地网络或互联网上连接的主机之间的文件传输。实际的数据传输和用户身份验证是通过 Secure Shell (SSH) 完成的。这反过来又为所有数据传输提供端到端加密。正如您可以想象的那样,能够将文件复制到远程系统或从远程系统粘贴文件是非常有用的。然而,它并不是 Linux…
2025年2月28日

Linux 中的 Rsync 示例 - 增量文件传输和数据同步

rsync 代表“远程同步”,是一个功能强大的命令行实用程序,用于同步本地系统或远程计算机上的目录。默认情况下,它内置于几乎所有 Linux 系统中,本教程将通过为您提供管理员用来在多个服务器/主机之间保持数据同步的最常见 rsync 示例来帮助您更好地理解 rsync。一些用户错误地将 rsync 视为文件复制工具,例如 cp 或 scp。虽然存在一些重叠,但 rsync 在同步方面表现出色。换句话说,它可以采用源目录并创建相同的目标目录。当源目录中的文件发生更改时,rsync 可以有效地将内容同步到目标目录,仅传输已更改的位。它也是一个非常安全的实用程序,利用 SSH 进行远程文件传输。这使得 rsync 作为文件复制之外的备份工具非常有效。许多备份实用程序以某种形式使用 rsync,因为有些用户不愿意学习如何使用 rsync 命令。实际上,它可能…
2025年2月28日

Linux 中的 pwd 命令及示例 - Linux 命令行教程

Linux 中的 pwd 命令是当前工作目录的缩写。当谈到 Linux 命令时,这一定是最简单的命令之一。它的唯一功能是打印终端当前的工作目录。例如,当您不确定自己所在的目录时,或者当您需要在 Bash 脚本中传递当前工作目录时,它会派上用场。在本教程中,您将通过示例学习如何在 Linux 中使用 pwd 命令。请跟随我们的脚步看看它是如何工作的。在本教程中您将学习:如何在 Linux 上使用 pwd 命令常用选项Linux中的pwd命令用于打印当前工作目录。另一个可以做同样事情的命令是dirs。查看下面的示例以了解该命令的工作原理。Linux 中的 pwd 命令示例只需在终端中输入pwd,该命令就会输出当前工作目录的绝对路径。$ pwd /home/linuxconfig pwd 命令只有两个不同的选项可用。 -P 将避免列出符号链接,而是为您提供绝对路径…