青行 發表於 2025-7-10 00:00:00

Linux文件权限查看及修改方法详解

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>1、Linux文件权限<ul class="second_class_ul"><li>1.1、如何查看到文件权限</li><li>1.2、ll命令介绍</li></ul></li><li>2、权限分类<ul class="second_class_ul"><li>2.1、文件权限</li><li>2.2、文件夹权限</li></ul></li><li>3、权限修改<ul class="second_class_ul"><li>3.1、修改文件/文件夹权限</li><li>3.2、修改文件/文件夹所属用户</li><li>3.3、修改文件/文件夹所属群组</li></ul></li><li>Linux文件权限命令详解<ul class="second_class_ul"></ul></li></ul></div><p class="maodian"></p><h2>1、Linux文件权限</h2>
<p class="maodian"></p><h3>1.1、如何查看到文件权限</h3>
<p>使用<code>ls -l</code>或者<code>ll</code>指令可以直接查看到如下的标记,这些标记代表的相关文件或文件夹的权限类型及所属:</p>
<p style="text-align:center"><img alt="image-20240222100605216" src="https://zhuji.jb51.net/uploads/allimg/20250710/2-250G01F24C22.png" /></p>
<p>其中分四段:</p>
<p>第一段,为文件/文件夹权限,其中首个bit位字符为文件类型,一共有如下的七种:<strong>前三种为常见类型</strong></p>
<table><tbody><tr><th>类型</th><th>说明</th></tr><tr><td><code>-</code></td><td>普通文件。</td></tr><tr><td><code>d</code></td><td>目录,字母<code>d</code>是<code>dirtectory</code>(目录)的缩写。</td></tr><tr><td><code>l</code></td><td>符号链接。请注意,一个目录或者说一个文件夹是一个特殊文件,这个特殊文件存放的是其他文件和文件夹的相关信息。</td></tr><tr><td><code>b</code></td><td>块设备文件。</td></tr><tr><td><code>c</code></td><td>字符设备文件。</td></tr><tr><td><code>p</code></td><td>管道文件</td></tr><tr><td><code>s</code></td><td>套接口文件</td></tr></tbody></table>
<p>像类型为文件,如下面这种:</p>
<p style="text-align:center"><img alt="image-20240223160559384" src="https://zhuji.jb51.net/uploads/allimg/20250710/2-250G01F246492.png" /></p>
<p>之后跟随的会有9个bit位,分别代表不同的权限类型,后续再进一步讨论。</p>
<p>第二段,为文件/子目录的链接数量</p>
<p>像上述的文件结果中,<code>1</code>表示有一个硬链接指向文件<code>python.gram</code>,一般来说文件类型均为1。如果为文件夹类型则表示的是链接的子目录个数。</p>
<p>第三段,为权限<strong>所属用户</strong></p>
<p>表示拥有当前文件或目录的用户。</p>
<p>第四段,为权限<strong>所属群组</strong></p>
<p>表示所属的群组(group)。群组下的每一个使用者都具有该文件\路径的控制权限,一个用户可以拥有一个以上的组,大部分都只属于1个群组。</p>
<p class="maodian"></p><h3>1.2、ll命令介绍</h3>
<p>在Ubuntu中默认不含ll命令,其实质为<code>ls -l</code>的别名,我们可以通过修改环境变量自行添加:</p>
<div class="dxycode"><pre class="brush:bash;"># 切换管理员模式
su
# 修改系统环境变量
vim ~/.bashrc</pre></div>
<p>添加或将下面这一段去掉注释:</p>
<p style="text-align:center"><img alt="image-20240222095730569" src="https://zhuji.jb51.net/uploads/allimg/20250710/2-250G01F24I19.png" /></p>
<p>修改完成之后,使环境变量生效:</p>
<div class="dxycode"><pre class="brush:bash;">source ~/.bashrc</pre></div>
<p style="text-align:center"><img alt="image-20240222100228829" src="https://zhuji.jb51.net/uploads/allimg/20250710/2-250G01F24I50.png" /></p>
<p>**注:**root环境变量和普通用户环境变量不共通,使用<code>ll</code>指令,不同用户下需单独修改。</p>
<p class="maodian"></p><h2>2、权限分类</h2>
<p class="maodian"></p><h3>2.1、文件权限</h3>
<p>在文件类型字节位后,紧接着的3*3个字符分3组,各<strong>表示不同角色对此文件的读&reg;、写(w)、执行权限(x)</strong>:</p>
<p>第一段:3bit,对应**文件所有者(owner)**的权限</p>
<div class="dxycode"><pre class="brush:bash;">- rwx --- ---    对应文件所有者(owner)拥有读写及执行权限,设定值为700,其值等于下面三项值相加
- r-- --- ---    对应文件所有者(owner)拥有读权限,设定值为400
- -w- --- ---    对应文件所有者(owner)拥有写权限,设定值为200
- --x --- ---    对应文件所有者(owner)拥有执行权限,设定值为100</pre></div>
<p>第二段:3bit,对应**文件所属用户群组(group)**的权限</p>
<div class="dxycode"><pre class="brush:bash;">- --- rwx ---    对应文件所属群组(owner)拥有读写及执行权限,设定值为070,其值等于下面三项值相加
- --- r-- ---    对应文件所属群组(owner)拥有读权限,设定值为040
- --- -w- ---    对应文件所属群组(owner)拥有写权限,设定值为020
- --- --x ---    对应文件所属群组(owner)拥有执行权限,设定值为010</pre></div>
<p>第三段:3bit,对应**其他用户(others)**的权限</p>
<div class="dxycode"><pre class="brush:bash;">- --- --- rwx    对应其他用户(others)对文件拥有读写及执行权限,设定值为007,其值等于下面三项值相加
- --- --- r--    对应其他用户(others)对文件拥有读写及执行权限,设定值为004
- --- --- -w-    对应其他用户(others)对文件拥有读写及执行权限,设定值为002
- --- --- --x    对应其他用户(others)对文件拥有读写及执行权限,设定值为001</pre></div>
<p>上述权限对应下来则为八进制码表,二进制码的计算顺序为从右往左:</p>
<table><tbody><tr><th>八进制位</th><th>权限</th><th>权限符号</th><th>二进制位</th></tr><tr><td>7</td><td>读\写\执行</td><td>rwx</td><td>111</td></tr><tr><td>6</td><td>读\写</td><td>rw-</td><td>110</td></tr><tr><td>5</td><td>读\执行</td><td>r-x</td><td>101</td></tr><tr><td>4</td><td>读</td><td>r&ndash;</td><td>100</td></tr><tr><td>3</td><td>写\执行</td><td>-wx</td><td>011</td></tr><tr><td>2</td><td>写</td><td>-w-</td><td>010</td></tr><tr><td>1</td><td>执行</td><td>&ndash;x</td><td>001</td></tr><tr><td>0</td><td>无权限</td><td>&mdash;</td><td>000</td></tr></tbody></table>
<p><strong>举例:</strong></p>
<p>权限符号为rw-,其二进制位为110,则二进制转为八进制为,计算顺序为从右往左:2^0&nbsp;+2^1+ 2^12=6,即r为2号位值为1,w为1号为值为1,-为0号位值为0。</p>
<p class="maodian"></p><h3>2.2、文件夹权限</h3>
<p>文件夹的权限标识与文件相同,但所具有的含义不一样,对应如下:</p>
<p><code>r</code>:能够浏览目录信息,包括目录名称及所含文件等信息。无权限时无法查看对应内容</p>
<p style="text-align:center"><img alt="image-20240223171228842" src="https://zhuji.jb51.net/uploads/allimg/20250710/2-250G01F24KR.png" /></p>
<p><code>w</code>:能够删除新增或修改目录中的文件或目录。无权限时限制删除新增等操作</p>
<p style="text-align:center"><img alt="image-20240223171711277" src="https://zhuji.jb51.net/uploads/allimg/20250710/2-250G01F24K01.png" /></p>
<p><code>x</code>:当具有<code>x</code>权限时,能够进入该目录。无权限时被限制进入</p>
<p style="text-align:center"><img alt="image-20240223171127644" src="https://zhuji.jb51.net/uploads/allimg/20250710/2-250G01F24R07.png" /></p>
<p class="maodian"></p><h2>3、权限修改</h2>
<p class="maodian"></p><h3>3.1、修改文件/文件夹权限</h3>
<p>1)chmod指令</p>
<p><code>chmod</code>修改文件权限:</p>
<div class="dxycode"><pre class="brush:bash;">chmod [选项] 权限 文件名/文件夹名</pre></div>
<p>[选项]为可选,支持以下常用参数:</p>
<table><tbody><tr><th>参数</th><th>作用</th></tr><tr><td>-c</td><td>改变权限成功后再输出成功信息</td></tr><tr><td>-R</td><td>递归处理所有子文件</td></tr><tr><td>-f</td><td>改变权限失败后不显示错误信息</td></tr><tr><td>-v</td><td>显示执行过程详细信息</td></tr></tbody></table>
<p>示例:</p>
<div class="dxycode"><pre class="brush:bash;"># 设置文件夹权限为770:文件所有者和用户群组有读\写\执行权限,其他用户无权限
chmod 770 testDir
# 设置文件权限为707:文件所有者和其他用户有读\写\执行权限,用户群组无权限
chmod 707 testfile</pre></div>
<p style="text-align:center"><img alt="image-20240223170729874" src="https://zhuji.jb51.net/uploads/allimg/20250710/2-250G01F24UO.png" /></p>
<p>**注:<strong>只有</strong>文件所有者(owner)或管理员(root)**才允许修改文件权限。</p>
<p>2)chmod指令符号</p>
<p>在chmod指令中,可以使用用户表示符和权限控制符号来简化指令,更为的清晰,其对应的不同符号如下:</p>
<p><strong>用户表示符</strong></p>
<table><tbody><tr><th>用户表示符</th><th>说明</th></tr><tr><td>u</td><td>所有者</td></tr><tr><td>g</td><td>拥有者同组用户</td></tr><tr><td>o</td><td>其它用户</td></tr><tr><td>a</td><td>所有用户</td></tr></tbody></table>
<p><strong>权限操作符</strong></p>
<table><tbody><tr><th>权限操作符</th><th>含义</th></tr><tr><td>+</td><td>表示添加权限</td></tr><tr><td>-</td><td>表示移除权限</td></tr><tr><td>=</td><td>表示设置权限为特定的值</td></tr></tbody></table>
<p>权限符号</p>
<table><tbody><tr><th>符号</th><th>含义</th></tr><tr><td>r</td><td>读取权限</td></tr><tr><td>w</td><td>写入权限</td></tr><tr><td>x</td><td>执行权限</td></tr></tbody></table>
<p>组合使用举例:</p>
<div class="dxycode"><pre class="brush:bash;"># 给文件file.txt的所有者(u)增加读取(+r)权限
chmod u+r file.txt
# 从文件file.txt的拥有者同组用户(g)中移除写入(-w)权限
chmod g-w file.txt
# 给目录directory的其他用户(o)增加执行(+x)权限
chmod o+x directory
# 给文件file.txt的所有用户(a)设置读取和写入权限
chmod a=rw file.txt</pre></div>
<p class="maodian"></p><h3>3.2、修改文件/文件夹所属用户</h3>
<p><code>chown</code>修改文件/文件夹所属的用户:</p>
<div class="dxycode"><pre class="brush:bash;">chown [选项] 新所属用户名 文件名/文件夹名</pre></div>
<p><code>chown</code>常用的[选项]参数:</p>
<table><thead><tr><th>常用参数</th><th>描述</th></tr></thead><tbody><tr><td><code>-R, --recursive</code></td><td>递归地更改指定目录及其子目录中所有文件和目录的所有者。</td></tr><tr><td><code>--reference=RFILE</code></td><td>把指定文件的拥有者和用户组应用到其他文件, RFILE为参考文件。</td></tr><tr><td><code>--from=CURRENT_OWNER[:CURRENT_GROUP]</code></td><td>仅在文件的当前所有者或用户组匹配指定的值时才更改文件的所有者和/或用户组。</td></tr><tr><td><code>--preserve-root</code></td><td>不允许在 &ldquo;/&rdquo; 上递归操作</td></tr><tr><td><code>-v, --verbose</code></td><td>显示详细的操作信息。</td></tr></tbody></table>
<p>示例:</p>
<div class="dxycode"><pre class="brush:bash;"># 将file.txt文件所属用户修改为用户miniboy
chown miniboy file.txt</pre></div>
<p style="text-align:center"><img alt="image-20240302175436935" src="https://zhuji.jb51.net/uploads/allimg/20250710/2-250G01F24a17.png" /></p>
<p>**注:**所修改的新用户,为存在的用户,否则会执行失败,提示无效用户。</p>
<p><code>--from=CURRENT_OWNER[:CURRENT_GROUP]</code>参数使用举例:当匹配到对应的所有者/用户组时才进行修改</p>
<div class="dxycode"><pre class="brush:bash;"># 当file.txt的当前所有者是olduser,用户组是oldgroup时,才将其所有者更改为newuser,用户组更改为newgroup
chown --from=olduser:oldgroup newuser:newgroup file.txt</pre></div>
<p class="maodian"></p><h3>3.3、修改文件/文件夹所属群组</h3>
<p><code>chgrp</code>更改文件或文件夹所属用户组(group):</p>
<div class="dxycode"><pre class="brush:bash;">chgrp [选项] 用户组名 文件名/文件夹名</pre></div>
<p>在[选项]参数方面与<code>chown</code>类似,常用参数如下:</p>
<table><thead><tr><th>参数</th><th>描述</th></tr></thead><tbody><tr><td><code>-R, --recursive</code></td><td>递归地更改指定目录及其子目录中<strong>所有文件和目录</strong>的所属用户组。</td></tr><tr><td><code>--reference=RFILE</code></td><td>把指定文件的用户组应用到其他文件。</td></tr><tr><td><code>--preserve-root</code></td><td>不要跨越文件系统的边界,这对于递归操作非常重要。</td></tr><tr><td><code>-v, --verbose</code></td><td>显示详细的操作信息。</td></tr><tr><td><code>--dereference</code></td><td>在符号链接指向文件本身时,处理符号链接指向的文件而不是符号链接文件本身。</td></tr></tbody></table>
<p>使用示例:</p>
<div class="dxycode"><pre class="brush:bash;"># 将file.txt文件的所属群组修改为newgroup
chgrp newgroup file.txt</pre></div>
<p><code>chgrp</code>部分修改也能够通过<code>chown</code>来实现,如<strong>修改拥有者和所属组:</strong></p>
<div class="dxycode"><pre class="brush:bash;">chown :root file30.txt (修改所属组为root)
chown root:root file30.txt (修改拥有者和所属组为root)</pre></div>
<p>**注:**只有超级用户(root)或者文件的当前所有者才能使用<code>chgrp</code>命令。</p>
<p class="maodian"></p><h2>Linux文件权限命令详解</h2>
<p>一、用户命令</p>
<p>查看用户:</p>
<div class="dxycode"><pre class="brush:bash;">more /etc/passwd</pre></div>
<p>创建用户:</p>
<div class="dxycode"><pre class="brush:bash;">useradd x2</pre></div>
<p>设置密码:</p>
<div class="dxycode"><pre class="brush:bash;">passwd x2</pre></div>
<p>切换用户:su 用户名</p>
<p>如:</p>
<div class="dxycode"><pre class="brush:bash;">su x2</pre></div>
<p>组命令:(linux中用户和组是多对多的关系)</p>
<p>查看组:</p>
<div class="dxycode"><pre class="brush:bash;">more /etc/group</pre></div>
<p>创建组:groupadd www (www是组名)</p>
<p>查看用户在哪个组:groups 用户名</p>
<p>如:</p>
<div class="dxycode"><pre class="brush:bash;">group x2</pre></div>
<p>把用户踢出组:gpasswd -d 用户名 组名</p>
<p>如:</p>
<div class="dxycode"><pre class="brush:bash;">gpasswd -d x2 www</pre></div>
<p>二、文件的权限</p>
<p>如:<br />-rw-rw-r&ndash;. 1 x2(宿主) x2(宿组) 4855 oct 29 05:16 b.txt</p>
<p>4855:表示文件的大小<br />-rw-re-r&ndash;:表示文件的权限<br />说明:第一个rw-指2-4;第二个rw-指5-7;r&ndash;指8-10</p>
<p>2-4:是宿主的权限:宿主是文件拥有者,用u(user)表示<br />5-7:是宿组的权限:宿组是文件所在的组,用g(group)表示<br />8-10:是其他用户的权限:其他用户的权限,用o(other)表示</p>
<p>r:可读(用数字4表示)<br />w:可写(用数字2表示)<br />x:可执行(用数字1表示)<br />-:表示0</p>
<p>所以文件的权限rw-rw-r&ndash;是664权限</p>
<p>符号类型改变文件权限:</p>
<table><tbody><tr><th>Chmod</th><th>u<br />g<br />o</th><th>x<br />-<br />=</th><th>r<br />w<br />x</th><th>文件或者目录</th></tr></tbody></table>
<p>如:</p>
<p>给文件的所有者加上 x 权限&emsp;&emsp;&emsp;即可使用 chmod u+x 文件<br />给文件的所有组去掉 r 权限&emsp;&emsp;&emsp;即可使用 chmod g-r 文件<br />其他人对文件有 rx 权限&emsp;&emsp;&emsp;&emsp;&ensp;即可使用 chmod 0=rx 文件</p>
<p>数字类型改变文件权限:<br />rwx 的权限数分别为:r =4 , w=2, x=1<br />如 r-xr----x =4+0+1=5,=4+0+0=4, =0+0+1=1<br />用法: chmod 541 file 表示将这个文件的权限改为:r-xr----x</p>
<p>给文件最大权限:chmod 777 文件名(如果是文件夹,则需要加-R,大写的-R)<br />如:chmod -R 777</p>
<p>以上就是Linux:文件权限详解及修改方法的详细内容,更多相关资料请阅读琼殿技术社区其它文章!</p>
頁: [1]
查看完整版本: Linux文件权限查看及修改方法详解