当前位置: 首页 > article >正文

从ls -l的第一行权限开始:手把手教你读懂Linux文件系统的‘身份证’

从ls -l的第一行权限开始手把手教你读懂Linux文件系统的‘身份证’当你第一次在Linux终端输入ls -l命令时屏幕上跳出的那串神秘字符可能会让你感到困惑。drwxr-xr-x、-rw-r--r--这些看似随机的字母组合实际上是Linux文件系统的身份证它们揭示了文件与目录的所有关键属性。本文将带你逐层解码这些信息让你真正理解Linux如何管理文件权限与属性。1. 解剖ls -l的输出结构在终端执行ls -l命令后典型的输出如下-rw-r--r-- 1 user group 4096 Jun 15 10:30 example.txt drwxr-xr-x 2 user group 4096 Jun 15 10:31 documents每一行输出包含7个关键字段它们共同构成了Linux文件的完整身份信息文件类型与权限如-rw-r--r--硬链接计数文件所有者文件所属组文件大小最后修改时间文件名1.1 文件类型标识符每个权限字符串的第一个字符表示文件类型这是理解Linux文件系统的起点字符文件类型典型示例-普通文件文本文件、二进制文件d目录文件夹l符号链接快捷方式c字符设备文件终端设备(/dev/tty)b块设备文件磁盘设备(/dev/sda)p命名管道(FIFO)进程间通信s套接字文件网络通信在实际服务器管理中最常见的类型是普通文件(-)、目录(d)和符号链接(l)。2. 深入理解权限系统权限字符串的剩余9个字符分为三组分别定义不同用户的访问权限rwx r-x r-x │││ │││ │││ │││ │││ └─ 其他用户的权限 │││ └┴┴─── 所属组成员的权限 └┴┴────── 文件所有者的权限2.1 权限字符含义每个权限位可以是字母或-具体含义如下r(read)读取权限文件可查看内容目录可列出目录内容w(write)写入权限文件可修改内容目录可创建/删除文件x(execute)执行权限文件可作为程序执行目录可进入(cd)该目录特殊权限位如setuid、setgid、sticky bit会在权限字符串中显示为s或t我们将在高级部分讨论。2.2 权限的数字表示法权限也可以用3位八进制数表示这是chmod命令常用的格式rwx r-x --x → 111 101 001 → 7 5 1计算规则r 4w 2x 1常见权限组合数字权限描述755rwxr-xr-x所有者完全控制其他人可读执行644rw-r--r--所有者可读写其他人只读700rwx------仅所有者有完全权限777rwxrwxrwx所有用户都有完全权限不推荐提示目录通常需要执行权限(x)才能进入这是新手常忽略的一点。3. 文件所有者与组在权限字符串之后ls -l会显示文件的所有者和所属组-rw-r--r-- 1 alice developers 4096 Jun 15 10:30 app.py3.1 用户与组的关系Linux系统中每个文件都有一个所有者user每个文件都属于一个组group其他用户指既不是所有者也不在所属组中的用户管理命令chown改变文件所有者sudo chown alice:developers app.py # 同时修改所有者和组 sudo chown alice app.py # 仅修改所有者chgrp改变文件所属组chgrp developers app.py3.2 查看用户与组信息# 查看当前用户信息 id # 示例输出uid1000(alice) gid1000(alice) groups1000(alice),1001(developers) # 查看系统所有用户 cat /etc/passwd | cut -d: -f1 # 查看系统所有组 cat /etc/group | cut -d: -f14. 硬链接与inode文件系统的底层机制ls -l输出中的第二个数字表示硬链接计数这与Linux文件系统的核心设计——inode密切相关。4.1 inode文件的唯一标识每个文件在创建时都会被分配一个唯一的inode编号包含文件的元数据文件类型权限所有者/组大小时间戳指向数据块的指针查看inode信息ls -i # 显示文件名和inode编号 stat filename # 显示完整的inode信息4.2 硬链接 vs 软链接特性硬链接软链接符号链接inode与源文件相同独立的inode跨文件系统不支持支持原始文件删除仍然可以访问链接失效创建命令ln source link_nameln -s source link_name文件类型普通文件(-)符号链接(l)硬链接计数反映了有多少个目录项指向同一个inode。目录的硬链接计数通常≥2自身父目录的.条目。5. 高级权限与特殊属性5.1 特殊权限位除了基本的rwx权限外Linux还有三个特殊权限位SetUID(s)以文件所有者身份执行出现在用户执行位数字表示为4000示例-rwsr-xr-x(4755)SetGID(s)以文件所属组身份执行出现在组执行位数字表示为2000对目录新建文件继承目录的组示例-rwxr-sr-x(2755)Sticky Bit(t)限制目录下的文件删除出现在其他用户执行位数字表示为1000用于/tmp等共享目录示例drwxrwxrwt(1777)设置方法chmod us file # 设置SetUID chmod gs dir # 设置SetGID chmod t dir # 设置Sticky Bit5.2 文件属性扩展Linux还提供了更精细的文件属性控制lsattr # 查看文件属性 chattr # 修改文件属性常用属性a只能追加内容日志文件i不可修改免疫删除、修改、链接等A不更新访问时间6. 实战权限管理最佳实践6.1 安全权限设置原则遵循最小权限原则只授予必要的权限敏感文件设置chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh共享目录配置chmod 1777 /shared/tmp # Sticky Bit防止用户删除他人文件 chmod 2770 /shared/team # SetGID保持组一致性6.2 权限问题排查流程当遇到Permission denied错误时检查文件权限ls -l filename确认当前用户whoami检查用户所属组groups必要时提升权限sudo -i # 切换到root谨慎使用 sudo command # 以root权限执行单条命令6.3 ACL高级访问控制对于复杂权限需求可以使用ACLAccess Control Lists# 查看ACL getfacl filename # 设置ACL setfacl -m u:alice:rwx filename # 给alice添加rwx权限 setfacl -m g:developers:rx dir # 给developers组添加rx权限7. 可视化工具辅助理解虽然命令行是核心但图形化工具有时更直观ncdu交互式磁盘使用分析器tree以树状图显示目录结构tree -pug # 显示权限、用户/组信息ranger终端文件管理器安装方法# Ubuntu/Debian sudo apt install ncdu tree ranger # CentOS/RHEL sudo yum install ncdu tree ranger理解ls -l的输出是掌握Linux文件系统的关键第一步。当你能够流畅解读这些身份证信息时就能更自信地管理系统文件精准控制访问权限为后续的Linux系统管理打下坚实基础。

相关文章:

从ls -l的第一行权限开始:手把手教你读懂Linux文件系统的‘身份证’

从ls -l的第一行权限开始:手把手教你读懂Linux文件系统的‘身份证’ 当你第一次在Linux终端输入ls -l命令时,屏幕上跳出的那串神秘字符可能会让你感到困惑。drwxr-xr-x、-rw-r--r--这些看似随机的字母组合,实际上是Linux文件系统的"身份…...

Prompt Engineering——从随意提问到工程化调用

前言 在上一篇文章中,我们理解了大模型为什么会产生幻觉。其中一个关键的缓解手段,就是Prompt Engineering。 你可能会觉得:“Prompt Engineering 不就是写好提示词吗?这有什么可学的?” 但真正做过大模型应用开发的人…...

保姆级教程:在Ubuntu 22.04上安装CUDA 12.2(含驱动分离安装与RTX 3090验证)

保姆级教程:在Ubuntu 22.04上安装CUDA 12.2(含驱动分离安装与RTX 3090验证) 如果你正在搭建深度学习开发环境,CUDA的安装往往是第一个需要跨越的技术门槛。不同于简单的软件包安装,CUDA配置涉及驱动版本匹配、环境变量…...

为什么你的C++ DoIP客户端总在0x7F响应后静默崩溃?深度剖析UDS Negative Response解析逻辑缺陷与RAII资源泄漏链(附ASAM MCD-2D兼容补丁)

更多请点击: https://intelliparadigm.com 第一章:为什么你的C DoIP客户端总在0x7F响应后静默崩溃?深度剖析UDS Negative Response解析逻辑缺陷与RAII资源泄漏链(附ASAM MCD-2D兼容补丁) 当DoIP客户端收到UDS服务的0x…...

状态图在面向对象建模中的核心价值与实践

1. 状态图在面向对象建模中的核心价值状态图(Statecharts)作为行为建模的利器,在面向对象系统开发中展现出独特优势。与传统的有限状态机相比,状态图通过层次化状态和正交组件等创新机制,解决了复杂系统建模中的状态爆…...

告别FTP!用QT5和QSsh-Botan-1库给你的C++应用加上SFTP文件传输功能(附完整源码)

告别FTP!用QT5和QSsh-Botan-1库为C应用实现企业级SFTP文件传输 在桌面应用开发领域,文件传输功能的需求从未减少,但传统FTP协议的安全隐患却日益凸显。当我们需要在医疗影像系统、金融交易终端或工业控制软件中传输敏感数据时,一个…...

告别SubScene束缚:手把手教你用Addressables为Unity Entities 1.0.16实现动态资源加载

突破SubScene限制:ECS与Addressables动态资源加载的工程实践 在Unity的DOTS技术栈中,Entities 1.0.16版本虽然带来了显著的性能提升,但资源管理系统的缺失让许多开发者陷入两难——既想利用ECS的高效数据处理能力,又无法放弃Addre…...

AI 一键生成 HTML/CSS/JS 静态网站【压缩包返回可直接提交】

网页设计课救星:AI 一键生成 HTML/CSS/JS 静态网站——还支持「免费分享换卡密」写给正在修《网页设计与制作》《Web 前端基础》《多媒体网页设计》的同学:期末大作业要交多页面静态站、响应式布局、还要写得像「成品」?不用通宵抠 DIV。本项…...

别再被果冻效应搞懵了!一文搞懂CMOS卷帘快门(Rolling Shutter)的原理与应对

别再被果冻效应搞懵了!一文搞懂CMOS卷帘快门(Rolling Shutter)的原理与应对 你是否遇到过这样的场景:用手机拍摄旋转的直升机螺旋桨时,叶片竟然扭曲成了"S"形;无人机航拍快速移动的建筑物时&…...

保姆级教程:从TensorFlow模型到K230部署,手把手搞定kmodel转换全流程

从TensorFlow到K230:工业级kmodel转换实战全解析 在边缘计算领域,CanMV K230开发板凭借其出色的性价比和MicroPython开发友好性,正成为AIoT开发者的新宠。但将训练好的TensorFlow模型高效部署到K230上,需要跨越格式转换、量化优化…...

快速构建imtoken风格web3钱包原型:快马平台ai一键生成基础框架

最近在研究Web3钱包开发,想快速验证一个类似imToken风格的产品原型。传统开发流程从零搭建环境、配置依赖到实现基础功能,至少需要几天时间。这次尝试用InsCode(快马)平台的AI生成功能,不到半小时就搭出了可交互的雏形,分享下具体…...

告别环境配置,快马平台jdk21云环境助力开发效率倍增

作为一名长期在Java生态中摸爬滚打的开发者,最近在InsCode(快马)平台上体验了JDK21的虚拟线程特性后,彻底被这种"开箱即用"的开发模式惊艳到了。今天想和大家分享一个真实场景下的效率提升案例——用虚拟线程改造传统订单处理流程。 为什么需…...

DLSS Swapper实战指南:三步掌握游戏性能优化,智能管理DLSS/FSR/XeSS动态链接库

DLSS Swapper实战指南:三步掌握游戏性能优化,智能管理DLSS/FSR/XeSS动态链接库 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款革命性的游戏性能优化工具,通过智能…...

Java基础实战演练,在快马上构建简易银行系统掌握核心语法

最近在复习Java基础语法,想找个实战项目练练手。刚好发现InsCode(快马)平台可以快速生成项目代码,就尝试用它构建了一个简易银行账户管理系统。这个项目虽然不大,但涵盖了类与对象、集合操作、流程控制等核心知识点,特别适合用来巩…...

ai辅助开发新体验:让快马智能解析并生成定制化虚拟机配置方案

今天想和大家分享一个用AI辅助开发的小项目——虚拟机配置助手。这个工具特别适合需要频繁创建虚拟机的开发者,它能通过自然语言理解你的需求,自动生成最优化的虚拟机配置方案。 项目背景 作为开发者,我经常需要在VMware等虚拟化平台上配置各…...

AI短视频自动化生成实战:从零构建高效内容生产线

AI短视频自动化生成实战:从零构建高效内容生产线 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,GPTSoVITS,支持云语…...

新手福音:在快马平台上用OpenClaw迈出机器人编程第一步

新手福音:在快马平台上用OpenClaw迈出机器人编程第一步 作为一个机器人编程的纯新手,第一次接触OpenClaw这样的机械爪控制库时,我完全被各种专业术语和复杂接口搞懵了。直到发现了InsCode(快马)平台,才真正找到了入门的好方法。今…...

告别环境切换烦恼:用快马平台云端化anaconda,提升数据工作效率

作为一名经常在不同数据分析项目间切换的数据工作者,我深刻体会到环境管理的痛苦。每次启动新项目时,手动创建conda环境、安装依赖包、处理版本冲突就要耗费大量时间。最近尝试用InsCode(快马)平台的云端环境管理功能后,工作效率直接翻倍。今…...

ai辅助设计:让快马平台智能理解并优化你的er图描述与代码生成

今天想和大家分享一个特别实用的开发体验——用AI辅助设计ER图并生成代码。最近在做一个简单的员工管理系统,虽然需求很基础,但作为非专业数据库设计人员,总担心自己设计的ER图不够规范。好在发现了InsCode(快马)平台的AI辅助功能&#xff0c…...

AI赋能安全:通过快马平台快速构建网络异常检测模型原型

AI赋能安全:通过快马平台快速构建网络异常检测模型原型 最近在做一个网络安全相关的项目,需要快速搭建一个网络异常检测的原型系统。传统开发流程中,光是环境配置和基础代码编写就要花不少时间。不过这次尝试了用InsCode(快马)平台的AI辅助开…...

DARTH-PUM混合架构:内存计算技术的突破与优化

1. 项目概述:DARTH-PUM架构的核心创新DARTH-PUM(Digital-Analog Reconfigurable Technology for Hybrid Processing-Using-Memory)是近年来内存计算(PIM)领域最具突破性的混合架构设计之一。作为一名长期从事计算架构研…...

将Hermes Agent工具链接入Taotoken实现自定义模型调用

将Hermes Agent工具链接入Taotoken实现自定义模型调用 1. 准备工作 在开始配置前,请确保已安装Hermes Agent工具链并拥有Taotoken平台的API Key。访问Taotoken控制台创建API Key,并在模型广场查看支持的模型ID列表。Hermes Agent支持通过custom provid…...

给AURIX™新手的安全手册:英飞凌MCU的ISO 26262合规,到底要关注哪几个硬件安全机制?

AURIX™安全机制实战指南:从零构建ISO 26262合规设计 刚接触英飞凌AURIX™系列MCU的功能安全开发时,面对SAFETY Concept文档里密集的专业术语和抽象描述,多数工程师都会经历一段迷茫期。我曾见过一位资深嵌入式开发者盯着"锁步CPU核心的…...

自建局域网文件共享平台Lobsterlan:轻量部署与私有化协作实践

1. 项目概述:一个轻量级、可自托管的局域网文件共享与协作平台最近在折腾家庭网络和工作室的私有云方案,发现了一个挺有意思的开源项目:danielithomas/lobsterlan。乍一看这个名字,你可能会联想到“龙虾局域网”,有点俏…...

戴尔14r-5420升级全攻略:从DDR3内存条选购到AX210网卡安装,一次讲清楚

戴尔14r-5420终极升级指南:2024年硬件兼容性与性能提升实战 十年前的老笔记本能否在2024年重获新生?当我打开这台2012年购入的戴尔14r-5420时,键盘的磨损痕迹和机身贴纸早已发黄,但升级潜力却远超预期。不同于主流评测中常见的最新…...

代码摘要工具Codebreif:基于LLM的智能代码理解与项目分析

1. 项目概述:一个为开发者“减负”的代码摘要工具如果你和我一样,每天要面对海量的开源项目、陌生的代码库,或者需要快速回顾自己几个月前写的“天书”,那你一定理解那种“代码如山倒,理解如抽丝”的痛苦。打开一个陌生…...

ai辅助开发新范式:让快马ai在miniconda隔离环境中自动编写与测试代码

最近在尝试AI辅助开发时,发现一个很有意思的组合:用InsCode(快马)平台的AI能力生成代码,再通过Miniconda管理隔离环境自动测试验证。这种工作流特别适合需要频繁尝试不同技术栈的场景,比如数据分析和快速原型开发。下面分享我的实…...

大语言模型提示词优化与动机实验分析

1. 项目背景与核心价值 去年在参与某智能客服系统优化时,我们发现一个有趣现象:当给大语言模型(LLM)相同任务时,不同提示词设计会导致完全不同的执行路径。这促使我们系统性地设计了本次动机实验,试图揭示L…...

为什么你的Java函数永远无法突破10ms响应阈值?—— JIT编译器逃逸分析失效的3个信号

更多请点击: https://intelliparadigm.com 第一章:Shell脚本的基本语法和命令 Shebang 与执行方式 每个可执行 Shell 脚本的第一行应以 Shebang( #!/bin/bash)开头,用于指定解释器路径。保存为 hello.sh 后&#…...

支付聚合平台架构实战:从核心流程到风控安全的完整设计

1. 项目概述:一个面向代理商的支付聚合平台最近在和朋友聊一个项目,他提到想做一个叫“AgentPayy”的平台,核心是给代理商用的支付聚合系统。我一听就觉得这事儿挺有意思,也很有搞头。简单来说,这玩意儿就是一个“支付…...