Linux文件基本属性
一、为什么Linux要划分文件权限?
Windows仅区分管理员、普通用户两类用户,日常几乎不会碰到权限报错。但Linux多用于服务器,单台服务器会同时交付开发、运维、测试等数十名人员共用。
通俗类比:服务器=合租公寓,文件=个人储物柜
- 文件所属用户(owner):储物柜主人,拥有文件全部控制权
- 文件所属用户组(group):合租室友群体,仅能有限访问文件
- 其他用户(other):公寓外来陌生人,默认无任何访问权限
Linux会针对以上三类用户,分别配置读、写、执行三项独立权限,规避多人共用服务器时误删、篡改他人文件的风险。
二、查看文件属性(ls -l)
执行ls -l查看文件详细属性,示例结果:-rwxr--r-- 1 root test 2048 Jun 10 10:00 test.txt
拆分前10位权限字符,零基础直接记忆:
- 第1位:文件类型:
-普通文件、d目录文件夹、l软链接,其余类型无需掌握 - 2-4位(u属主):文件主人权限,r读、w写、x执行
- 5-7位(g属组):同组用户权限,权限规则和属主完全一致
- 8-10位(o其他):外部陌生用户权限,权限规则和属主完全一致
每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。

小白核心误区
普通文件x权限:代表程序可以运行
目录文件夹x权限:代表可以进入、切换到该目录,90%新手权限拒绝报错都是缺失目录x权限
三、两大修改命令(小白精简用法,无冷门参数)
1、chown:修改文件所属用户、所属用户组
使用场景:root创建的文件,普通用户无法访问,需要转移文件归属
- 仅修改属主:
chown 用户名 文件名
示例:chown zhangsan test.txt,文件主人改为zhangsan,所属用户组不变 - 同时修改属主+属组:
chown 用户名:组名 文件名
示例:chown zhangsan:dev test.txt,主人zhangsan,dev组全员可访问 - 目录递归修改:
chown -R 用户名:组名 目录路径
注意:-R参数只用于目录,绝对不要用于单个文件,禁止对/etc系统目录递归修改
2、chmod:修改文件读写执行权限
两种使用方式,新手优先字母模式,企业工作优先数字模式
方式1:字母模式(无需计算,新手首选)
身份缩写:u属主、g属组、o其他、a全部用户
操作符号:+增加权限、-删除权限、=覆盖原有权限
实操1:所有用户增加读权限 chmod a+r test.txt
实操2:取消同组用户写入权限 chmod g-w test.txt
方式2:数字模式(企业通用)
权限数值对应:r=4、w=2、x=1,权限数值直接相加
- 7(4+2+1):读写执行全权限
- 6(4+2):读写权限(普通文件默认权限)
- 5(4+1):读+进入权限(安全目录默认权限)
通用实操:chmod 644 test.txt,属主读写,属组、其他人只读,线上业务文件标配权限
四、小白高频权限报错避坑
- 提示Permission denied:大概率不是文件所有者,或是缺少文件r读权限/目录x进入权限
- -R递归参数严禁乱用:改动系统/etc目录会直接导致服务器系统崩溃
- root账号特殊规则:root是超级管理员,无视全部文件权限限制,可随意修改所有文件
终极记忆口诀
一看二改归属三改权限,ls查属性、chown改主人、chmod改读写
需要我把这份纯文字压缩成一页速记短句,方便你直接背诵吗?
先纠正:正确命令是 chown (改所有者)、chmod(改权限),下面分用法、示例整理。
一、chown 修改文件/目录 所有者、所属组
语法
bash
chown [选项] 用户名[:组名] 文件名/目录
常用示例
- 修改所有者
bash
chown user1 test.txt
把 test.txt 归属用户 user1
- 同时改所有者 + 所属组
bash
chown user1:group1 test.txt
- 只修改所属组
bash
chown :group1 test.txt
- 递归修改(目录下所有文件/子目录)
加-R参数
bash
chown -R user1:group1 /home/testdir
二、chmod 修改权限(最常用)
两种用法:数字权限 / 符号权限
1. 数字权限(推荐,简单通用)
权限对应数值:
- 读 r = 4
- 写 w = 2
- 执行 x = 1
三段权限:所有者 所属组 其他用户
常用权限组合
bash
# 所有者读写执行,组和其他只读
chmod 744 test.txt
# 所有者读写,组和其他只读(文件最常用)
chmod 644 test.txt
# 目录常用:所有人可读进入
chmod 755 testdir
# 仅所有者可读写执行
chmod 700 testdir
递归改目录权限
bash
chmod -R 755 /home/testdir
2. 符号权限(u/g/o/a + ±=)
u:所有者g:组o:其他人a:所有人+加权限-减权限=设定权限
示例:
bash
# 给所有者加执行权限
chmod u+x test.sh
# 取消其他用户写权限
chmod o-w test.txt
# 所有人添加读权限
chmod a+r test.txt
三、快速记忆&实战常用命令合集
bash
# 1. 文件标准权限
chmod 644 文件名
# 2. 目录/脚本标准权限
chmod 755 目录/脚本.sh
# 3. 递归统一目录所有者+权限(建站/部署高频)
chown -R www:www /var/www/html
chmod -R 755 /var/www/html
# 4. 私密文件/目录(仅自己访问)
chmod 700 私密目录
chown root:root 私密文件
四、补充小技巧
- 查看当前权限/所有者:
ls -l - 普通用户只能改自己文件 权限,改系统文件/其他用户文件需要
sudo
bash
sudo chmod 755 /root/test
sudo chown root:root /root/test