首页 / 资讯中心 / 文章详情

Linux chmod 命令详解:符号模式、八进制模式与权限管理实战(linux-command 项目)

Linux chmod 命令详解:符号模式、八进制模式与权限管理实战(linux-command 项目) ★ FEATURED ARTICLE
文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载本篇技术指南以当前仓库 linux-command 中收录的 chmod 命令文档 为核心系统讲解 Linux 文件权限模型、chmod 的三种语法形式符号组合、八进制数、参考文件、全部选项含义与实战示例并结合仓库内 ls、umask、chown、stat 等命令文档交叉印证。读完本文你将掌握如何精准地为文件与目录设置、追加、回收权限理解 SUID/SGID/Sticky 特殊位与递归操作风险并能在生产环境中安全地使用 chmod 排查权限问题。命令概要chmod 用于变更文件或目录的权限是 GNU coreutils 包中的基础命令。它支持三种调用形式见 command/chmod.mdchmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --referenceRFILE FILE...对应三种主要用途通过符号组合的方式更改目标文件或目录的权限例如chmod gw ./test.log通过八进制数的方式更改目标文件或目录的权限例如chmod 764 ./test.log通过参考文件--referenceRFILE的权限来更改目标文件或目录的权限。参数方面mode为八进制数或符号组合file为要更改权限的一到多个文件支持空格分隔的文件列表与 shell 通配符。先理解权限模型rwx 与三类用户要熟练使用 chmod必须先看懂ls -l输出的权限字段。仓库的 chmod 文档 给出了标准示例# 查看当前目录包含隐藏文件的长格式。 ls -la -rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules按位拆解这段输出第 1 位d代表目录-代表普通文件更多符号含义可参阅 ls 命令文档 中关于-l选项的说明如l表示符号链接、b/c表示块/字符设备第 24 位当前用户owner符号u的权限第 57 位组用户group符号g的权限第 810 位其他用户others符号o的权限。每个三元组中的每一位依次对应读r、写w、执行x出现即表示具备该权限出现-表示不具备。权限符号速查表根据man chmod的DESCRIPTION段落仓库文档原样引用见 command/chmod.md符号含义对应八进制u当前用户—g与当前用户同组的用户组用户—o其他用户—a所有用户u、g、o 之和—r读权限4w写权限2x执行权限1X仅当目标文件是可执行文件或目录时才授予执行权限—s设置权限 SUID/SGIDus设定用户 ID 位gs设定组用户 ID 位—tSticky 位仅目录/文件的所有者可删除该目录下的文件—添加目标用户相应的权限—-删除目标用户相应的权限—添加目标用户相应的权限同时删除未提到的权限—其中r、w、x与八进制数 4、2、1 的对应关系是八进制模式的基础rwx 421 7rw- 42 6r-x 41 5r-- 4。符号模式精准的增量式权限操作符号模式的通用形式为[ugoa...][[-][rwxXst...]...]支持逗号分隔多个规则同时生效。它的优势是只改动你想改的部分其余权限保持不变# 添加组用户的写权限。 chmod gw ./test.log # 删除其他用户的所有权限o 后不带任何权限符号。 chmod o ./test.log # 使得所有用户都没有写权限。 chmod a-w ./test.log # 当前用户具有所有权限组用户有读写权限其他用户只有读权限。 chmod urwx,grw,or ./test.log注意与/-的本质区别会把目标用户u/g/o/a的权限整体覆盖为你指定的集合未提到的权限会被删除而/-只在现有权限上做增量追加或移除。例如chmod o ./test.log会把其他用户的读、写、执行权限全部清空而chmod o-w ./test.log只移除写权限保留原有的读/执行权限。特殊位X、s、t符号模式还能操作X、s、t三个特殊权限X大写只有当目标是目录、或目标文件已具备任一执行权限时才设置执行权限。适合对目录树批量授权——可以保证普通文本文件不会被误加执行位sus设置 SUIDSet User ID执行时以文件所有者的身份运行gs设置 SGID执行时以文件所属组的身份运行对目录则使新文件继承目录的属组tSticky 位常见于/tmp这类共享目录设置后仅文件所有者或 root能删除目录中的文件。八进制模式四位一体的权限数值八进制模式用一个 34 位的八进制数直接描述完整权限前导 0 可省略。每一位的计算规则为r(4) w(2) x(1)。# 当前用户 rwx(7)组用户 rw(6)其他用户 r(4) chmod 764 ./test.log # 等价的符号写法上文的 urwx,grw,or chmod urwx,grw,or ./test.log8 进制位与符号含义逐位对应第一组三位用户4读、2写、1执行加和得到 owner 位第二组三位组用户同上得到 group 位第三组三位其他用户同上得到 others 位可选第四位首位特殊权限位4表示 SUID、2表示 SGID、1表示 Sticky可组合如chmod 4755设置 SUID rwxr-xr-x。实际换算时无需逐位心算rwxr-xr-x对应 755rw-r--r--对应 644rwx------对应 700这三组是最常见的生产环境权限组合。需要留意的是八进制模式是整体覆盖语义——chmod 644 file会把文件权限完全置为rw-r--r--与符号模式的增量语义不同。选项详解chmod 的全部选项见 command/chmod.md-c, --changes # 当文件的权限更改时输出操作信息无变化不输出。 --no-preserve-root # 不将/特殊化处理默认选项。 --preserve-root # 禁止在根目录 / 下递归操作配合 -R 使用防止误伤整台机器。 -f, --silent, --quiet # 抑制多数错误消息的输出。 -v, --verbose # 无论文件是否更改了权限一律输出操作信息。 --referenceRFILE # 使用参考文件或参考目录 RFILE 的权限来设置目标文件或目录的权限。 -R, --recursive # 对目录以及目录下的文件递归执行更改权限操作。 --help # 显示帮助信息并输出。 --version # 显示版本信息并输出。使用要点-c与-v都打印操作日志区别在于-c只在权限确实发生变化时输出适合批量审计-v无条件输出--referenceRFILE是照抄语义常用场景是把某目录树统一成与模板文件一致的权限结合-R使用--preserve-root与-R配合时若目标包含/会拒绝执行是生产环境防止chmod -R误操作根目录的重要护栏返回值方面返回状态为成功除非给出了非法选项或非法参数见 command/chmod.md。实战示例从单文件到目录树综合前面的知识以下示例覆盖日常高频场景均取自 command/chmod.md 并补充说明# 1. 给组用户加写权限增量。 chmod gw ./test.log # 2. 清空其他用户的所有权限覆盖。 chmod o ./test.log # 3. 所有用户都去掉写权限只读锁定。 chmod a-w ./test.log # 4. 精确指定owner 全权限group 读写others 只读。 chmod urwx,grw,or ./test.log # 等价八进制写法 chmod 764 ./test.log # 5. 递归目录及目录下所有文件都设为所有用户可读写。 # 注意使用 -R 一定要保留当前用户的执行和读取权限否则会报错 chmod -R arw ./testdir/ # 6. 以参考文件为准设置权限。 chmod --reference./1.log ./test.log递归操作的高风险点示例 5 中的警告是必须强调的实战要点chmod -R arw ./testdir/会把目录的执行权限一并抹掉而目录没有执行权限时无法进入、无法cd、无法读取其内容导致后续访问全部失败并报错。因此对目录树递归授权时目录至少应保留rx推荐使用chmod -R arwX ./testdir/这种写法X大写保证只有已是可执行文件的文件才会被加上执行位而目录始终获得x从而规避目录失去执行权限的经典事故。同理--preserve-root在配合-R操作含/的目标时提供最后一道保险。验证权限权限设置完成后可用ls -l或stat验证。仓库的 stat 命令文档 展示了更详细的状态输出其中Access: (0644/-rw-r--r--)同时给出八进制与符号两种形式便于核对stat ./test.log # Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)与 umask、chown 的分工与关联chmod 并不孤立理解它与邻近命令的分工能避免常见误区chmod vs umaskchmod 更改已有对象的权限而 umask 影响之后新建对象的默认权限掩码。仓库的 umask 文档明确给出换算关系umask -S输出urwx,grx,orx对应八进制 0755而 umask 需要额外做减法0777 - 0755即0022chmod 则直接写权限值无需换算。两者符号组合的u/g/o/a/r/w/x语义完全一致可以互相参照学习chmod vs chownchmod 管谁能读/写/执行chown 管文件属于谁。例如chown -R liu /usr/meng将目录及其下所有文件、子目录的属主递归改为liu常用于配合权限调整完成交接只有文件主和超级用户可以使用 chownchmod vs lsls 的-l输出是观察权限变更结果的第一现场其中第三位还会以s/S/t/T的形式标记 SUID/SGID/Sticky 位设置了相应可执行位显示小写否则显示大写。注意事项chmod 属于 GNU coreutils 包相关的帮助信息请查看man chmod或info coreutils chmod invocation见 command/chmod.md符号链接的权限无法直接变更对符号链接执行 chmod 时改变会作用在被链接的原始文件上。如需修改符号链接本身的元数据应操作链接指向的目标文件或使用chown -h这类专门选项使用-R选项一定要保留当前用户的执行和读取权限否则会报错递归进入目录、读取目录列表都需要对应权限递归修改前建议先chmod -c或chmod -v试运行一次观察影响面并对关键目录启用--preserve-root生产环境权限设置遵循最小权限原则程序文件一般755/644需要写的数据目录用775/664或结合组权限协作避免使用777这类全开放权限。在本项目中的应用与延伸阅读本仓库将 chmod 等 600 个 Linux 命令整理为 command 目录下的 Markdown 文档并生成索引数据见 dist/data.json供 Web 站点与 npm 包使用文档页面通过 template/details.ejs 渲染为可搜索的速查页。你可以直接在 command/chmod.md 阅读完整原文并通过以下仓库内命令文档联动学习权限体系ls 命令文档权限字段的显示与排序规则umask 命令文档新建文件默认权限掩码与 chmod 的互补关系chown 命令文档属主与属组变更stat 命令文档八进制/符号权限的精确校验。掌握 chmod 及其配套命令就掌握了 Linux 权限管理的核心链路创建时由 umask 定默认值需要时用 chown 换归属、用 chmod 调权限最后用 ls/stat 验证结果。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐SerenityOS chmod 命令完全指南八进制与符号模式修改文件权限SerenityOS chmod 命令完全指南八进制与符号模式修改文件权限 导读 本文基于 SerenityOS 操作系统的 chmod 手册页系统讲解如何操作系统内核驱动Linux chmod 命令速查与实战从数字权限到符号模式的完整指南Linux chmod 命令速查与实战从数字权限到符号模式的完整指南 本篇指南以 Reference 项目中的 chmod 速查文档 https://link文档教程知识库chmod 文件权限速查八进制与符号模式完全指南jaywcjlove/referencechmod 文件权限速查八进制与符号模式完全指南jaywcjlove/reference 本文基于开源项目 jaywcjlove/reference 的文档知识库教程开发工具上一篇如何快速使用Pixelle-Video面向初学者的AI短视频生成完整指南下一篇OpenDesign 仓库 Spotify 风格设计系统完整实战指南近黑沉浸式暗色主题、胶囊几何与 Agent 提示词规范创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站