Linux 文件基本属性
《Linux 文件基本属性》
📁 学习目标
- 理解 Linux 文件的基本属性,包括权限、所有者、时间戳等。
- 掌握
ls -l
命令的输出含义,能快速识别文件类型和权限信息。 - 能使用
chmod
、chown
、chgrp
修改文件属性。 - 在阿里云 Ubuntu ECS 上进行实际操作与排错练习。
🧠 核心重点(表格提炼)
属性 | 内容说明 |
---|---|
文件类型 | 普通文件 - 、目录 d 、链接文件 l 、设备文件 b/c 等 |
权限 | 所有者 rwx 、组 rwx 、其他 rwx |
所有者 | 文件所属用户(owner) |
所属组 | 文件所属用户组(group) |
文件大小 | 字节数或人类可读格式(如 5K , 10M ) |
时间戳 | 最后修改时间(mtime)、访问时间(atime)、状态改变时间(ctime) |
🔍 详细讲解
1. 使用 ls -l
查看文件属性 👀
-rw-r--r-- 1 ubuntu ubuntu 123 Apr 5 10:00 file.txt
drwxr-xr-x 2 ubuntu ubuntu 4096 Apr 5 10:00 mydir/
lrwxrwxrwx 1 ubuntu ubuntu 7 Apr 5 10:00 link -> file.txt
📌 解释每一列:
列数 | 含义 |
---|---|
1 | 文件类型 + 权限字符串 |
2 | 链接数(硬链接数量) |
3 | 文件所有者 |
4 | 文件所属组 |
5 | 文件大小(字节) |
6-8 | 最后一次修改时间(月 日 时) |
9 | 文件名 |
2. 文件类型详解 🧱
类型字符 | 文件类型 | 示例 |
---|---|---|
- |
普通文件 | file.txt |
d |
目录 | mydir/ |
l |
符号链接(软连接) | link -> file.txt |
b |
块设备文件 | /dev/sda |
c |
字符设备文件 | /dev/tty |
p |
管道文件 | FIFO |
s |
套接字文件 | socket |
📄 查看文件类型命令:
file /path/to/file
3. 文件权限解析 🔐
✅ 权限结构:
rw-r--r--
可以拆分为三部分:
rw-
:所有者(User)r--
:所属组(Group)r--
:其他人(Others)
每个权限位表示:
r
:读(Read)——允许查看内容w
:写(Write)——允许修改内容x
:执行(eXecute)——允许作为程序运行
✅ 数字权限对照表:
权限符号 | 数值 |
---|---|
--- |
0 |
--x |
1 |
-w- |
2 |
-wx |
3 |
r-- |
4 |
r-x |
5 |
rw- |
6 |
rwx |
7 |
📌 示例:
chmod 644 file.txt # rw-r--r--
chmod 755 script.sh # rwxr-xr-x
4. 修改文件权限:chmod
🔧
✅ 使用符号方式修改权限:
chmod u+x script.sh # 给所有者增加执行权限
chmod go-w file.txt # 去除组和其他人的写权限
chmod a=r file.txt # 所有人只能读
✅ 使用数字方式修改权限:
chmod 755 dir_name # 设置为 rwxr-xr-x
chmod 600 secret.txt # 设置为 rw-------
📌 注意事项:
- 不要随意给文件设置
777
,这会带来安全风险。 - 对于脚本文件(如
.sh
),记得添加执行权限才能运行。
5. 修改文件所有者和组:chown
& chgrp
👤
✅ 修改所有者:
sudo chown john file.txt
✅ 修改所有者和组:
sudo chown john:developers file.txt
✅ 只修改组:
sudo chgrp developers file.txt
📌 注意事项:
- 普通用户不能随意更改文件的所有者,需用
sudo
提权。 - 修改目录及其子目录的权限和所有者时加上
-R
参数:
sudo chown -R john:developers mydir/
sudo chmod -R 755 mydir/
6. 文件时间戳管理 🕒
Linux 文件包含三种时间戳:
时间戳 | 含义 | 命令 |
---|---|---|
atime |
Access time(最后访问时间) | cat file.txt |
mtime |
Modify time(最后修改内容时间) | echo "hello" >> file.txt |
ctime |
Change time(最后修改元数据时间) | chmod , chown |
📌 查看时间戳:
stat file.txt
📌 手动修改时间戳(用于测试):
touch -t 202504051200 file.txt # 设置时间为 2025年4月5日 12:00
7. 文件链接:硬链接 vs 软链接 🔄
✅ 硬链接(Hard Link)
- 实际指向同一个 inode
- 删除原文件不影响链接文件(只要还有一个硬链接存在)
- 不能跨文件系统,不能对目录创建
ln file.txt hard_link
✅ 软链接 / 符号链接(Symbolic Link)
- 类似 Windows 的快捷方式
- 删除原文件后链接失效
- 可以跨文件系统,也可以链接目录
ln -s file.txt soft_link
📌 注意:
- 使用
ls -l
查看时,软链接显示箭头指向原始文件。 - 删除软链接不会影响原始文件。
🧩 实战案例:ECS 环境下的常见场景 🛠️
场景一:部署网站提示“Permission denied”🚫
你上传了一个 PHP 网站到 /var/www/html
,但浏览器访问时报错:
“Permission denied”
📌 排查思路:
- 检查文件权限:
ls -l /var/www/html/index.php
- 如果是
600
或无读权限,修改为644
:
sudo chmod 644 /var/www/html/index.php
- 检查文件所有者是否为
www-data
(Apache/Nginx 用户):
sudo chown www-data:www-data /var/www/html/index.php
场景二:脚本无法执行 ❌
你编写了一个 Shell 脚本 deploy.sh
,但在运行时报错:
“Permission denied”
📌 排查思路:
- 检查是否有执行权限:
ls -l deploy.sh
- 添加执行权限:
chmod +x deploy.sh
- 运行脚本:
./deploy.sh
场景三:误删软链接的目标文件 🧨
你创建了一个软链接:
ln -s /home/ubuntu/data.txt link.txt
后来删除了 data.txt
,再访问 link.txt
会提示:
“No such file or directory”
📌 解决方法:
- 重新创建目标文件,或删除无效软链接:
rm link.txt
🧰 小贴士(建议收藏)🔖
技巧 | 说明 |
---|---|
ls -F |
自动在目录后面加 / ,便于区分 |
ls -a |
显示隐藏文件(以 . 开头) |
ls -h |
人性化显示文件大小(如 1K , 2M ) |
ls -t |
按修改时间排序 |
ls -S |
按文件大小排序 |
find / -name "*.log" |
查找所有 .log 文件 |
du -sh * |
快速查看当前目录下各文件/目录大小 |
🎯 总结一句话:
“掌握 Linux 文件属性,就像拥有了一把万能钥匙🔑 —— 它不仅能帮你保护文件安全,还能让你轻松搞定服务器上的各种权限问题!”
是否继续下一章?我将继续输出:
- 《Linux 用户与组管理实战》🔐
- 《Shell 命令入门与自动化脚本》🖥️
- 《Linux 文件查找与文本处理技巧》🔍
请告诉我你想深入的方向吧!🚀