查看文件权限(查看文件权限及所有者)

查看文件权限(查看文件权限及所有者)p u Linux u 是被设计为多用户的 u 操作系统 u 在企业级系统中 会有多个用户访问同一个系统 但是 如果任何用户都可以访问和修改属于其他用户或系统所有的文件 这肯定会带来安全风险 p 这就是为什么 UNIX 和 Linux Linux 是类 UNIX 的系统 有内置的安全措施

大家好,我是讯享网,很高兴认识大家。



 <p> <u>Linux</u> 是被设计为多用户的<u>操作系统</u>。在企业级系统中,会有多个用户访问同一个系统。但是,如果任何用户都可以访问和修改属于其他用户或系统所有的文件,这肯定会带来安全风险。</p> 

讯享网

讯享网这就是为什么 UNIX 和 Linux(Linux 是类 UNIX 的系统)有内置的安全措施,这确保了文件或目录只能由所需的用户访问、修改或执行。</p> 

在 Linux 中,哪个用户能够访问哪个文件取决于两个因素:</p> 

讯享网文件所有权</p> 

文件权限</p> 

讯享网理解文件所有权和权限对于 Linux 用户来说至关重要。本文将介绍相关内容。</p> 

<strong>Linux 中的文件所有权</strong></p> 

讯享网注:本文所提到的文件,也包括目录(Linux中,目录也是属于文件)。</p> 

Linux 中的每个文件和目录都有三种所有者:</p> 

讯享网<strong>用户</strong></p> 

用户是文件的所有者。你创建了一个文件,那么这个文件的所有者就是你。所有权也是可以被修改的(我们会在后面介绍到)。</p> 

讯享网<strong>组</strong></p> 

每个用户都是某个组的一部分。一个组由多个用户组成,这是在多用户环境中管理用户的一种方法。</p> 

讯享网比如,你有开发组,质保组,以及系统管理组都访问统一系统,那么你应该为他们单独创建组。这样,你可以有效的管理文件和系统的安全性。这样也会节省时间,因为你无需手动为每个用户添加权限,而只需要将他们添加到相关组中,并更改组的权限即可。本文稍后会做详细介绍。</p> 

即便你是这个系统中的唯一用户,那么你仍然是众多组中的一员。像 Ubuntu 这样的发行版,也会为一个用户创建相同名称的组。</p> 

讯享网注:运行 groups 命令可以查看你所属的用户组。</p> 

<strong>其他</strong></p> 

讯享网“其他”可以被视为系统中所有用户的超级组。基本上,任何能够访问该系统的人都属于这个组。</p> 

总体而言,“<strong>用户</strong>”是单个用户,“<strong>组</strong>”是用户的集合,“<strong>其他</strong>”是由系统中所有的用户组成。</p> 

讯享网<strong>Linux 中的文件权限</strong></p> 

Linux 中的每个文件和目录对所有三种所有者都有以下三种权限:</p> 

讯享网<strong>文件权限</strong></p> 

<strong>读</strong> - 可以查看或复制文件内容;</p> 

讯享网<strong>写</strong> - 可以修改文件内容;</p> 

<strong>执行</strong> - 可以运行文件(如果其可执行)。</p> 

讯享网<strong>目录权限</strong></p> 

<strong>读</strong> - 可以列出所有子文件,并可以从目录中复制文件;</p> 

讯享网<strong>写</strong> - 可以在目录中添加或删除文件(也需要执行权限);</p> 

<strong>执行</strong> - 可以进入目录。</p> 

讯享网<strong>Linux 中的文件权限和所有权</strong></p> 

以上是关于文件权限和所有权的基本知识,现在我们来通过实例介绍下。</p> 

讯享网在Linux中,你可以使用 stat 或者 ls 命令来查看文件的权限。如果你使用 ls 命令,那需要带上 -l 选项,你会看到如下输出:</p> 

 </p> 

讯享网 -rwxrw-r– 1 gliu gliu 457 May 10 11:55 filename.txt

 </p> 

讯享网对于以上输出的解释如下:</p> 

<img alt="pYYBAGOAcQGAJDHQAABwecSQpjs481.png" src="https://file.elecfans.com/web2/M00/7E/3F/pYYBAGOAcQGAJDHQAABwecSQpjs481.png" /></p> 

讯享网<strong>文件类型</strong>:表示文件的类型,d 表示目录,– 表示常规文件,l 表示符号链接;</p> 

<strong>权限</strong>:显示文件的权限,我们在本文后面详细介绍;</p> 

讯享网<strong>硬链接数</strong>:显示文件是否有硬链接,默认为1;</p> 

<strong>所有者</strong>:文件所属用户;</p> 

讯享网<strong>所属组</strong>:有权访问此文件的组,一次只能有一个组是文件的所有者;</p> 

<strong>文件大小</strong>:文件的大小(单位为b);</p> 

讯享网<strong>修改时间</strong>:文件的最后修改时间;</p> 

<strong>文件名称</strong>:文件或者目录的名称。</p> 

讯享网上述是我们对 ls -l 命令输出的解释,现在我们主要看下权限的部分。</p> 

在上面的命令中,你可以看到权限的显示为9位字符,格式如下:</p> 

讯享网<strong>rwxrw-r--</strong></p> 


讯享网

其中的每个字母表示一个特定的权限:</p> 

讯享网<strong>r</strong>: 读权限;</p> 

<strong>w</strong>: 写权限;</p> 

讯享网<strong>x</strong>: 执行权限;</p> 

<strong>-</strong>: 没有权限。</p> 

讯享网权限始终按<strong>读、写和执行</strong>的顺序排列,即rwx。然后,按照用户、组和其他的顺序为所有三种所有者设置这些权限。</p> 

<img alt="poYBAGOAcPGAJ17IAABglBjt0sA723.png" src="https://file.elecfans.com/web2/M00/7D/B2/poYBAGOAcPGAJ17IAABglBjt0sA723.png" /></p> 

讯享网结合上图,我们可以了解到:</p> 

1)文件的所有者,具有对该文件的读取、写入和执行的权限。但是这个文件的所有者是谁呢?在 ls -l 命令中有此<u>信息</u>的输出(即用户 gliu);</p> 

讯享网2)文件所属组有对其读写权限,但是没有执行权限。那是哪一组呢?在 ls -l 命令中有此信息的输出(即用户组 gliu);</p> 

3)该文件仅对其他人(即有权访问系统的所有人)具有读取权限。你不需要知道它是哪个,因为“其他”是指所有用户。</p> 

讯享网再次看下 ls -l 命令的输出结果,我们应该能看出文件的权限以及所有者了:</p> 

 </p> 

讯享网 -rwxrw-r– 1 gliu gliu 457 May 10 11:55 filename.txt

 </p> 

讯享网文件 filename.txt 属于用户 gliu 所有,并且gliu对该文件具有读写和执行的权限;用户组 gliu 中所有的用户对该文件都具有读和写的权限,然后其他用户对该文件都是只读的权限。</p> 

注意:root 用户具有超级权限,通常它对所有文件都具有读、写和执行权限,即使您在文件权限中没有看到它。</p> 

讯享网单个用户可以是多个组的成员,但只有主要的组是用户创建文件的所属组。用户所在的主要组可以使用 id 命令找到,比如 id -gn . 如果要查询自己的主要组,省略<u>参数</u>。</p> 

通过上文的描述我们知道了如何查看文件的权限,接下来我们看看如何更改文件的权限和所有权。</p> 

讯享网<strong>在 Linux 中更改文件权限</strong></p> 

在 Linux 中,我们可以使用 chmod 命令来更改文件的权限。</p> 

讯享网注:权限在过去被称为访问模式(mode of <u>ac</u>cess),因此 chmod 是更改访问模式的简称。</p> 

使用 chmod 命令有两种方法:</p> 

讯享网绝对模式(Absolu<u>te</u> mode)</p> 

符号模式(Symbolic mode)</p> 

讯享网<strong>在绝对模式下使用 chmod</strong></p> 

在绝对模式下,权限以数字形式表示(精确地说是八进制)。在这个系统中,每个文件权限都由一个数字表示。</p> 

讯享网r (re<u>ad</u>,读) = 4</p> 

w (write,写) = 2</p> 

讯享网x (execute,执行) = 1</p> 

– (无权限) = 0</p> 

讯享网通过这些数值,可以将它们组合在一起,因此可以使用一个数字来表示整个权限集。</p> 

 <strong>数值</strong><br />  </td> <td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> <strong>权限</strong><br />  </td> </tr><tr><td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> 0<br />  </td> <td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> -<br />  </td> </tr><tr><td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> 1<br />  </td> <td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> --x<br />  </td> </tr><tr><td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> 2</td> <td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> -r-<br />  </td> </tr><tr><td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> 3(2 + 1)<br />  </td> <td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> -wx<br />  </td> </tr><tr><td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> 4<br />  </td> <td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> r--<br />  </td> </tr><tr><td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> 5( 4 + 1)<br />  </td> <td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> r-x<br />  </td> </tr><tr><td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> 6(4 + 2)<br />  </td> <td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> rw-<br />  </td> </tr><tr><td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> 7(4 +2 + 1)</td> <td style="border-bottom:1px solid rgb(221,221,221);border-left:1px solid rgb(221,221,221);border-right:1px solid rgb(221,221,221);border-top:1px solid rgb(221,221,221);padding:5px 10px;vertical-align:top;"> rwx<br />  </td> </tr></tbody></div><p> 上文中的文件 filename.txt,如果使用数字来表示权限的话,是什么呢?没错,应该是 764。</p> 

讯享网通过以上描述我们知道了什么数字代表什么权限,那么现在我们来看一下如何更改文件权限。</p> 

如果你要更改文件 filename.txt 的权限,想让每个人都可以读写,但是不能执行,那么可以使用如下命令:</p> 

讯享网 </p> 

 chmod 666 filename.txt

讯享网 </p> 

然后使用 ls -l 命令查看一下,就会发现文件的权限被更改了:</p> 

讯享网 </p> 

 -rw-rw-rw- 1 gliu gliu 457 May 10 11:55 filename.txt

讯享网 </p> 

<strong>在符号模式下使用chmod</strong></p> 

讯享网绝对模式的问题是,即使你只想更改一个所有者的权限,也需要提供三个所有者的数字。</p> 

所以,此时你可以使用 chmod 命令的符号模式。</p> 

讯享网在符号模式下,所有者用以下符号表示:</p> 

u = 用户所有者(user owner)</p> 

讯享网g = 所属组(group owner)</p> 

o = 其他(other)</p> 

讯享网a = 所有用户 (user + group + other)</p> 

然后,符号模式使用数学运算符来执行权限更改:</p> 

讯享网+ 增加权限</p> 

– 移除权限</p> 

讯享网= 使用新的权限覆盖现有权限</p> 

现在,我们来看看如何在符号模式下使用chmod命令。</p> 

讯享网在前面的例子中,如果要为所属组(组所有者)添加执行权限,可以这样使用 chmod 命令:</p> 

 </p> 

讯享网 chmod g+x filename.txt

 </p> 

讯享网现在再次使用 ls -l 命令查看文件,会看到已为所属组添加了执行权限:</p> 

 </p> 

讯享网 -rw-rwxrw- 1 gliu gliu 457 May 10 11:55 filename.txt

 </p> 

讯享网另外,还可以将多个权限的更改合并到一个命令中。假如我们要为其他用户删除读写权限,添加执行权限,同时还为所属组用户添加执行权限,可以通过如下命令来完成:</p> 

 </p> 

讯享网 chmod o-rw+x,u+x filename.txt

 </p> 

讯享网执行后结果如下:</p> 

 </p> 

讯享网 -rwxrwx–x 1 gliu gliu 457 May 10 11:55 filename.txt

 </p> 

讯享网如果要同时更改所有三种用户的权限,可以按以下方式:</p> 

 </p> 

讯享网 chmod a-x filename.txt

 </p> 

讯享网这样会删除所有用户的执行权限:</p> 

 </p> 

讯享网 -rw-rw—- 1 gliu gliu 457 May 10 11:55 filename.txt

 </p> 

讯享网<strong>更改文件所有权</strong></p> 

要更改文件的所有权,可以使用 chown 命令。它表示 change owner。</p> 

讯享网可以按如下方式更改文件的所有者:</p> 

<img alt="" src="https://file.elecfans.com/web2/M00/7D/B6/poYBAGOAdceAQmixAAANhJS9lYo879.jpg" style="width:596px;height:51px;" /></p> 

讯享网如果想要更改用户和组,可以使用如下命令:</p> 

<img alt="" src="https://file.elecfans.com/web2/M00/7D/B6/poYBAGOAddSAQr7bAAAaABsXg2s811.jpg" style="width:595px;height:58px;" /></p> 

讯享网如果只想更改组,那么可以这样执行 chown 命令:</p> 

<img alt="" src="https://file.elecfans.com/web2/M00/7D/B6/poYBAGOAdeSAdxEHAAAY2eBNr-I866.jpg" style="width:584px;height:64px;" /></p> 

讯享网或者可以使用专门用户更改文件和目录所属组的 chgrp 命令。这个命令很容易可以猜到表示 change group。</p> 

<img alt="" src="https://file.elecfans.com/web2/M00/7E/42/pYYBAGOAdfeAXcblAAARes9hIpk113.jpg" style="width:586px;height:52px;" /></p> 

讯享网举个例子,如果我们想要把文件 filename.txt的所有者和组都改为root,可以使用如下命令:</p> 

 </p> 

讯享网 sudo chown root:root filename.txt

 </p> 

讯享网这样就会将文件的用户所有权,和组所有权,都改为root。</p> 

 </p> 

讯享网 -rw-rw—- 1 root root 457 May 10 11:55 filename.txt

 </p> 

讯享网注意到上述命令中使用 sudo 了吗?这是因为这个命令涉及到了root用户,要处理root用户,需要使用超级用户权限。</p> 

注:同一个文件不能被两个组所拥有。</p> 

讯享网<strong>文件权限有优先权吗?</strong></p> 

设想一种情况,其中用户所有者没有任何权限,组具有读取权限,而其他组具有读取和写入权限。</p> 

讯享网 </p> 

 —-r–rw- 1 gliu gliu 457 May 10 11:55 filename.txt

讯享网 </p> 

那么,如果用户 gliu 想要使用 cat 或者 less 命令来读取这个文件,会成功吗?答案是不会,因为它没有读权限。</p> 

讯享网但是用户 gliu 是组 gliu(这个是组名称) 的一个成员,而该组具有读取权限,这应该表示组内的每个人(包括用户gliu)都应该有读的权限才对啊?答案是否定的。</p> 

在 Linux 中,优先级是从用户,到组,然后再到其他。系统会检查是谁启动了进程(在我们的例子中进程是 cat 或者 less),如果启动进程的用户同时也是文件的所属组用户,那么就会设置用户权限位。</p> 

讯享网如果启动进程的不是文件所有者,那么系统就会检查组,如果启动进程的用户恰好在文件所属组中,那么将设置组权限位。</p> 

如果启动进程的用户不是文件所属组中的用户,那么就会设置其他权限位。</p> 

讯享网<br />  </p> 
小讯
上一篇 2025-04-25 11:42
下一篇 2025-04-27 17:20

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/164110.html