尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Linux系统基础4:文件基本属性与相关命令

Linux系统基础4:文件基本属性与相关命令 目录Linux 文件基本属性与相关命令 新手超详细教程一、先搞懂Linux 文件属性到底包含什么1.1 第 1 位文件类型1.2 第 2-10 位文件访问权限重点举个完整的权限例子1.3 其他属性简单说明二、命令 1查看文件属性2.1 ls 系列最常用的属性查看命令① 基础用法ls -l 长格式显示详细属性② 进阶ls -la 显示包含隐藏文件的所有属性③ 易错必学ls -ld 查看目录本身的属性④ 人性化大小ls -lh2.2 stat查看更完整的文件属性三、命令 2修改文件所有者与所属组3.1 chown修改文件所有者可同时改组举例 1修改单个文件的所有者举例 2同时修改所有者和所属组举例 3递归修改目录下所有文件的所有者3.2 chgrp单独修改文件所属组四、命令 3修改文件权限 chmod重中之重4.1 方式一符号方式新手推荐先学语法组成① 对象给谁改权限② 操作符怎么改③ 权限改什么权限符号方式举例逐行拆解举例 1给所有者增加执行权限举例 2给其他用户移除写权限举例 3给所有用户设置只读权限举例 4同时设置多个对象的不同权限4.2 方式二数字方式工作最常用核心规则权限对应数字数字方式举例举例 1给脚本设置标准权限 755举例 2给普通文本文件设置标准权限 644举例 3设置只有所有者能读写其他人完全没权限 6004.3 递归修改目录权限-R 选项五、命令 4修改文件时间 touch5.1 基础用法创建空文件5.2 指定时间修改-d 选项六、新手常见误区与注意事项新手练习小建议Linux 文件基本属性与相关命令 新手超详细教程Linux 中一切皆文件普通文件、目录、设备、程序都是文件每个文件都有一套固定的「基本属性」用来描述文件的类型、谁能访问、谁拥有它、多大、什么时候改的等信息。我会从「属性是什么」→「怎么查看属性」→「怎么修改属性」逐层拆解每个命令都配逐成分举例 新手易错提醒零基础也能看懂。一、先搞懂Linux 文件属性到底包含什么查看文件属性最基础的命令是ls -l长格式列表我们先看一行典型的输出它包含了文件的全部核心属性-rw-r--r-- 1 zhangsan users 4096 Jul 10 10:00 test.txt这一行从左到右一共分为7 个部分每部分含义如下序号内容示例含义1-rw-r--r--文件类型 访问权限共 10 个字符最核心也最难懂21硬链接计数有多少个文件指向同一个 inode3zhangsan文件的所有者属主这个文件归哪个用户所有4users文件的所属用户组属组这个组里的用户有对应权限54096文件大小默认单位是字节6Jul 10 10:00文件最后修改时间内容被修改的时间7test.txt文件名下面我们把最核心的「第 1 列类型 权限」彻底拆透。1.1 第 1 位文件类型10 个字符的第 1 位代表文件类型Linux 一共有 7 种常见文件类型新手记住前 4 种即可类型符号全称 / 含义说明 举例-普通文件最常见的类型比如文本文档、脚本、图片、二进制程序都属于普通文件ddirectory 目录就是文件夹目录也是一种特殊的文件llink 软链接类似 Windows 的快捷方式指向另一个真实文件ccharacter 字符设备嵌入式里非常常见比如串口、键盘、鼠标按字符流读写数据/dev/ttyS0就是典型字符设备bblock 块设备磁盘、U 盘这类存储设备按块批量读写数据/dev/mmcblk0eMMC就是块设备ppipe 管道文件进程间通信用的特殊文件新手很少接触ssocket 套接字文件网络通信用的特殊文件比如 MySQL 的.sock 文件新手快速判断看ls -l第一列第一个字符d就是文件夹-就是普通文件l就是快捷方式。1.2 第 2-10 位文件访问权限重点剩下的 9 个字符每 3 个为一组一共 3 组分别对应三类用户的权限第 1 组2-4 位所有者u user权限 → 文件的主人有什么权限第 2 组5-7 位所属组g group权限 → 文件归属的用户组里的成员有什么权限第 3 组8-10 位其他用户o other权限 → 既不是主人也不在组里的其他用户有什么权限每组都固定由rwx三个字符组成位置固定没有对应权限就用-占位权限符号全称对普通文件的含义对目录的含义新手必看和文件不一样rread 读可以查看文件的内容cat、less可以查看目录里有哪些文件lswwrite 写可以修改、删除文件内容vim、echo可以在目录里增删、重命名文件mkdir、rm、mvxexecute 执行可以运行这个文件比如脚本、程序可以进入这个目录cd 命令能进去 新手超级易错点目录的x权限不是「执行程序」是「能不能进入目录」没有 x 权限哪怕有 r 权限也看不了目录里的文件。要删除一个文件不需要文件本身有 w 权限只需要文件所在的目录有 w 权限就行。举个完整的权限例子我们拿-rw-r--r--来逐位拆解第1位- → 这是一个普通文件 第2-4位rw- → 所有者权限读写没有执行权限 第5-7位r-- → 所属组权限只有读权限 第8-10位r-- → 其他用户权限只有读权限翻译成人话这个普通文件主人可以看和改其他人只能看不能改。1.3 其他属性简单说明硬链接计数普通文件默认是 1目录默认是 2因为目录里有.指向自己加上本身就是 2 个。新手不用深究知道有这个东西就行。所有者 / 所属组Linux 是多用户系统每个文件都必须有归属用来做权限控制。文件大小默认单位是字节加-h选项会自动换算成 K/M/G更人性化。修改时间默认显示的是「内容修改时间 mtime」Linux 文件还有另外两个时间atime访问时间文件被读取的时间ctime属性改变时间文件权限、所有者被修改的时间二、命令 1查看文件属性2.1ls系列最常用的属性查看命令ls是 list 的缩写专门用来列目录、看文件属性是 Linux 最高频命令之一。① 基础用法ls -l长格式显示详细属性作用列出文件 / 目录的完整属性就是我们上面拆解的 7 列信息语法ls -l [文件名/目录名]举例 1查看当前目录下所有文件的属性ls -l拆解ls命令名 -l选项long 长格式不写参数默认查当前目录。举例 2单独查看test.txt这个文件的属性ls -l test.txt输出示例-rw-r--r-- 1 zhangsan users 4096 Jul 10 10:00 test.txt拆解参数指定目标文件只输出这一个文件的属性。② 进阶ls -la显示包含隐藏文件的所有属性作用Linux 中以.开头的文件是隐藏文件普通ls -l看不到加-a就能全部显示。语法ls -la [路径]举例查看当前目录所有文件含隐藏文件的属性ls -la拆解-la-l-a两个短选项合并a 是 all 的缩写。你会看到.当前目录和..上一级目录这两个特殊隐藏目录。③ 易错必学ls -ld查看目录本身的属性 新手坑直接写ls -l 目录名输出的是目录里面的文件的属性不是目录本身的作用只查看目录这个文件本身的属性不展开里面的内容语法ls -ld 目录名举例查看work目录本身的属性ls -ld work输出示例drwxr-xr-x 2 zhangsan users 4096 Jul 10 10:00 work拆解-d选项directory告诉 ls 我要查目录本身不要进去列内容。可以看到第一位是d说明这是目录类型的文件。④ 人性化大小ls -lh作用把文件大小从字节自动换算成 KB/MB/GB人眼更容易读举例ls -lh原来的4096会变成4.0K大文件会显示成12M、2.5G。2.2stat查看更完整的文件属性ls -l只显示了基础属性stat能看到更全的信息包括三个时间访问 / 修改 / 属性改变、inode 号、文件系统、块大小等调试排错常用。语法stat 文件名举例查看test.txt的完整属性stat test.txt典型输出与解读File: test.txt Size: 4096 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 123456 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/zhangsan) Gid: ( 100/ users) Access: 2024-07-10 10:00:00.000000000 0800 # 访问时间 atime Modify: 2024-07-10 10:00:00.000000000 0800 # 内容修改时间 mtime Change: 2024-07-10 10:00:00.000000000 0800 # 属性改变时间 ctime Birth: -逐成分说明File文件名Size文件大小Blocks占用了多少个磁盘块Inode文件的 inode 编号文件的唯一身份证号Access: (0644/-rw-r--r--)同时用数字和符号两种方式显示权限三个时间分别对应访问、修改、属性改变的时间点三、命令 2修改文件所有者与所属组文件的所有者和组不是固定的可以用命令修改但普通用户只能改自己的文件改系统文件 / 别人的文件需要 root 权限加 sudo。3.1chown修改文件所有者可同时改组chown是 change owner 的缩写功能最强既能单独改所有者也能同时改所有者和所属组。语法chown [选项] 新所有者[:新所属组] 文件名常用选项-R递归recursive修改目录时把目录里所有子文件、子目录一起改规则只写用户名只改所有者写用户名:组名同时改所有者和组只写:组名只改所属组和下面 chgrp 功能一样举例 1修改单个文件的所有者把test.txt的所有者改成lisisudo chown lisi test.txt拆解sudo临时提权改所有者一般需要管理员权限chown命令名lisi新的所有者用户名test.txt目标文件举例 2同时修改所有者和所属组把work目录的所有者改成lisi所属组改成developsudo chown lisi:develop work拆解lisi:develop用冒号分隔前面是所有者后面是组。举例 3递归修改目录下所有文件的所有者把work目录以及里面所有文件、子目录的所有者都改成lisisudo chown -R lisi work拆解-R递归选项操作目录必加不然只会改目录本身里面的文件不变。嵌入式场景提示/dev 下的设备文件默认都是 root 所有如果你的应用程序要操作硬件串口 / GPIO要么用 root 运行程序要么用 chown 把设备文件权限改成你的用户。3.2chgrp单独修改文件所属组chgrp是 change group 的缩写功能单一只能改所属组比 chown 更直观。语法chgrp [选项] 新组名 文件名常用选项-R递归修改目录举例把test.txt的所属组改成developsudo chgrp develop test.txt说明这个功能chown :组名完全能实现新手记 chown 一个就够用了。四、命令 3修改文件权限chmod重中之重chmod是 change mode 的缩写用来修改文件的读 / 写 / 执行权限是 Linux 权限管理的核心命令。修改权限有两种方式符号方式新手友好直观易懂和数字方式高效常用工作中用得多我们分别讲。4.1 方式一符号方式新手推荐先学用字母来表示「给谁改、改什么、怎么改」逻辑非常清晰不容易写错。语法组成chmod [对象][操作符][权限] 文件名① 对象给谁改权限符号含义uuser 所有者文件的主人ggroup 所属组组内的用户oother 其他用户外人aall 所有用户ugo默认不写对象就是 a② 操作符怎么改符号含义增加权限-移除权限设置为指定权限原来的权限全部覆盖只保留指定的③ 权限改什么权限符号含义r读权限w写权限x执行权限符号方式举例逐行拆解举例 1给所有者增加执行权限给test.sh脚本的所有者加上执行权限chmod ux test.sh拆解u对象是所有者增加权限x执行权限效果所有者权限从rw-变成rwx其他组权限不变。举例 2给其他用户移除写权限把test.txt的其他用户的写权限去掉chmod o-w test.txt拆解o对象是其他用户-移除权限w写权限效果其他人只能读不能改更安全。举例 3给所有用户设置只读权限把test.txt的所有用户权限都设为只读覆盖原来的所有权限chmod ar test.txt拆解a所有用户设置为覆盖原有权限r只读效果所有人都只能看不能改也不能执行权限变成-r--r--r--。举例 4同时设置多个对象的不同权限给所有者读写执行给组和其他人只读执行chmod urwx,gorx test.sh拆解用逗号分隔不同对象的设置中间不要加空格urwx所有者 读 写 执行gorx组和其他人 读 执行效果对应权限-rwxr-xr-x就是最常见的脚本权限。4.2 方式二数字方式工作最常用用数字来表示权限写起来更简洁三个数字分别对应用户、组、其他人的权限是行业通用写法。核心规则权限对应数字r 4w 2x 1- 0每组的权限值 对应权限的数字相加得到一个 0-7 的数字。 比如rwx 421 7rw- 420 6r-x 401 5r-- 400 4三个组按顺序拼起来就是三位数字的权限值比如rwxr-xr-x→ 7 5 5 →755rw-r--r--→ 6 4 4 →644数字方式举例举例 1给脚本设置标准权限 755chmod 755 test.sh逐数字拆解第 1 位 7所有者rwx → 读 写 执行第 2 位 5所属组r-x → 读 执行第 3 位 5其他用户r-x → 读 执行适用场景可执行脚本、程序文件的标准权限主人能改其他人只能用。举例 2给普通文本文件设置标准权限 644chmod 644 test.txt拆解所有者rw-6→ 可读可写所属组r--4→ 只读其他用户r--4→ 只读适用场景普通文档、配置文件的标准权限主人能改其他人只能看。举例 3设置只有所有者能读写其他人完全没权限 600chmod 600 secret.txt拆解所有者 6rw组 0---其他人 0---适用场景密码文件、私密文档只有主人能看能改其他人完全碰不到非常安全。 新手安全提醒不要随便给文件777权限所有人读写执行相当于大门敞开任何人都能改能删有极大的安全风险尤其是嵌入式设备、服务器。4.3 递归修改目录权限-R选项和 chown 一样修改目录权限时加-R会把目录里所有子文件、子目录的权限一起改掉。举例把work目录及里面所有文件的权限都设为 755chmod -R 755 work注意递归改权限要谨慎目录和文件的合理权限不一样目录一般需要 x 权限才能进入普通文件不需要 x 权限不要一股脑全改 755。五、命令 4修改文件时间touch我们之前讲过 touch 可以创建空文件它的原生功能其实是修改文件的访问时间和修改时间如果文件不存在就顺便创建一个空文件。5.1 基础用法创建空文件touch new.txt如果new.txt不存在就创建一个空文件时间为当前系统时间。如果已经存在就把它的访问时间和修改时间更新为当前时间。5.2 指定时间修改-d选项把文件的修改时间改成指定的时间touch -d 2024-07-01 12:00:00 test.txt拆解-d选项后面跟时间字符串格式一般是「年 - 月 - 日 时分: 秒」。效果test.txt 的修改时间和访问时间都会变成 2024-07-01 12:00。六、新手常见误区与注意事项目录的 x 权限≠执行程序目录的 x 是「进入权限」没有 x 权限哪怕有 r 权限也进不去目录、看不了里面的文件。删除文件的权限看目录能不能删一个文件不看文件本身有没有 w 权限看文件所在的目录有没有 w 权限。不要滥用 777 权限所有用户都能改能删安全隐患极大生产环境 / 嵌入式设备严禁随便用。修改所有者 / 权限需要权限普通用户只能修改自己拥有的文件修改系统文件、别人的文件需要加sudo提权。ls -l 目录 ≠ 看目录属性要看目录本身的属性一定要加-d选项也就是ls -ld 目录名。新手练习小建议先练ls -l看到任意一行输出都能快速说出文件类型、三组权限分别是什么。用 touch 创建几个测试文件分别用符号方式和数字方式修改权限用ls -l验证结果对不对。尝试创建目录对比ls -l 目录和ls -ld 目录的输出区别加深理解。如果还有哪个部分没看懂或者想了解特殊权限SUID/SGID/ 粘滞位可以随时告诉我。
返回列表