Linux
管理文件和目录是任何Linux用户的基本技能——无论您是在使用VPS、专用服务器还是您的本地计算机。最常见的任务之一是移动目录之间的文件。在Linux中,这通常使用mv(移动)命令完成。在本文中,我们将解释mv命令的工作原理,提供实际示例,并分享安全高效的文件管理实用技巧。 mv命令的基础 mv命令的语法很简单: mv [options] source destination 重要提示:mv命令可以根据上下文移动文件和重命名文件。 将文件移动到另一个目录 假设您在当前目录中有一个文件report.txt,并希望将其移动到/home/user/documents/: mv report.txt /home/user/documents/ 这将把report.txt移动到目标目录。 一次移动多个文件 您还可以同时移动多个文件: mv file1.txt file2.txt file3.txt /home/user/documents/ 所有列出的文件将被转移到指定的文件夹。 在移动时重命名文件 mv命令可以在移动文件时重命名。例如: mv report.txt /home/user/documents/final_report.txt 在这里,文件将被放置在/home/user/documents/中,但名称为final_report.txt。 移动一个目录 要移动整个目录,使用相同的命令: mv project/ /home/user/archive/ 这将把项目目录及其所有内容移动到/home/user/archive/。 mv的实用选项 -i(交互式):在覆盖现有文件之前提示。 mv -i report.txt /home/user/documents/ -f(强制):在没有确认的情况下覆盖文件。 mv -f report.txt /home/user/documents/ -v(详细):显示正在发生的事情。 mv -v *.txt /home/user/documents/ 文件管理的最佳实践 如果不确定,请始终使用-i——这可以防止意外覆盖。 检查权限:确保您对目标目录具有写入访问权限。 对于系统关键文件,考虑在移动之前进行备份。 结论 […]
在Linux中工作常常感觉像是在导航一个巨大的图书馆。你没有书架,而是有目录(文件夹);你没有书,而是有文件。作为系统管理员、开发者,甚至是好奇的初学者,掌握如何在这个结构中找到你的方向的基础知识是非常重要的。最重要的技能之一是学习如何列出目录。本文将带你了解不同的方法,解释它们的优缺点,并展示每种方法何时有意义。 为什么列出目录很重要 在个人电脑上,你可能只偶尔查看你的“文档”或“下载”文件夹。然而,在服务器上,目录是日常任务的核心: 系统管理:快速检查 /etc/ 或 /var/log/ 中的内容。 网络托管:在 /var/www/ 中查找项目文件夹。 开发:识别隐藏目录,例如 .git/ 或 .venv/。 安全性:确认系统上安装和运行的内容。 简而言之:如果你不知道如何有效地列出目录,你总会感到迷失。 最简单的方法:ls ls 命令是显示文件夹内容的默认工具。运行它而不带参数: ls 这将显示文件和目录。如果你只想查看目录: ls -d */ 这里发生了什么: -d 告诉 ls 不要深入每个目录。 */ 是一个匹配当前文件夹中所有目录的 shell 模式。 但有一个限制:隐藏目录(以点开头的目录,如 .git)不会显示。 如果你还想要详细信息——权限、所有权、时间戳——运行: ls -ld */ 当你只想快速查看时使用这个,但要注意这不是脚本编写中最可靠的方法。 更可靠的方法:find find 就像一束探照灯:它可以扫描你的系统以查找任何深度的目录。 从当前位置递归列出所有目录: find . -type d 仅列出顶级目录(在 Linux、macOS、BSD 中可移植): find . -mindepth […]
在 Linux 中,shell 脚本 (.sh 文件) 被广泛用于自动化任务、配置系统或部署应用程序。了解如何运行它们对管理员、开发者以及任何使用 Linux 服务器的人来说都是必不可少的。在本指南中,我们将逐步解释不同的方法。 1. 使文件可执行 当你下载或创建一个 .sh 文件时,它可能默认没有执行权限。要添加这些权限,请使用: chmod +x script.sh 现在该文件可以作为程序执行。 2. 使用相对路径或绝对路径运行 如果文件在当前目录中: ./script.sh 如果它位于其他地方: /home/user/scripts/script.sh 3. 使用 bash 或 sh 运行 即使没有执行权限,你也可以直接通过 shell 运行脚本: bash script.sh 或 sh script.sh 这种方法对于快速测试脚本非常有用。 4. 以超级用户身份运行(如有需要) 某些脚本需要提升权限才能修改系统。在这种情况下: sudo ./script.sh 或 sudo bash script.sh 5. 在后台运行 如果你希望脚本在不阻塞终端会话的情况下运行: ./script.sh & & 符号将进程发送到后台。 […]
如何优化您的Linux服务器以支持高性能应用程序? 在Linux上运行高性能应用程序不仅需要强大的硬件,还需要对操作系统、内核参数和软件堆栈进行仔细调整。适当的优化确保了更低的延迟、更高的吞吐量和更好的可靠性,这在托管数据库、Web应用程序或计算密集型工作负载时至关重要。 保持系统精简 高性能服务器应仅运行必要的服务。额外的守护进程会消耗CPU周期、内存和I/O带宽,从而减少可用于关键工作负载的资源。首先审计已启用的系统服务: systemctl list-unit-files –state=enabled 禁用不必要的服务,例如蓝牙、打印系统或自动发现守护进程: systemctl disable bluetooth.service systemctl disable cups.service systemctl disable avahi-daemon.service 仅保留不可或缺的组件,例如SSH、防火墙服务、监控代理和应用程序守护进程。这将最小化性能开销和攻击面。 优化CPU调度 Linux默认使用完全公平调度器(CFS),在进程之间平衡CPU时间。对于对延迟敏感或实时的工作负载,请考虑: 使用renice调整进程优先级: renice -n -10 -p <PID> 使用chrt分配实时调度: chrt -f 99 <command> 将进程绑定到特定的CPU核心: taskset -c 0-3 <command> 这些方法提高了CPU的可预测性,并减少了数据库、VoIP或流媒体应用程序等工作负载的延迟变化。 调整内存管理 高效的内存利用对性能至关重要: 减少交换: sysctl -w vm.swappiness=10 调整文件系统缓存压力: sysctl -w vm.vfs_cache_pressure=50 配置HugePages(并单独处理THP): sysctl -w vm.nr_hugepages=1024 控制内存超分配: sysctl -w vm.overcommit_memory=1 […]
在保护Linux服务器时,大多数管理员会考虑基本的安全措施:保持软件包更新、配置防火墙、限制SSH访问。然而,最强大的安全机制之一往往被忽视——SELinux(安全增强Linux)。这不仅仅是一个附加组件;它是一个内核级安全框架,旨在在入侵升级之前阻止它们。对于VPS和专用服务器,SELinux可以意味着小事件和系统完全妥协之间的区别。 什么是SELinux? SELinux是一个Linux内核安全模块,强制执行强制访问控制(MAC)。 在传统的DAC(自主访问控制)模型下,访问权限由文件所有者决定,root拥有无限制的权限。 在MAC(SELinux)下,访问权限由系统范围的安全策略决定。即使是root也受到限制。 SELinux最初由NSA与Red Hat合作开发,在2000年代初期集成到Linux内核中,现在在RHEL、CentOS、Fedora、AlmaLinux和Rocky Linux等企业发行版中是标准配置。 问题:传统Linux安全的不足之处 经典的UNIX权限模型(DAC)存在关键弱点: root是全能的。任何升级到root的漏洞都会危及整个系统。 服务妥协=系统妥协。被攻击的Apache模块或PHP脚本可以访问敏感数据。 现代攻击向量绕过DAC。Web-shell、特权升级漏洞和容器逃逸很常见。 现实场景:一个CMS上传漏洞允许攻击者放置一个web-shell。没有SELinux,攻击者可以读取config.php,提取数据库凭据,并妥协整个堆栈。使用SELinux时,Web服务器进程(httpd_t)受到限制,无法访问其指定域之外的文件。 SELinux是如何工作的 每个进程、文件、端口和套接字都有一个安全上下文(标签)。策略定义了哪些上下文可以相互交互。 示例: Apache在httpd_t域中运行。 网站文件被标记为httpd_sys_content_t。 策略允许httpd_t仅读取httpd_sys_content_t文件。 如果Apache尝试读取/etc/shadow(shadow_t),内核将拒绝该请求并记录违规行为。 操作模式 强制:强制执行策略,阻止违规。 宽容:记录违规但不阻止(适合测试)。 禁用:SELinux关闭(不推荐)。 最佳实践:从宽容模式开始,查看日志,微调策略,然后在生产环境中切换到强制模式。 为什么SELinux对托管和DevOps很重要 进程隔离:当单个服务被妥协时限制损害。 最小权限强制:即使是root也无法绕过政策限制。 取证和可见性:所有被拒绝的操作都会被记录(/var/log/audit/audit.log)。 容器安全:防止Docker/Podman容器逃逸其边界。 合规性:在受监管的环境中是必需的(PCI DSS、HIPAA、军用级部署)。 策略类型 目标(默认):仅限制网络服务(Apache、Nginx、Postfix、Dovecot)。 严格:将MAC应用于所有进程。 MLS/MCS:用于多级或政府级安全的高级策略。 对于大多数VPS和专用服务器工作负载,目标策略是可用性和保护之间的最佳平衡。 实际示例 检查SELinux状态 getenforce sestatus 移动Web文件后恢复文件上下文 restorecon -Rv /var/www/html 列出文件安全标签 ls -Z /var/www/html 允许Web服务的出站连接(例如,API调用) setsebool -P httpd_can_network_connect 1 […]
如果您从 Windows 管理 Linux/Unix 系统,您需要三样东西:一个安全的终端、可靠的文件传输和合理的密钥管理。PuTTY 在一个图形界面包中提供了这三样;OpenSSH 在 Linux 上原生提供相同的核心功能。本文解释了何时选择 PuTTY,套件中实际包含的内容,以及如何将每个任务映射到 Linux 工具——而不会让您淹没在选项中。 PuTTY 实际上是什么? PuTTY 是一个用于从 Windows 进行安全远程访问的工具包。在一个包中,您可以获得一个图形 SSH 客户端、一个密钥生成器/转换器、一个 SSH 代理,以及用于文件传输和自动化的实用工具。尽管 OpenSSH 已内置于 Windows 10/11 中,但当您需要方便的 GUI、串行/COM 支持、保存的会话配置文件和对 .ppk 密钥格式的优质支持时,PuTTY 仍然是首选。在生态系统中与之并存的有: PuTTY — 用于 SSH/Telnet/串行的终端应用,具有保存的配置文件和网络设置(代理、保持连接、日志记录)。 PuTTYgen — 生成和转换密钥(特别是 .ppk 格式)。 Pageant — 一个 SSH 代理,保持您的私钥在内存中,以便客户端可以在每次连接时无需提示进行身份验证。 PSCP/PSFTP — 通过 SCP/SFTP 进行安全文件传输。 Plink — 用于脚本和无头隧道的 CLI […]
当您配置一台全新的 Linux 服务器时——无论是 VPS、裸金属 专用服务器,还是云托管的 虚拟机——您会注意到系统启动进入一个故意简约和强化的环境。这不是一个疏忽,而是一个有意的设计选择。现代的 Linux 发行版剥离了不必要的服务和功能,以最小化攻击面,节省系统资源,并给予管理员对启用内容的细粒度控制。下面我们将分析默认情况下禁用(或根本不存在)的最常见功能和服务,以及这对安全性和操作效率的重要性。 根 SSH 登录 在当代 Linux 服务器构建中,直接通过 SSH 进行根登录几乎是普遍禁用的。允许远程根访问是一个明显的漏洞:一个被攻破的密码就等于完全控制系统。 相反,管理员应该使用非特权用户登录,并通过 sudo 或 su 提升权限。 验证: grep PermitRootLogin /etc/ssh/sshd_config 您应该看到: PermitRootLogin no SSH 中的密码认证 在许多云配置的服务器上,密码认证也被禁用,留下 SSH 密钥 作为唯一的认证机制。密钥抵抗暴力攻击,并显著提高了未授权访问尝试的门槛。 传统的 ISO 安装可能仍然允许密码登录,但最佳实践是立即禁用它们。 验证: grep PasswordAuthentication /etc/ssh/sshd_config 已弃用的网络协议 现代服务器构建中缺少传统服务,如 Telnet、FTP、Rlogin 和 Rsh。这些协议以明文传输凭据和数据,使其容易被拦截。 它们已被以下协议取代: SSH 用于远程 shell 访问 SFTP/FTPS 用于安全文件传输 检查活动服务: ss […]
Linux 是最流行的操作系统之一,支持 VPS 服务器、网络托管平台和虚拟机。在Linux安全的核心是其文件权限系统——定义谁可以读取、修改或执行文件的规则。了解如何检查 Linux 中的权限对于管理 VPS、设置安全的托管环境或在虚拟机中工作至关重要。 文件权限基础 Linux 中的每个文件和目录都有三种类型的权限: 读取 (r) → 查看文件内容或列出目录。 写入 (w) → 修改或删除文件,添加或删除目录中的文件。 执行 (x) → 运行文件(如果它是程序)或进入目录。 这些权限适用于三类用户: 所有者 (用户) → 通常是文件的创建者。 组 → 属于文件组的用户。 其他人 → 其他所有人。 使用 ls -l 检查权限 最简单的方法是使用 ls -l 命令: ls -l file.txt 示例输出: -rw-r–r– 1 user group 1024 Aug 16 12:30 file.txt -rw-r–r– […]
Linux的诞生 在1990年代初,计算机价格昂贵,操作系统是封闭的,开发者的自由受到限制。1991年8月25日,一位21岁的芬兰学生Linus Torvalds在Usenet小组comp.os.minix上发布了一条现在传奇的信息: “我正在做一个(免费的)操作系统,只是个爱好,不会像gnu那样大和专业……” 这个“爱好”变成了Linux内核。几周后,1991年9月17日,Linus发布了Linux 0.01,这是一个原始但革命性的版本,后来成为现代互联网的支柱。 到1992年,Linux被置于GNU通用公共许可证(GPL v2)之下。这个单一的决定打开了全球合作的大门。任何人都可以使用、修改和分享它——成千上万的程序员这样做了。 接下来的几年带来了第一批伟大的Linux发行版: 1993年——Slackware,最早存活下来的发行版,以及后来催生Ubuntu的Debian。 1994年——Red Hat Linux,专为企业而构建。 从那时起,Linux像野火一样传播开来: 2000年代——为服务器、大学和科技巨头提供支持。 2008年——基于Linux构建的Android将内核放入数十亿个口袋。 2010年代及以后——Linux成为云计算、物联网和几乎所有超级计算机的无形基础。 最初作为“爱好”的它重塑了全球技术。 发音之谜 但即使在Linux征服世界的同时,一个问题在会议、课堂和论坛上不断分裂社区: “你到底怎么发音Linux?” 一些人发誓它是LIN-ux(lih-nuhks)。其他人依靠“Linus”的英语发音,坚持说是LIE-nux。争论有时可以持续比编码会话还要长。 最后,Linus Torvalds本人决定结束这场辩论。他录制了一段简短的音频片段,现在在kernel.org上被铭记: “你好,我是Linus Torvalds,我发音Linux为LEE-nux。” 那么,正确的答案是什么? 官方:LEE-nux——直接来自Linus本人。 常见:LIN-ux——你在聚会和课堂上最常听到的版本。 少见:LIE-nux——一些人使用,但远非主流。 可以这样想: 如果你想尊重创造者——说LEE-nux。 如果你想融入人群——LIN-ux不会让你受到奇怪的目光。 无论如何,你都会被理解。但现在,你也知道了真正的答案。 结论 Linux不仅仅是一个操作系统——它是自由、社区和全球合作的故事。就像它的发音一样,它灵活、适应性强,并受到世界各地人们的影响。所以下次有人问你“你怎么发音Linux?”——微笑着说:“根据Linus的说法,它是LEE-nux。”
Chromebook 最初是作为围绕 ChromeOS 构建的轻量级设备设计的,大多数任务在浏览器中运行。然而,随着时间的推移,它们获得了更多的灵活性。最大的变化之一是增加了对 Linux 的支持——也称为 Crostini 或 Linux (Beta)。通过这个功能,您可以在 Chromebook 上直接运行 Linux 应用程序、开发工具,甚至图形应用,而无需离开 ChromeOS 的安全环境。 Chromebook 上的 Linux 如何工作 Chromebook 上的 Linux 支持由 Crostini 项目提供支持。简单来说,这里是其架构: ChromeOS 运行一个名为 Termina 的轻量级虚拟机 (VM)。 在 Termina 内部,创建一个基于 Debian 的容器(默认命名为 penguin)。 您可以访问 Linux 终端,并使用 apt 安装软件。 Linux 应用与 ChromeOS 集成——它们出现在启动器中,共享剪贴板,并可以访问共享文件夹。 这不是模拟——这是一个真正的 Linux 环境,安全地运行在沙箱中。 您可以在 Chromebook 上使用 Linux 做什么 编程和开发:安装 […]
