排查“文件明明存在却访问不了”时,先读懂权限输出,再决定是否修改。递归 chmod 777 可能让问题暂时消失,也会把整棵目录的权限一起扩大。

ls -l 一行怎样拆开

-rw-r--r-- 2 alice app 762 10月 26 10:00 note.txt

这是示意输出,日期显示会随区域、选项和文件时间变化。

部分含义
-rw-r—r—文件类型与权限位,后面还可能有 ACL/安全信息标记
2硬链接数
alice所有者名称,可按选项显示数字 ID
app文件所属组,不一定是所有者当前主组
762这里是普通文件的逻辑字节大小
时间字段默认通常是修改时间 mtime,不一律是创建时间
note.txt文件名;符号链接还可能显示指向目标

目录自身显示的大小不是其全部内容的总和;设备文件在对应位置可能显示主、次设备号。目录列表前的 total 通常统计所列条目的分配块,也不是递归目录大小。GNU ls 输出说明

类型字符与执行位置的字符不能混读

首字符常见含义:

  • -:普通文件;d:目录;l:符号链接。
  • b/c:块设备或字符设备;p:FIFO;s:socket。

其后九个权限位按所有者、所属组、其他用户分为三组。r、w、x 对普通文件通常表示读、写、执行;对目录,r 关系到列目录,x 关系到搜索和穿越,w 与 x 配合关系到目录项的创建或删除。

即使文件可读,路径上的父目录不允许穿越,也可能无法访问。

执行位位置的 s/S 涉及 set-user-ID 或 set-group-ID;末尾的 t/T 涉及 sticky bit,不是“临时文件”。大写通常说明对应的执行位没有同时设置。目录的 sticky bit 对删除或重命名目录项施加额外限制,不等于文件内容自动只读。

硬链接、符号链接与 inode

硬链接是在同一文件系统内给同一个文件增加名称,通常可用 ls -i 对照 inode;它不是一份独立内容副本。删除一个名称,只要仍有其他链接或打开引用,数据就不一定立即释放。

符号链接本身是独立对象,保存目标路径,可以跨文件系统,也可以指向不存在的目标。删掉符号链接通常不等于删掉目标。

目录的链接数在一些文件系统中常呈现“基础链接加子目录”的关系,但不能把它当成所有文件系统都可靠的子目录计数方法。touch 主要处理访问/修改时间,也不是通用的“改创建时间”工具。

chmod 先确定主体与用途

数字权限中 r=4、w=2、x=1;例如 640 对普通文件表示所有者读写、组可读、其他用户无权限。符号模式可直接表达需要变化的部分:

chmod u+rw,go-rwx -- ./private-note.txt

它会实际修改明确的单个文件,仅适合你有权管理且确实只需所有者访问的样本;不是给共享服务目录直接套用的策略。

给一个已审查且需要执行的脚本增加所有者执行权限,与把所有文档都设为可执行,是不同操作。大写 X 只对目录或原本已有执行权限的文件影响执行/搜索位,小写 x 则不是这种条件行为。GNU 条件执行权限

递归操作之前,先列出准确范围,区分目录、普通文件和链接,确认服务账号、所属组及读写需要。ACL、SELinux、安全上下文和挂载选项也可能影响访问;不要把模式位改到最大当成通用修复。