云计算百科
云计算领域专业知识百科平台

【Linux】 权限管理(知识梳理 + 面试题)


  Linux 权限管理完整详解  

一、Linux 权限的概念

1.1 权限诞生背景

        Linux 是多用户分时操作系统,允许多个用户同时登录、操作系统资源。为了防止用户随意修改、删除他人文件,隔离资源、保障系统安全,内核引入权限访问控制机制。

        Windows 采用 ACL 访问控制列表;

        Linux 基础模型采用经典UGO(User/Group/Other)权限模型。

1.2 UGO 三类身份

使用 ls -l 查看文件时,每一个文件 / 目录都会绑定三类访问者身份:

-rw-r–r– 1 ubuntu ubuntu 120 Jul 22 10:00 test.txt

  • u (user,属主 / 所有者):文件创建者、拥有者,权限优先级最高;
  • g (group,属组):归属用户组内的所有成员;
  • o (other,其他用户):既不是属主、也不在属组内的所有人;
  • a(all):简写,代表 u+g+o 全部三类人。
  • 1.3 三种基础权限 r w x

    权限字符含义八进制值
    r(read) 读权限 4
    w(write) 写权限 2
    x(execute) 执行权限 1

    ⚠️ 重中之重:rwx 对【文件】和【目录】含义完全不同!很多初学者踩坑就在这里,后文单独讲解目录权限。

    1.4 ⽂件类型和访问权限(事物属性)

  • d:⽂件夹
  • -:普通⽂件
  • l:软链接(类似Windows的快捷⽅式)
  • b:块设备⽂件(例如硬盘、光驱等)
  • p:管道⽂件
  • c:字符设备⽂件

  • 二、文件权限值的两种表示方法

    执行 ls -l 看到 -rwxr-xr–,权限分为字符表示法、数字(八进制)表示法。

    2.1 字符符号表示法

    权限串一共 9 位,分为三段,每 3 位对应一类身份 u g o: – rwx r-x r–

    • 第 1 段(1~3 位):属主 u 权限 rwx
    • 第 2 段(4~6 位):属组 g 权限 r-x
    • 第 3 段(7~9 位):其他人 o 权限 r– – 代表没有该权限

    2.2 八进制数字表示法(最常用)

    规则:r=4,w=2,x=1,同一段内权限数值相加。 示例拆解:rwxr-xr–

    • u:rwx = 4+2+1 = 7
    • g:r-x = 4+0+1 = 5
    • o:r– = 4+0+0 = 4 最终权限数字:754

    常见标准权限(生产通用规范)

    权限数字字符权限使用场景
    644 rw-r–r– 普通文本文件、配置文件(默认文件权限)
    755 rwxr-xr-x 可执行程序、普通目录(默认目录权限)
    600 rw——- 密钥、隐私配置文件(仅属主读写)
    700 rwx—— 私人目录,禁止任何人访问
    777 rwxrwxrwx 不推荐!所有人完全控制,极度不安全

    补充:数字权限本质是二进制掩码 rwx = 111 (2) =7;rw-=110=6;r–=100=4


    三、文件访问权限的相关设置方法

    核心两条命令:chmod(修改权限)、chown(修改属主、属组)

    3.1 chmod:修改文件 / 目录权限两种语法:符号模式、数字模式

    ① 符号模式(直观,增量修改)

    chmod [身份][操作][权限] 文件
    身份:u/g/o/a
    操作:+ 添加权限 – 移除权限 = 直接设置权限
    权限:r/w/x

    chmod u+x test.sh # 给属主增加执行权限
    chmod g-w test.txt # 删除属组写权限
    chmod o=r test.txt # 强制设置其他人只有读权限
    chmod a+w test.txt # 所有人添加写权限

    ② 数字模式(简洁,直接覆盖所有权限)

    chmod 644 test.txt
    chmod 755 test_dir

    递归修改目录权限 -R

    ⚠️慎用 -R,会递归修改目录内部所有文件、子目录权限!

    chmod -R 755 /home/work

    3.2 chown:修改文件【属主、属组】

    普通用户只能修改自己文件的属组;修改属主必须 root 权限 语法:

    # 修改所有者
    chown 用户名 文件名
    # 修改所有者+所属组
    chown 用户:组 文件名
    # 仅修改属组
    chown :组名 文件名

    chown ubuntu test.txt
    chown ubuntu:ubuntu test.txt
    # 递归修改目录归属
    chown -R ubuntu:ubuntu /home/work

    3.3 chgrp:仅修改属组(语义清晰,适合只改组的场景)

    chgrp [选项] 组名 文件名/目录

    3.4 umask:新建文件 / 目录时,用来 “屏蔽扣除” 默认权限的掩码

    umask 称为权限掩码,作用是控制系统中新创建文件与目录的默认访问权限。
    系统拥有默认最大基准权限,umask 指定需要屏蔽去除的权限;
    新建对象最终权限等于基准权限掩码清除 umask 对应的权限位。
    umask 设置仅对之后新建文件生效,不会改变已有文件权限


    四、file 指令

      file 命令不是修改权限命令,作用:探测文件真实类型,区分文本、二进制程序、目录、脚本、压缩包等。

            ls 只能看文件名后缀,Linux不依赖后缀识别文件类型,后缀只是方便人类阅读。

    基础用法

    file test.txt
    file /bin/ls
    file test.sh

    test.txt: ASCII text
    /bin/ls: ELF 64-bit LSB shared object, x86-64
    test.sh: Bourne-Again shell script, ASCII text executable

    常用参数

    • -b:精简输出,不打印文件名
    • -i:输出 MIME 类型

    五、sudo 基础概念

    5.1 什么是 sudo

    sudo = superuser do

    作用:普通用户临时以其他用户身份(默认 root)执行命令。

    核心优势:

  • 不用共享 root 密码;
  • 可以精准控制:允许哪些用户、执行哪些命令;
  • 所有 sudo 操作会记录日志(/var/log/secure 或 /var/log/auth.log),可审计;
  • 有密码超时机制,短时间内重复 sudo 无需重复输密码。
  • 5.2 区分 su 和 sudo

    命令特点风险
    su – root 切换完整 root 环境,需要 root 密码,拿到完整 root 权限 极高,拿到密码就能操作所有内容
    sudo command 临时提权,使用自己用户的密码,权限受配置文件限制 可控,可以只开

    六、目录的权限【重难点】

    ❗ 千万不要把文件权限规则套用到目录!rwx 含义完全不一样

    假设目录名为 mydir

    权限对目录的作用
    r(读)

    可以使用ls mydir列出目录内文件名;

    但是无法进入目录、无法查看文件属性(缺少 x 权限)

    w(写)

    可以在目录内:新建文件、删除文件、重命名文件、移动文件

    ⚠️关键点:能否删除文件,不由文件自身权限决定,由【文件所在目录】的 w 权限控制!

    x(执行 / 进入)

    允许cd mydir切换进入目录;允许访问目录内部文件的 inode 元数据;

    目录想要正常使用,几乎必须具备 x 权限

    经典踩坑案例

    场景:一个文件权限 444(所有人只读),但是文件所在目录权限 777

    结论:任何用户依然可以删除这个只读文件。

    原因:删除操作修改的是目录条目,受目录 w 权限控制,和文件本身读写权限无关。

    目录权限搭配经验

  • 只有 r、没有 x:能看到文件名,不能 cd 进去,不能访问文件;基本无实用价值
  • 只有 x、没有 r:可以直接访问已知完整路径的文件,但是不能 ls 列出目录内容
  • 正常对外开放目录:755(rwxr-xr-x)
  • 私人目录:700

  • 七、关于权限的整体总结

    核心原则汇总

  • Linux 基础权限模型 UGO:三类身份 u g o,基础权限 r w x;
  • rwx 语义区分文件和目录,目录 x 权限是进入目录的前提;
  • 文件能否删除 → 看父目录 w 权限,不是文件自身权限;
  • chmod改权限,chown改归属;
  • 数字权限是八进制掩码,r=4 w=2 x=1;
  • 遵循最小权限原则:不给多余权限,避免 777。
  • 容易混淆命令区分

    • ls -l:查看权限、属主、属组
    • chmod:修改 rwx 权限
    • chown:修改文件所有者、用户组
    • file:识别文件真实类型

    八、粘滞位 Sticky Bit

    Linux 除基础 rwx 权限外,还有 3 个高级特殊权限:SUID、SGID、Sticky 粘滞位,粘滞位是面试高频考点。

    8.1 粘滞位作用

    粘滞位只对【目录】生效,对文件无效!

    当目录设置粘滞位之后: 目录内的文件,只有两个角色可以删除 / 重命名

  • 文件自身的属主
  • root 超级用户 即使其他用户拥有该目录的 w 权限,也不能删除别人创建的文件。
  • 8.2 典型场景:系统临时目录 /tmp

    ls -ld /tmp
    drwxrwxrwt 1 root root … /tmp

    末尾权限是 t,代表开启粘滞位。 /tmp 目录权限 777,所有人都能创建临时文件,但是有粘滞位保护:用户只能删除自己创建的临时文件,不能删别人的。

    8.3 粘滞位设置与取消

    粘滞位八进制前缀:1000

    # 数字方式添加粘滞位
    chmod 1777 share_dir
    # 符号方式添加
    chmod o+t share_dir
    # 移除粘滞位
    chmod o-t share_dir

    8.4 权限标识说明

    • 目录其他位原本有 x 权限:显示小写 t
    • 目录其他位没有 x 权限:显示大写 T(粘滞位设置失效,无实际作用)

    拓展补充(拓展阅读)

    另外两个特殊权限简单了解:

  • SUID (4000):二进制程序运行时,临时拥有程序属主权限(如 passwd 命令)
  • SGID (2000):目录下新建文件自动继承目录的属组;二进制程序运行继承属组

  •  Linux 权限专题【高频常见面试题】

    一、简答基础题(最常问)

    1. Linux 中 UGO 分别代表什么?

    答:

    u (user) 文件属主(所有者)

    g (group) 文件所属用户组(属组)

    o (other) 其他用户

    a (all) 全部三类用户


    2.r、w、x 权限,对文件和目录作用分别是什么?

    答:

    ✅ 文件 r:读取文件内容 w:修改、覆盖文件内容 x:执行脚本 / 二进制程序

    ✅ 目录 r:ls 列出目录内文件名 w:在目录内新建、删除、重命名、移动文件 x:允许 cd 进入目录、访问目录内文件;目录正常使用必须具备 x 权限


    3.chmod、chown、chgrp三者区别?

    答:

    chmod:修改文件 r/w/x 访问权限

    chown:修改文件属主,也可以同时修改属组 chown user:group file

    chgrp:只修改文件的属组,等价 chown :group file


    4.umask 的作用是什么?已经存在的文件,修改 umask 会改变权限吗?

    答:

    umask 是权限掩码,用来控制新创建文件、目录的默认权限;

    umask 只会影响后续新建的资源,不会改变已经存在的文件权限。


    5.新建文件、新建目录的权限计算基准值是多少?

    答:

    目录基准权限:777

    普通文件基准权限:666

    原因:系统不会自动给普通文件赋予执行权限,出于安全考虑。


    6.什么是粘滞位?作用是什么,典型应用目录?

    答:

    粘滞位仅对目录生效; 目录开启粘滞位后,就算目录拥有 w 权限,用户只能删除自己创建的文件,不能删除别人的文件。 典型目录:/tmp 设置:chmod 1777 dir 或 chmod o+t dir


    7.su 和 sudo 的区别?

    答:

    su:需要 root 密码,完整切换 root 身份,权限无限制;

    sudo:使用自己账号密码,管理员可以限制能执行哪些 root 命令,无需泄露 root 密码,并且操作会记录日志。


    8.修改 /etc/sudoers 为什么推荐使用 visudo?

    答:

    visudo 会自动检查配置语法;如果配置写错,阻止保存,防止 sudo 整体失效;

    直接 vim 编辑出错会导致 sudo 瘫痪。


    9.file 命令的功能?Linux 文件后缀名是否决定文件类型?

    答:

    file 命令:识别文件真实类型(文本、可执行程序、脚本等);

    Linux不靠后缀识别文件类型,后缀只是方便人阅读。


    二、计算题(笔试必考)

  • 权限字符串 rw-r–r– 转换成八进制权限? 答:644

  • umask=022,新建目录和新建文件默认权限? 答:目录 755,文件 644

  • 命令:给脚本 test.sh 的属主添加执行权限(不改动其他权限) 答:chmod u+x test.sh

  • 创建共享目录 share,所有人读写,但只能删除自己的文件,写出命令

  • mkdir share
    chmod 1777 share


    三、经典陷阱高频题(面试最爱追问)

    1.文件 test.txt 权限444(所有人只读),所在目录权限 777,普通用户能不能删除该文件?为什么?

    答:

    可以删除。 能否删除文件,由文件所在目录的 w 权限控制,和文件自身读写权限无关。 目录开启粘滞位之后,则无法删除别人创建的这个文件。


    2.一个目录只有 r 权限、没有 x 权限,会发生什么?

    答:

    可以 ls 看到目录内文件名,但是无法 cd 进入目录,不能读取内部文件内容。


    3.sudo -i 和 sudo -s 简单区别?

    答:

    sudo -i:模拟登录 root,完整加载 root 环境变量,切换到 root 家目录; sudo -s:打开 root shell,沿用当前用户环境变量,不切换工作目录。


    4.如何查看当前账号拥有哪些 sudo 权限?

    答:

    sudo -l


    四、命令实操问答题(口头提问)

  • 递归修改 /www 目录下所有文件属组为 www 答:chgrp -R www /www

  • 授权用户 lisi 免密执行 systemctl restart nginx,写出 sudoers 一行配置 答: lisi ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx


  • 五、判断题(常见选择题考点)

  • chgrp 可以修改文件属主。(×)
  • 目录权限 777,代表目录里面所有文件自动拥有 777 权限。(×)
  • umask 修改后,旧文件权限会同步变化。(×)
  • sudo 配置中,命令尽量写绝对路径,防止安全风险。(√)


  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【Linux】 权限管理(知识梳理 + 面试题)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!