Linux中的755及644等等速记

Linux 是多用户多任务 操作系统,权限是其核心安全机制,通过对用户、用户组、其他用户分配不同操作权限,限制对文件 / 目录的访问、修改、执行等行为,避免资源被非法操作。

Linux 权限的核心围绕3 类主体3 种基本权限 展开,同时支持特殊权限ACL 扩展权限,适配复杂的权限管理场景。

一、Linux 权限的核心主体

Linux 中每个文件 / 目录都归属一个所有者(用户)一个所属用户组 ,其余所有用户归为其他用户,这是权限分配的 3 类核心主体:

  1. 所有者(User,u) :文件 / 目录的创建者或被指定的拥有者,默认创建者为所有者,可通过chown修改。
  2. 所属组(Group,g) :所有者所在的用户组,组内用户可共享该组的权限,可通过chgrp/chown修改。
  3. 其他用户(Other,o):既不是所有者,也不在所属组的所有系统用户,是系统的普通访客。

补充 :Linux 中所有用户信息存于/etc/passwd,用户组信息存于/etc/group,可通过cat命令查看。

二、Linux 3 种基本权限

文件目录 ,Linux 定义了读(r)、写(w)、执行(x) 3 种基本权限,r/w/x 对文件和目录的含义完全不同,这是最易混淆的点,核心区别如下:

1. 基本权限的符号与数字表示

Linux 支持符号表示(r/w/x)数字表示(八进制),数字表示是权限快速赋值的核心,对应关系为:

  • 读(r):4
  • 写(w):2
  • 执行(x):1
  • 无权限(-):0

权限组合 :将对应数字相加,即可得到权限的八进制值(如rwx=4+2+1=7rw-=4+2=6r-x=4+1=5)。

2. 权限对「文件」的含义

文件是实际存储数据 / 指令的载体,权限控制「能否读取内容、修改内容、运行指令」:

  • r(读,4) :可读取文件内容,如cat/more/less/head/tail等命令。
  • w(写,2) :可修改 / 编辑文件内容,如vim/echo/sed等命令(注意 :w 权限不包含删除文件,删除文件的权限由父目录的 w 权限决定)。
  • x(执行,1) :可将文件作为程序 / 脚本运行,如./xxx.sh/./a.out(脚本 / 可执行文件必须有 x 权限才能运行)。

3. 权限对「目录」的含义

目录是文件 / 子目录的索引(路径),权限控制「能否查看目录内容、创建 / 删除文件、进入目录」:

  • r(读,4) :可列出目录内的文件 / 子目录,即ls命令(仅 ls,无法进入目录、无法查看文件详情)。
  • w(写,2) :可在目录内创建、删除、重命名 文件 / 子目录,如touch/mkdir/rm/mv高危权限,赋予需谨慎)。
  • x(执行,1) :可进入该目录,即cd命令(r 权限依赖 x 权限,仅有 r 无 x 时,ls 会提示权限拒绝)。

经典组合

  • 目录r-x:可 cd 进入 + ls 查看内容,无法创建 / 删除文件(最常用的普通权限)。
  • 目录rwx:完全控制,可进、可看、可增删改(仅所有者 / 管理员可赋予)。
  • 目录--x:可 cd 进入,但无法 ls 查看内容(隐藏目录内容,仅知道具体文件名的用户可访问)。

三、查看文件 / 目录的权限

使用 **ls -l(长列表)命令查看权限,输出结果的第一个字段 ** 即为权限信息,以示例说明:

复制代码
# 执行 ls -l,输出如下(拆分解读)
-rw-r--r--  1 root  root  123  1月 28 10:00  test.txt  # 文件
drwxr-xr-x  2 user  user  4096 1月 28 11:00  test_dir  # 目录

权限字段拆分(共 10 位)

第 1 位:文件类型 ,后续 9 位分 3 组(每组 3 位),对应u/g/o的 r/w/x 权限:

  1. 第 1 位 :文件类型标识
    • -:普通文件
    • d:目录
    • l:软链接(符号链接)
    • b:块设备文件(如硬盘、U 盘)
    • c:字符设备文件(如键盘、鼠标)
  2. 第 2-4 位所有者(u) 权限(如rw-表示用户有读、写,无执行)
  3. 第 5-7 位所属组(g) 权限(如r--表示组用户仅有读,无写、执行)
  4. 第 8-10 位其他用户(o) 权限(如r--表示其他用户仅有读,无写、执行)

其他字段说明(ls -l)

  • 第 2 位:链接数(文件为硬链接数,目录为子目录数 + 1)
  • 第 3 位:所有者
  • 第 4 位:所属组
  • 第 5 位:文件大小(字节,目录固定为 4096)
  • 第 6-8 位:修改时间
  • 第 9 位:文件名 / 目录名

四、修改权限:chmod 命令

chmod(change mode)是修改文件 / 目录权限的核心命令,支持符号模式数字模式,数字模式更简洁高效,符号模式更灵活(适合只修改某类主体的权限)。

语法格式

复制代码
# 数字模式(推荐,直接赋值u/g/o的权限)
chmod [数字权限] 文件名/目录名

# 符号模式(u/g/o/a +-= r/w/x,a=all=u+g+o)
chmod [主体][操作][权限] 文件名/目录名

关键参数

  • -R递归修改,对目录及其下所有文件 / 子目录统一修改权限(目录必加,否则仅修改目录本身)。

1. 数字模式示例(最常用)

核心:将 u/g/o 的权限分别转换为数字,按u-g-o顺序组合成 3 位数字(0-7)。

复制代码
# 1. 普通文件:用户rw、组r、其他r(644,文件默认权限)
chmod 644 test.txt

# 2. 可执行脚本:用户rwx、组rx、其他rx(755,脚本/程序默认权限)
chmod 755 test.sh

# 3. 目录:用户rwx、组rx、其他---(750,仅所有者和组用户可访问)
chmod -R 750 test_dir

# 4. 完全控制(仅所有者):用户rwx、组---、其他---(700,私密文件/目录)
chmod 700 private.txt

2. 符号模式示例(精准修改)

适合仅修改某类主体的某一项权限,无需重新赋值所有权限:

复制代码
# 1. 给所有者添加执行权限(u+x)
chmod u+x test.txt

# 2. 给所属组移除写权限(g-w)
chmod g-w test_dir

# 3. 给其他用户设置读和执行权限(o=rx)
chmod o=rx test.sh

# 4. 给所有用户添加写权限(a+w,高危,慎用)
chmod a+w public.txt

# 5. 递归给目录的组用户添加写权限(g+w -R)
chmod -R g+w test_dir

五、修改所有者 / 所属组:chown、chgrp 命令

权限的主体(u/g)可通过命令修改,chown 可同时修改所有者和所属组chgrp 仅修改所属组 ,需root 权限(普通用户仅能修改自己拥有的文件 / 目录)。

1. chown(change owner):修改所有者 / 所属组

语法
复制代码
# 仅修改所有者
chown 新用户 文件名/目录名

# 同时修改所有者和所属组(用户:组,无空格)
chown 新用户:新组 文件名/目录名

# 递归修改(目录必加-R)
chown -R 新用户:新组 目录名
示例
复制代码
# 将test.txt的所有者改为user
chown user test.txt

# 将test_dir及其子内容的所有者改为user,所属组改为usergroup
chown -R user:usergroup test_dir

2. chgrp(change group):仅修改所属组

语法
复制代码
# 仅修改所属组
chgrp 新组 文件名/目录名

# 递归修改
chgrp -R 新组 目录名
示例
复制代码
chgrp -R usergroup test_dir

六、Linux 默认权限:umask 掩码

Linux 中新建文件 / 目录 会有默认权限 ,由umask(权限掩码) 决定,umask 是「系统默认扣除的权限」,作用于所有新创建的文件 / 目录。

1. 查看 umask 值

复制代码
umask  # 输出4位数字(如0022,第一位为特殊权限掩码,后三位为基本权限掩码)

常用 umask 值:0022(系统默认,普通用户 /root)、0002(组共享环境)。

2. 默认权限计算规则

  • 新建目录 :默认最大权限为777,实际权限 = 777 - umask后三位
  • 新建文件 :默认最大权限为666(Linux 规定新建文件无 x 执行权限,防止恶意脚本),实际权限 = 666 - umask后三位

3. 计算示例(umask=0022)

复制代码
# 新建目录:777 - 022 = 755(rwxr-xr-x)
# 新建文件:666 - 022 = 644(rw-r--r--)

这也是 Linux 中新建文件默认644、新建目录默认755的原因。

4. 临时修改 umask(仅当前终端有效)

复制代码
# 将umask改为0002,新建目录775、新建文件664
umask 0002

永久修改 :编辑/etc/profile(全局)或~/.bashrc(当前用户),添加umask 0002,执行source 文件名生效。

七、Linux 特殊权限(SUID/SGID/Sticky)

除了 r/w/x,Linux 还有 3 种特殊权限 ,用于解决特殊场景的权限问题(如提权执行、组共享目录、防止目录内文件被误删),特殊权限会占用u/g/o 的 x 权限位,用s/S/t/T标识。

1. SUID(Set User ID,设置用户 ID)

  • 作用普通用户执行某程序时,临时获得该程序「所有者」的权限 (仅对可执行文件有效,目录无 SUID)。
  • 标识 :占用所有者(u)的 x 位,若 u 有 x 权限则显示s,无 x 则显示S
  • 经典示例/usr/bin/passwd(修改密码命令),普通用户可执行该命令修改自己的密码,就是因为 passwd 有 SUID 权限(所有者为 root,执行时临时获得 root 权限,才能修改/etc/shadow(密码文件))。
  • 设置chmod u+s 文件名 / chmod 4755 文件名(4 为 SUID 的数字标识)。
  • 风险 :SUID 是高危权限 ,若给/bin/bash设置 SUID,普通用户可执行 bash 获得 root 权限,导致系统被攻破,严禁给系统核心命令设置 SUID

2. SGID(Set Group ID,设置组 ID)

  • 作用 1 :对可执行文件:普通用户执行该程序时,临时获得程序「所属组」的权限。

  • 作用 2 :对目录 :目录内新建的文件 / 子目录 ,其所属组会继承该目录的所属组 (而非创建者的默认组),适合组共享目录(核心作用)。

  • 标识 :占用所属组(g)的 x 位,若 g 有 x 权限则显示s,无 x 则显示S

  • 设置chmod g+s 文件名/目录名 / chmod 2755 文件名/目录名(2 为 SGID 的数字标识)。

  • 示例 :创建组共享目录,所有组用户在该目录内创建的文件都归该组所有:

    复制代码
    chmod -R 2775 share_dir  # 2=SGID,775=用户rwx、组rwx、其他rx

3. Sticky(粘滞位)

  • 作用 :对目录 有效,目录内的文件仅所有者、root、目录所有者 可删除 / 重命名,防止组内用户 / 其他用户误删他人文件(即使目录有 w 权限)。
  • 标识 :占用其他用户(o)的 x 位,若 o 有 x 权限则显示t,无 x 则显示T
  • 经典示例/tmp(系统临时目录),所有用户都可在其中创建 / 修改文件,但无法删除他人文件,就是因为/tmp有 Sticky 权限。
  • 设置chmod o+t 目录名 / chmod 1777 目录名(1 为 Sticky 的数字标识)。

特殊权限的数字组合

特殊权限的数字标识为4(SUID)、2(SGID)、1(Sticky) ,可与基本权限的 3 位数字组合成4 位数字,如:

  • 4755 = SUID + u=rwx、g=rx、o=rx
  • 2775 = SGID + u=rwx、g=rwx、o=rx
  • 1777 = Sticky + u=rwx、g=rwx、o=rwx

八、ACL 扩展权限(解决 3 类主体的局限)

Linux 基本权限仅支持u/g/o 3 类主体,无法给单个用户 / 单个组 单独分配权限(如给用户test单独赋予test_dir的 rw 权限,其他用户无),此时需要ACL(Access Control List,访问控制列表) 扩展权限。

ACL 允许给任意多个用户、任意多个组分别分配独立的权限,是基本权限的补充,需确保文件系统支持(主流 Linux 发行版默认支持)。

1. 查看 ACL 权限:getfacl

复制代码
# 查看文件/目录的ACL权限
getfacl test.txt
getfacl test_dir

2. 设置 ACL 权限:setfacl

核心参数
  • -m添加 / 修改ACL 规则(modify)
  • -x删除ACL 规则(remove)
  • -b清除所有ACL 规则(backup)
  • -R递归设置(目录)
语法与示例
复制代码
# 1. 给单个用户添加权限:u:用户名:权限
setfacl -m u:test:rwx test_dir  # 给用户test赋予test_dir的rwx权限

# 2. 给单个组添加权限:g:组名:权限
setfacl -m g:testgroup:rx test_dir  # 给组testgroup赋予rx权限

# 3. 递归给目录添加ACL规则(-R)
setfacl -R -m u:test:rwx test_dir

# 4. 删除单个用户的ACL规则
setfacl -x u:test test_dir

# 5. 清除所有ACL规则
setfacl -b test_dir

3. 查看 ACL 权限的 ls -l 标识

添加 ACL 权限后,ls -l的权限字段最后一位 会显示 **+**,表示该文件 / 目录有 ACL 扩展权限:

复制代码
drwxrwxr-x+ 2 root  root  4096 1月 28 14:00  test_dir

九、Linux 权限管理的核心原则(安全规范)

  1. 最小权限原则:仅给用户 / 组赋予「完成工作所需的最小权限」,不赋予多余权限(如普通用户无需 w 权限的目录,绝不赋予)。
  2. 目录与文件权限分离 :文件默认644(rw-r--r--),目录默认755(rwxr-xr-x),可执行脚本默认755,私密文件 / 目录设为700
  3. 慎用高危权限
    • 避免给其他用户(o)赋予 w/x 权限;
    • 严禁给系统核心命令(如 bash、ls、cp)设置 SUID;
    • 目录的 w 权限仅赋予所有者 / 管理员,组共享目录用SGID+2775替代。
  4. 组共享用 SGID+ACL:多用户共享目录时,优先使用 SGID(继承组)+ ACL(单独赋权),而非直接给组赋予 w 权限。
  5. /tmp 目录保护 :确保/tmp的 Sticky 权限(1777)不被修改,防止用户误删他人文件。
  6. root 权限慎用 :尽量用普通用户操作,仅需管理员权限时用sudo,避免直接登录 root(防止误操作删除系统文件)。

十、常用权限速查表(必记)

权限数字 符号权限 适用对象 场景说明
644 rw-r--r-- 普通文件 系统默认,所有者可读写,组 / 其他仅读
755 rwxr-xr-x 脚本 / 程序 / 目录 可执行文件 / 公共目录,所有者完全控制,组 / 其他可访问 / 执行
700 rwx------ 私密文件 / 目录 仅所有者可访问,组 / 其他无任何权限(如个人配置文件)
750 rwxr-x--- 内部共享目录 所有者完全控制,组用户可访问,其他用户无权限
2775 rwxrwsr-x 组共享目录 SGID + 组可读写,目录内新文件继承组,其他用户仅读
1777 rwxrwxrwt 公共临时目录 Sticky,所有用户可创建 / 修改,不可删除他人文件(如 /tmp)
4755 rwsr-xr-x 特殊可执行文件 SUID,普通用户执行时临时获得所有者权限(如 passwd)
相关推荐
hweiyu002 小时前
Linux 命令:csplit
linux·运维·服务器
守正出琦2 小时前
Linux信号核心函数速查表
linux·运维·服务器
草草_2 小时前
【内核驱动基础】主设备号与次设备号
linux·内核驱动
cws2004012 小时前
Linux如何通过命令实现立即关机?shutdown命令的now参数使用详解
linux·运维·服务器
何以不说话2 小时前
记录一下学习日常⑩(docker)
linux·运维·docker·容器
m0_694845572 小时前
网站账号太多难管理?Enterr 开源自动化工具搭建教程
运维·服务器·前端·开源·自动化·云计算
卌卄2 小时前
【Linux】MySQL安装配置
linux·运维·mysql
hnxaoli3 小时前
统信小程序(八)归档目录自动调整
linux·python
鸠摩智首席音效师3 小时前
如何确定 Linux 下的文件系统类型 {Ext3, Ext4, XFS} ?
linux·运维·服务器