第 1 篇:《Linux权限通关指南:从sudo提权到属主属组的“安全法则”》
前言
在 Linux 的世界里,几乎每天都会遇到 Permission denied(权限不足)。很多新手图省事,直接一把梭哈 chmod 777 或者全程用 root 账户登录。这在生产环境中等于直接把自家大门敞开。
今天带大家用最优雅、最安全的方式搞定 Linux 的权限控制。
一、 属主与属组:文件到底归谁管?
Linux 是一个多用户系统,每个文件和目录都有它的拥有者(属主,User)和所属群组(属组,Group)。
1. 修改文件“主人”:chown
当需要把一个文件移交给其他用户,或者配置 Web 服务目录时,经常需要修改属主。
# 将 file.txt 的属主修改为 tom
chown tom file.txt
# 同时修改属主和属组(用冒号隔开)
chown tom:webgroup file.txt
# 递归修改整个目录及其下所有文件的属主(-R 极其常用)
chown -R tom /var/www/html/
2. 修改所属群组:chgrp
如果你只想改变文件的群组,让某个团队的成员都能协同操作:
# 将 file.txt 的属组修改为 webgroup
chgrp webgroup file.txt
二、 sudo 提权:不要总用 root 登录!
日常运维中,我们应该使用普通用户登录。当需要执行系统级任务(如重启服务、安装软件)时,再通过 sudo 临时获取 root 权限。
核心配置:如何给普通用户赋能?
普通用户默认是用不了 sudo 的,必须由管理员在 /etc/sudoers 文件中配置。
1.避坑铁律
绝对不要直接用 *vim /etc/sudoers!*因为一旦语法写错,整个系统的 sudo 功能可能会瘫痪。请务必使用安全命令:visudo。它会在你保存时自动检查语法。
配置步骤:
1.输入 sudo visudo(或以 root 身份执行 visudo)。
2.找到下面这行:
# visudo编辑器
root ALL=(ALL:ALL) ALL
3.在它下面添加你想提权的用户(比如 jon):
# visudo编辑器
jon ALL=(ALL:ALL) ALL
4.保存退出。现在用户 jon 就可以通过在命令前加 sudo 来执行系统命令了。
三.💡 核心踩坑点与细节分析(重点)
1.场景
创建了一个新用户,并把它拉进了一个拥有某目录写权限的群组(webgroup),本以为该用户可以高高兴兴地去创建和删除文件了。结果一顿操作,依然报错 Permission denied.
原因分析:
Linux 的群组权限缓存是在用户登录时加载的。如果你在用户已经登录的情况下,在另一个终端里把它加入新组,当前登录的会话是感知不到这个权限变化的。
2.正确解法
1.刷新重连SSH
2.临时生效。在当前终端执行 newgrp webgroup,这会切换用户的当前有效群组,不需要重新登录就能立刻获取新组的权限。
四、总结
1.能用 sudo 就不用 root,安全第一。
2.改权限记得用 -R,但要看清路径,别在根目录 / 乱来。
3.加完群组记得刷新会话,别跟缓存死磕。
第 2 篇:《一文搞懂 Linux 文件“双胞胎”:软链接与硬链接的底层区别》
“软链接”和“硬链接”是 Linux 里面特别容易让人头大的概念,很多人面试时遇到也是靠死记硬背。为了让这篇博客通俗易懂、一针见血,我们今天引入一个绝妙的比喻——“房产证与影印件”,并直接切入 Linux 底层的 inode(索引节点)
一文搞懂 Linux 文件“双胞胎”:软链接与硬链接的底层区别
在 Linux 系统中,我们经常会遇到需要为文件创建“快捷方式”的场景。Linux 提供了两种链接方式:软链接(Symbolic Link) 和 硬链接(Hard Link)。
它们看起来都能指向同一个文件,但底层的实现逻辑却有着天壤之别。今天这篇博客,带大家彻底从底层搞懂这对“双胞胎”。首先从一切的根源inode说起.
🧭 核心前置知识:什么是 inode?
要理解链接,必须先知道 Linux 是怎么存文件的。在 Linux 文件系统中,一个文件被分成两个部分:
- Metadata(元数据): 包含文件的权限、大小、创建时间等,以及最核心的身份标识——inode 号(索引节点号)。
- Data Block(数据块): 实际存放文件内容的格子。
💡 核心底线: 操作系统找文件,不是认文件名,而是认 inode 号。文件名只是人类为了方便记忆,给 inode 贴上的“小纸条”。
一. 硬链接(Hard Link):文件的“克隆体”
硬链接,实际上就是给同一个 inode 号又贴了一张“新纸条(文件名)”。
- 比喻: 就像一栋房子,正门贴了张“Chaoyang 的家”的门牌,后门又贴了张“Chaoyang 的秘密基地”的门牌。两个门牌指向的是同一栋房子。
1. 创建命令
# 为 target.txt 创建一个名为 hard.txt 的硬链接(注意我这里没有写路径,默认为当前路径.)
ln target.txt hard.txt
2.2. 底层特性
如果你用 ls -i 查看它们的 inode 号,你会发现它们完全一样:
$ ls -i
123456 target.txt
123456 hard.txt
独立性:
删除原文件 target.txt,硬链接 hard.txt 完全不受影响,你依然能正常读取文件内容。因为这栋房子只要还有一个门牌在,它就存在。
限制:
硬链接不能跨文件系统(分区),且不能作用于目录(防止引发死循环)。
二. 软链接(Symbolic Link):纯粹的“快捷方式”
软链接是一个独立的新文件,这个文件里面只存了一串路径——它指向原文件的名字。
比喻:
就像 Windows 的桌面快捷方式。或者说,它是一张纸,上面写着“真正的房产证在二楼保险箱”。
1.创建命令(注意必须带 -s)
为 target.txt 创建一个名为 soft.txt 的软链接
# 为 target.txt 创建一个名为 soft.txt 的软链接
ln -s target.txt soft.txt
2.底层特性
用 ls -i 查看,它们拥有完全不同的 inode 号:
$ ls -i
123456 target.txt
9394234 soft.txt
①依赖性:
如果删除了原文件 target.txt,软链接 soft.txt 就会立刻失效(变成死链接,闪烁红字报错)。因为快捷方式指向的源头没了。
②优势:
软链接非常自由,可以跨文件系统,也可以针对目录创建。
三、 💡 核心踩坑点与实验分析
很多新手朋友在用命令测试链接时,经常会被一些表象迷惑。我们来做两个极其经典的实验:
实验 1:修改硬链接,原文件会变吗?
操作:
修改 hard.txt 的内容。
现象:
查看 target.txt,内容同步变了!
底层分析:
因为它们共享同一个 inode,指向同一个 Data Block。你改的是同一栋房子的内部装修,从哪个门进去看都变了。
实验 2:打包压缩时的“体积惨剧”
场景:
你的目录下有一个 1GB 的大文件,你为了方便方便访问,给它创建了 3 个硬链接和 3 个软链接。总共看起来有 7 个文件。
硬链接的表现:
整个目录在磁盘上实际只占用 1GB。因为不管有多少硬链接,数据块只有那一份。
踩坑点: 如果你用 tar -h(或 --dereference)去打包这个目录,tar 会把软链接指向的源文件内容也抓过来打包。原本只有 1GB 的目录,打包出来可能会变成好几个 GB!
⚠️ 避坑提示: 在对包含大量链接的系统(如备份 /var/log 或特定数据盘)进行压缩解压时,务必搞清楚你是想备份“链接关系”本身,还是想备份“真实数据”,合理使用 tar 的参数。
四.对比记忆

如果觉得这篇底层的拆解帮到你了,记得点赞、收藏!下一篇我们刚好顺着刚才提到的压缩避坑点,聊聊 Linux 里那些让人头晕的 tar、gzip 压缩命令!

1826

被折叠的 条评论
为什么被折叠?



