Linux权限详解:从入门到实战

张开发
2026/4/12 15:25:20 15 分钟阅读

分享文章

Linux权限详解:从入门到实战
在Linux这个多用户、多任务的世界里权限管理是保障系统安全与稳定的基石。它如同一个精密的门禁系统确保每个用户和程序只能访问被授权的资源防止误操作或恶意行为。本指南将带你从基础概念出发深入理解并掌握Linux权限的核心逻辑与实战技巧。理解权限的三要素谁、对什么、做什么Linux权限的核心可以概括为三个基本问题谁主体可以对什么对象执行什么操作权限。权限的主体三类用户每个文件或目录都关联着三类用户身份权限会针对这三类身份分别设定。所有者User/Owner文件的创建者或被指定的用户。通常拥有最高的操作权限。所属组Group一个用户的集合。将用户归入同一个组可以方便地给一组用户分配相同的权限非常适合团队协作。其他用户Others系统中除了所有者和所属组成员之外的所有用户。对他们的权限限制通常最为严格。权限的类型三种操作针对文件和目录Linux定义了三种基本操作权限。读Read, r对文件可以查看文件内容例如使用cat、less命令。对目录可以列出目录中的内容例如使用ls命令。写Write, w对文件可以修改、删除文件内容。对目录可以在目录内创建、删除或移动文件。请注意删除一个文件取决于其所在目录的写权限而非文件本身的权限。执行Execute, x对文件可以将该文件作为程序或脚本运行。对目录可以进入该目录例如使用cd命令。这是访问目录内文件的前提。查看权限解读ls -l的输出使用ls -l命令可以查看文件或目录的详细权限信息。$ ls -l /etc/passwd -rw-r--r-- 1 root root 2918 Jan 15 10:30 /etc/passwd输出结果的第一列-rw-r--r--就是权限字符串共10个字符其结构如下第1个字符文件类型-普通文件d目录directoryl符号链接link第2-4个字符所有者的权限示例中的rw-表示所有者root有读、写权限无执行权限。第5-7个字符所属组的权限示例中的r--表示所属组root仅有读权限。第8-10个字符其他用户的权限示例中的r--表示其他用户也仅有读权限。紧接着权限字符串后面的root root分别代表文件的所有者和所属组。修改权限chmod命令详解chmodchange mode是修改权限的核心命令它支持两种模式数字法和符号法。数字法八进制模式数字法使用三位八进制数来分别代表所有者、所属组和其他用户的权限。每个权限位对应一个数字r(读) 4w(写) 2x(执行) 1-(无权限) 0将所需权限的数字相加即可得到该用户类别的权限值。例如rwx 421 7r-x 401 5。示例1chmod 755 script.sh所有者7 (rwx) - 可读、写、执行所属组5 (r-x) - 可读、执行其他用户5 (r-x) - 可读、执行示例2chmod 644 config.conf所有者6 (rw-) - 可读、写所属组4 (r--) - 仅可读其他用户4 (r--) - 仅可读符号法字符模式符号法使用字母来指定用户类别、操作符和权限更加直观。用户类别u(所有者),g(所属组),o(其他用户),a(所有用户)操作符(添加权限),-(移除权限),(直接设定权限)权限r,w,x示例1chmod ux script.sh给文件所有者添加执行权限。示例2chmod go-w data.txt移除所属组和其他用户的写权限。递归修改使用-R参数可以递归地修改目录及其内部所有文件和子目录的权限。chmod -R 755 /var/www/html/修改所有者与所属组chown和chgrpchownchange owner用于修改文件的所有者和/或所属组。chown user1 file.txt将file.txt的所有者改为user1。chown user1:devgroup file.txt将file.txt的所有者改为user1所属组改为devgroup。chgrpchange group专门用于修改文件的所属组。chgrp devgroup file.txt将file.txt的所属组改为devgroup。特殊权限SUID、SGID和粘滞位除了基本权限Linux还提供了三种特殊权限用于满足更复杂的需求。它们通过一个四位的八进制数来表示例如4755。SUIDSet User ID, 4000当一个可执行文件设置了SUID权限后任何用户在执行它时都会临时获得该文件所有者的权限。典型应用/usr/bin/passwd命令。普通用户需要修改/etc/shadow文件只有root能写passwd程序的所有者是root且设置了SUID位因此普通用户执行它时可以完成密码修改。设置方法chmod 4755 program。在ls -l中所有者的x权限位会显示为s。SGIDSet Group ID, 2000SGID对文件和目录有不同的作用。对可执行文件类似SUID执行时临时获得文件所属组的权限。对目录更常用在该目录下创建的新文件其所属组会自动继承该目录的所属组而不是创建者的主组。这对于团队协作共享目录非常有用。设置方法chmod 2775 shared_dir。在ls -l中所属组的x权限位会显示为s。粘滞位Sticky Bit, 1000粘滞位通常设置在所有人都可以写入的公共目录上如/tmp。它的作用是即使用户对目录有写权限也只能删除自己创建的文件无法删除其他用户的文件。典型应用/tmp目录。设置方法chmod 1777 public_dir。在ls -l中其他用户的x权限位会显示为t。默认权限umaskumask用户文件创建掩码决定了新创建的文件或目录的默认权限。它是一个“屏蔽码”。系统基础权限文件默认为666rw-rw-rw-目录默认为777rwxrwxrwx。umask的作用从基础权限中“减去”实际上是按位屏蔽umask值。示例如果umask值为022则新文件权限 666-022644(rw-r--r--)新目录权限 777-022755(rwxr-xr-x)常用权限速查表这份清单覆盖了90%的日常操作场景可作为快速参考。普通文件权限最常用权限数字权限符号适用场景说明644-rw-r--r--通用标准绝大多数文件如文档、图片、配置文件的标准权限。所有者可读写其他人只能读。600-rw-------高度机密敏感文件如SSH私钥id_rsa、数据库配置文件。仅所有者可读写对其他人完全隐藏。664-rw-rw-r--团队协作需要组内成员共同编辑的文件。所有者和组可读写其他人只读。可执行文件与目录权限权限数字权限符号适用场景说明755drwxr-xr-x通用目录/脚本网站根目录、系统命令、Shell脚本。所有者全权其他人可读/进入/执行但不能修改。700drwx------私密目录用户的家目录、.ssh目录。仅所有者可以进入、查看和修改系统其他用户无法访问。775drwxrwxr-x共享目录开发团队共享的项目目录。所有者和组可读写/进入其他人可读/进入。特殊权限组合进阶权限数字权限符号适用场景说明1777drwxrwxrwt公共暂存如/tmp或/var/tmp目录。所有人可写入但粘滞位保证了用户只能删除自己的文件。4755-rwsr-xr-x提权程序如/usr/bin/passwd。设置了SUID普通用户执行时临时拥有文件所有者通常是root的权限。2775drwxrwsr-x组协作目录设置了SGID的目录。在此目录下新建的文件会自动继承目录的所属组方便团队协作。权限最佳实践与核心提示遵循最小权限原则只授予完成任务所必需的最小权限。避免使用777权限chmod 777意味着对所有人开放所有权限这是极大的安全风险。目录必须有x权限如果目录没有x权限用户即使有r权限也无法cd进入该目录也无法访问目录下的文件。谨慎使用SUID/SGID不当使用可能导致权限提升漏洞。

更多文章