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 上编码或解码 Base64 字符串

让我们来解密这个base64之谜。想要了解如何使用 Base64 二进制到文本方案对字符串进行编码和解码?本教程将向您展示使用 base64 命令和 Python 编程语言在 Linux 上对字符串进行编码和解码的两种方法。base64用在哪里?Base64 广泛应用于不同领域。一些最常见的领域包括电子邮件附件、Web 开发、网络和 URL 编码。一些电子邮件系统使用 base64 将图像和文档等二进制数据编码为文本格式,以便这些数据可以与消息一起安全地传输。 Web 开发人员还使用 base64 将图像嵌入到 HTML 和 CSS 中,以减少 HTTP 请求数量并提高页面加载速度。Base64 编码的另一个常见用途是身份验证令牌。有时,用户名和密码会使用此编码方案进行屏蔽,并添加到 HTTP 标头或 URL 参数中。在网络中,base64 用于使用基于文本的通信的协议…
2025年2月28日

Alpine Linux 3.20 首次亮相,初始支持 64 位 RISC-V

Alpine Linux 3.20 发布,具有 GNOME 46、Plasma 6、Python 3.12、LLVM 18、Ruby 3.3、初始 64 位 RISC-V 支持等。Alpine 是一个轻量级且安全的 Linux 发行版,刚刚发布了最新版本 Alpine Linux 3.20。这个新版本标志着 v3.20 稳定系列的开始,带来了一系列系统包升级和一些重大变化,包括对 64 位 RISC-V 架构的初步支持。Alpine Linux 3.20 的新增功能最新版本包括对许多关键组件的更新,其中最值得注意的包括:编程语言和框架:该发行版现在包括 LLVM 18、Node.js 20.10、Python 3.12、Ruby 3.3、Rust 1.78 和 Crystal 1.12。这些更新为开发人员提供了软件开发方面的最新工具和功能。桌面环境:对于图形界面用户,GNOME 已更新…
2025年2月28日

如何在 Debian 11 上安装 GitLab

本教程适用于这些操作系统版本Debian 11(Bullseye)Debian 8(Jessie)在此页 先决条件 开始 添加 GitLab 存储库 安装 GitLab CE 配置 GitLab 访问 GitLab 配置 GitLab 备份 结论 GitLab 是一个免费的开源 DevOps 平台,可让团队更快地迭代并共同创新。它是由 GitLab Inc 开发的基于 Web 的工具。它与 GitHub 非常相似,提供了一个 Git 存储库管理器,提供 wiki、问题跟踪以及持续集成和部署。 GitLab 社区版可完全免费用于开发和生产环境。在本教程中,我将向您展示如何在 Debian 11 上使用 Nginx 安装 GitLab 并让我们加密 SSL。先决条件 一台运行 Debian 11 且内存至少为 8GB 的服务器。 用服务器 IP 指向的有效域名。 在服务器上配置了根密码。 入门在开始之前,建议将您的包缓…
2025年2月28日

在 Debian 10 (Buster) 上安装和配置 Squid 代理服务器

Squid 是最常用的代理服务器之一,用于控制本地网络的互联网访问并保护网络免受非法流量和攻击。它们放置在客户端和互联网之间。来自客户端的所有请求都通过中间代理服务器路由。 Squid 适用于多种服务,例如超文本传输协议 (HTTP)、文件传输协议 (FTP) 和其他网络协议。除了充当代理服务器之外,Squid 主要用于缓存来自 Web 服务器的经常访问的网页。因此,当用户从 Web 服务器请求页面时,请求首先通过代理服务器检查请求的内容是否可用。这减少了服务器负载和带宽使用,并加快了内容交付速度,从而改善了用户体验。Squid 还可用于在上网时匿名。通过Squid代理,我们可以访问特定国家的受限内容。本指南将介绍如何在 Debian 10(Buster) 上安装和配置 Squid 代理服务器。先决条件:“sudo”访问将安装 Squid 的系统。…
2025年2月28日

如何在 Ubuntu 上更改 DNS 服务器

更改 Ubuntu 上的 DNS 服务器可以提高网络速度,并且是解决 Linux 上互联网问题的常见故障排除步骤。DNS(即域名服务器)是互联网基础设施的重要组成部分,它将人类友好的域名(例如 www.example.com)转换为机器可读的 IP 地址(例如 192.0.2.1)。 DNS 对于将互联网流量路由到正确的目的地至关重要,大多数基于互联网的服务(包括电子邮件和文件传输)都以某种方式使用 DNS。通常,Internet 服务提供商会为您的网络提供默认 DNS。但是,您可以使用自定义或第三方 DNS 以获得更快、更可靠的服务。您可以通过网络设置或使用命令行编辑配置文件来更改 Ubuntu 上的 DNS 服务器。1. 通过 GUI 网络设置更改 DNS要更改网络设置,最好以管理员身份登录 Ubuntu 并按照以下步骤操作。转到设置,您可以在应用程序抽屉中找…
2025年2月28日

如何在 Debian 11 上安装 Gitea Git 服务

本教程适用于这些操作系统版本Debian 11(Bullseye)Debian 10(Buster)在此页 先决条件 安装和配置 MariaDB 数据库 安装 Gitea 为 Gitea 创建系统服务文件 为 Gitea 配置 Nginx 访问 Gitea 网络界面 结论 Gitea 是一个免费、开源、自托管且著名的 Git 服务器,使用 Go 编程语言编写。是一个类似Github的版本控制平台。它健壮、可扩展并提供许多功能,包括问题和时间跟踪、存储库分支、文件锁定以及标记、合并和许多其他功能。如果您正在寻找自托管的 Git 服务,那么 Gitea 可能是您可以使用的最佳选择。在本教程中,我将向您展示如何在 Debian 11 上安装 Gitea。先决条件 运行 Debian 11 的服务器。 在服务器上配置了根密码。 安装和配置 MariaDB 数据库Gitea 使用 MariaDB/MySQ…
2025年2月28日

如何在 Ubuntu 上启用和禁用 Wayland

您可能听说过甚至遇到过使用 Wayland 的 Linux 发行版(例如 Fedora 25)作为其默认显示服务器。无论您是想测试 Wayland、在使用它之前了解它是什么,还是了解如何在 Ubuntu 上启用和禁用它,本指南都将在某种程度上证明其价值。本指南将讨论 Wayland 是什么、它如何工作以及如何在 Ubuntu 系统上启用和禁用它。让我们开始吧。什么是韦兰定义 Wayland 的最佳方式是称其为组合窗口管理器用来与客户端和 Wayland 协议的 C 库进行通信的协议。合成窗口管理器(通俗地简称为合成器)是一种为应用程序提供每个窗口的离屏缓冲区的窗口管理器。合成器可以与图形和窗口系统交互,创建:Windows 中的透明度动画阴影Wayland 协议实现的合成器可以是运行在内核上的显示服务器、X 应用程序或 Wayland 客户端(例如无根或全屏…
2025年2月28日

Linux Mint 22 将采用 PipeWire 作为默认声音服务器

Linux Mint 22 带来了 PipeWire 声音、Pix 中的 JXL,并确保 Thunderbird 保持原生打包以获得更流畅的电子邮件体验。Linux Mint 的 2024 年 3 月时事通讯公布了一系列增强功能和更新,承诺提供更流畅、更高效的用户体验,并让我们了解即将推出的 Mint 22 ‘Wilma’ 版本将带来什么。本地化的重大改进Mint 22 将引入显着的本地化改进。它将通过删除用户未选择的预安装语言包来简化安装过程,从而显着减少所需的磁盘空间。此外,如果您连接到互联网,安装程序将自动下载您所选语言的语言包。对于需要英语、德语、西班牙语、法语、俄语、葡萄牙语、荷兰语或意大利语的用户,ISO 映像上将提供相关语言包,无需互联网连接。Deb822和PipeWire简介Linux Mint 22 中的软件源工具将纳入对 Deb822 格式的支…
2025年2月28日

在 Linux 上安装和使用 7zip

Linux 是一种流行的开源操作系统,具有许多优点,例如免费、可定制和安全。 Linux 用户面临的挑战之一是找到适合某些任务的工具,例如压缩和解压缩文件。幸运的是,7zip 是一个强大且多功能的压缩工具,可以帮助我们完成这项任务。在本教程中,我们将逐步介绍在 Linux 中安装和使用 7zip 的过程。我们将介绍安装 7zip 的不同方法,包括通过命令行和包管理器,并提供带有屏幕截图的分步说明。我们还将解释 7zip 的基本用法,例如如何压缩和提取文件并探索一些可用的高级功能和选项。读完本文后,您将更好地了解如何在 Linux 上安装和使用 7zip,并能够利用其强大的功能。在 Linux 上安装和使用 7zip7zip 是一个可让您轻松压缩和解压缩文件的程序。它支持多种文件格式,如 7z、ZIP、RAR 等。 7zip 的一些独特功能包括 -缩小文件大小…