Linux 权限 | 概念、操作命令及权限表示
一、基础概念Linux 权限定义1.1 权限的作用Linux 作为多用户多任务操作系统通过严格的权限机制实现文件访问隔离与系统安全管控任何用户执行文件相关操作必须具备对应的权限方可成功。该机制可有效防止未授权程序如病毒擅自运行保障系统稳定。1.2 权限的构成要素1.2.1 权限类型Linux 文件的基础权限分为三类对应特定字符标识与八进制数值具体如下权限类型字符标识八进制数值权限说明读权限r4可读取文件内容、查看目录结构写权限w2可修改文件内容、创建/删除目录内文件执行权限x1可执行文件、进入目录1.2.2 权限归属粒度每个文件的权限均针对三类主体配置称为权限归属粒度具体如下拥有者uUser文件的创建者或指定所有者其权限配置优先级高于其他主体群组gGroup文件所属的用户组组内用户共享该组对应的权限其它组oOther既非文件拥有者也不属于文件所属群组的所有用户补充说明单个文件仅能归属一个用户与一个用户组其他用户可通过加入文件所属群组获取该群组对应的权限一个用户可同时归属多个用户组。1.2.3 文件类型标识权限首位Linux 权限表示的首位字符用于标识文件类型而非权限常见类型如下字符标识文件类型说明d目录文件用于存储文件和子目录如 /home-普通文件常见的文本、可执行程序等如 a.conf、c.shs套接字文件用于进程间通信如 /var/run/docker.sockp管道/命名管道文件用于同一主机内进程间数据传递l符号链接文件指向其他文件/目录的快捷方式如 ln -s 源文件 链接文件b块设备文件面向块的存储设备如硬盘 /dev/sdac字符设备文件面向字符的输入输出设备如键盘 /dev/tty1二、权限操作命令使用方法2.1 更改文件权限chmod 命令chmod 命令用于配置和修改文件/目录的权限支持两种使用模式符号模式和数字模式语法一致。符号模式直观易记数字模式简洁高效。2.1.1 通用语法chmod[可选项]modefile...2.1.2 可选项说明-c,--changes仅在权限实际变更时输出信息 -f, --silent,--quiet屏蔽大部分错误提示 -v,--verbose输出所有文件的权限变更详情 --no-preserve-root 不对根目录/做特殊处理默认 --preserve-root 禁止对根目录执行递归权限修改--referenceRFILE 参照 RFILE 的权限模式配置目标文件 -R,--recursive递归修改目录及子目录、文件的权限--help显示命令帮助信息--version显示命令版本信息2.1.3 符号模式符号模式通过字符组合描述权限变更格式为[ugoa...][[-][rwxX]...][,...]权限主体u拥有者、g群组、o其它组、a所有主体即 ugo操作符追加权限、-撤销权限、覆盖权限清除原有权限后设置新权限权限标识r读、w写、x执行、X仅对目录或已具备执行权限的文件赋予执行权限符号模式应用示例# 1. 为所有用户添加文件 a.conf 的读权限chmodar a.conf# 等价于 chmod ugor a.conf# 2. 为文件 c.sh 的拥有者配置读、写、执行权限撤销其他所有权限chmodurwx,go-rwx c.sh# 3. 为文件 a.conf、b.xml 配置所有用户可读拥有者和群组可写其它组不可写chmodar,ugw,o-w a.conf b.xml# 4. 递归为当前目录及子目录下所有文件配置所有用户读写权限chmod-Rarw *2.1.4 数字模式数字模式通过八进制数值表示权限逻辑为将拥有者、群组、其它组的权限分别转换为一位八进制数组合为三位基础权限或四位含附加权限数值直接配置权限。数字模式适合熟练使用者。权限组合与八进制数值对应关系rwx 421 7 # 读、写、执行权限 rw- 42 6 # 读、写权限无执行权限 r-x 41 5 # 读、执行权限无写权限 r-- 4 4 # 仅读权限 -wx 21 3 # 写、执行权限无读权限 -w- 2 2 # 仅写权限 --x 1 1 # 仅执行权限 --- 0 0 # 无任何权限数字模式语法chmod abc file...其中 a拥有者、b群组、c其它组分别为对应权限的八进制数值。数字模式应用示例# 1. 所有用户具备读、写、执行权限该权限存在安全风险仅可临时使用chmod777file# 等价于 chmod urwx,grwx,orwx file# 2. 仅拥有者具备读写权限群组和其它组无任何权限适用于个人隐私文件chmod600file# 等价于 chmod urw,g---,o--- file# 3. 拥有者具备读写执行权限群组和其它组具备读、执行权限适用于可执行程序chmod755file# 4. 拥有者具备读写执行权限群组和其它组仅具备执行权限适用于公共可执行程序chmod711file2.2 更改文件拥有者chown 命令chown 命令用于修改文件/目录的所有者及所属群组仅系统管理员root具备执行权限普通用户无法变更自身或他人文件的所有者。2.2.1 语法格式chown[可选项]user[:group]file...2.2.2 参数说明可选项与 chmod 命令可选项完全一致如 -R 递归修改user新的文件拥有者用户名group新的文件所属群组名称可选省略则仅修改所有者2.2.3 应用示例# 1. 将文件 d.key、e.scrt 的所有者设为 tom所属群组设为 userschowntom:users d.key e.scrt# 2. 递归将当前目录及子目录下所有文件的所有者设为 James所属群组设为 userschown-RJames:users *三、深入解析权限表示与附加权限3.1 十位权限表示基础权限十位权限表示法是最常用的权限展示形式格式为文件类型 拥有者权限 群组权限 其它组权限共 10 位字符。3.1.1 常见十位权限对应关系十位权限字符八进制数值权限说明-rw-------600仅拥有者具备读写权限适用于个人隐私文件如 ~/.ssh/id_rsa-rw-r–r–644拥有者读写群组和其它组只读适用于普通配置文件如 /etc/profile-rwx------700仅拥有者具备读写执行权限适用于个人可执行脚本-rwxr-xr-x755拥有者读写执行群组和其它组读执行适用于系统可执行程序如 /bin/ls-rwx–x–x711拥有者读写执行群组和其它组仅执行适用于公共可执行程序-rw-rw-rw-666所有用户读写无执行权限适用于共享配置文件使用时需谨慎-rwxrwxrwx777所有用户读写执行为最高权限存在安全风险仅可临时使用3.1.2 十位权限解析逻辑以-rwxr-xr-x为例拆解如下第 1 位-文件类型为普通文件第 2-4 位rwx拥有者权限具备读、写、执行权限对应数值 7第 5-7 位r-x群组权限具备读、执行权限对应数值 5第 8-10 位r-x其它组权限具备读、执行权限对应数值 5逻辑说明后 9 位按“3 位一组”划分分别对应拥有者、群组、其它组每组内的三位字符依次对应读r、写w、执行x权限缺失权限用“-”表示。3.2 十二位权限表示附加权限基础权限仅管控读写执行操作Linux 额外提供附加权限SET 位权限、粘滞位权限用于满足特殊场景需求其表示形式扩展为十二位二进制可简化为四位八进制数值如 4755、6755、7755。3.2.1 附加权限分类与定义1SET 位权限SUID、SGIDSET 位权限用于临时提升进程身份仅适用于可执行文件作用是让普通用户执行特定程序时临时获得该程序拥有者或所属群组的权限以实现普通用户执行特权操作的需求。SUIDSet User ID执行文件时进程临时获得文件拥有者的 UID如 passwd 命令普通用户执行时临时获得 root 权限用于修改密码SGIDSet Group ID执行文件时进程临时获得文件所属群组的 GID若应用于目录目录内新建文件将继承该目录的所属群组SET 位权限存在安全风险仅对必要程序配置如 passwd、sudo不可滥用。SET 位权限表示形式十位字符SET 位权限体现在对应主体的执行位x上区分大小写小写 s该主体具备执行权限同时配置了 SET 位权限如 -rwsr-xr-x拥有者具备执行权限配置 SUID大写 S该主体无执行权限但配置了 SET 位权限如 -rwSr–r–拥有者无执行权限配置 SUID-rwsr-xr-x # 配置 SUID拥有者具备执行权限 -rwSr--r-- # 配置 SUID拥有者无执行权限 -rwxr-sr-x # 配置 SGID群组具备执行权限 -rw-r-Sr-- # 配置 SGID群组无执行权限SET 位权限配置命令chmodus filename# 为文件配置 SUID 权限chmodu-s filename# 撤销文件的 SUID 权限chmodgs filename# 为文件配置 SGID 权限chmodg-s filename# 撤销文件的 SGID 权限2粘滞位权限Sticky粘滞位权限仅适用于目录作用是即使用户对该目录具备写权限也仅能删除自身创建的文件无法删除其他用户创建的文件适用于共享目录如 /tmp。粘滞位权限表示形式十位字符粘滞位权限体现在“其它组”的执行位x上区分大小写小写 t其它组具备执行权限同时配置了粘滞位权限如 -rwsr-xr-t大写 T其它组无执行权限但配置了粘滞位权限如 -rwSr–r-T粘滞位权限配置命令chmodt 目录名# 为目录配置粘滞位权限chmod-t目录名# 撤销目录的粘滞位权限3.2.2 十二位权限的结构与转换1十二位权限结构十二位二进制权限按位定义对应关系如下位序从左到右为 11 至 0位序11 10 9 8 7 6 5 4 3 2 1 0 标识S G T r w x r w x r w x第 11 位SSUID 标识位1配置0未配置第 10 位GSGID 标识位1配置0未配置第 9 位T粘滞位标识位1配置0未配置第 8-0 位基础权限位与十位权限的后 9 位一致对应拥有者、群组、其它组的 rwx 权限2附加权限的八进制数值对应将十二位权限按“3 位一组”拆分转换为四位八进制数值其中前三位SGT对应附加权限的八进制数值SUID 对应八进制数值4二进制 100SGID 对应八进制数值2二进制 010粘滞位对应八进制数值1二进制 001附加权限组合数值4仅 SUID、6SUIDSGID、1仅粘滞位、7SUIDSGID粘滞位。3四位八进制权限的使用语法格式chmod sabc file...其中s附加权限的八进制数值0无附加权限4SUID2SGID1粘滞位6SUIDSGID7全附加权限a、b、c分别为拥有者、群组、其它组的基础权限数值与三位八进制权限一致典型四位八进制权限对应关系-rw-r-Sr-- 010 110 100 100 2644 # 配置 SGID无执行权限 -rwsr-xr-x 100 111 101 101 4755 # 配置 SUID基础权限 755 -rwsr-sr-x 110 111 101 101 6755 # 配置 SUIDSGID基础权限 755 -rwsr-sr-t 111 111 101 101 7755 # 配置 SUIDSGID粘滞位基础权限 755四位八进制权限应用示例# 1. 配置基础权限 755拥有者 rwx群组/其它组 r-x附加 SUID 权限chmod4755netlogin# 说明普通用户执行 netlogin 时临时获得该文件拥有者如 root的权限可访问受保护资源# 2. 配置基础权限 755附加 SUIDSGID 权限chmod6755netlogin# 3. 配置基础权限 755附加全量附加权限SUIDSGID粘滞位chmod7755netlogin四、常见问题与补充说明4.1 为什么使用 4755 而非 755以 root 创建的上网认证程序 netlogin 为例chmod 755 netlogin普通用户可执行该程序但无法访问 root 专属资源如系统认证文件可能导致程序执行失败chmod 4755 netlogin普通用户执行该程序时临时获得 root 权限可正常访问专属资源完成认证操作。4.2 权限配置注意事项避免随意配置 777 权限该权限会导致所有用户可修改、删除文件存在严重安全风险SET 位权限仅对可执行文件有效对普通文件、目录配置无效粘滞位权限仅对目录有效对普通文件配置无效递归修改权限-R时需谨慎操作避免误改系统基础文件权限如 /etc、/bin 目录。4.3 权限查询命令补充使用ls -l命令可查看文件/目录的权限、所有者、所属群组等信息示例ls-l/etc/profile输出示例-rw-r–r-- 1 root root 1714 6 月 7 2023 /etc/profile解析权限 -rw-r–r–644所有者 root所属群组 root