你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux文件权限模型——chmod命令是如何工作的

[复制链接]
gaosmile 发布时间:2020-11-6 22:58
Linux中的Chmod命令用于更改或分配文件和目录的权限。在Linux/Unix系统中,文件和目录的可访问性是由文件所有权和权限决定的。在上一篇文章中,我们了解了如何使用chown命令管理文件和目录的所有权。在本教程中,我们将介绍chmod命令。
chmod命令(change mode的缩写)用于管理文件和目录权限,并确定谁可以访问它们。现在让我们深入了解文件和目录权限的本质,以及如何修改它们。

Linux权限


为了更好地理解chmod命令是如何工作的,我们该谨慎地研究Linux文件权限模型在Linux中,我们具有3种类型的文件权限:读(r),写(w)和执行(x)权限。这些权限确定哪些用户可以读取,写入或执行文件。您可以使用文本或八进制(数字)表示法来分配这些权限,我们将在本教程后面讨论。文件和目录可以属于文件(u),组(g)或其他(o)的所有者
  • u - 所有人的权限
  • g - 所有组的权限
  • o- 其他人的权限
使用ls -l命令以长格式的形式查看当前目录下所有可见文件的详细属性。该-l标志列出文件的权限。权限分为三组:用户(user)组(group)和其他(others)。为了更好地理解文件权限,我们将列出目录的内容,如下所示:linuxmi@linuxmi:~/www.linuxmi.com$ ls -l
微信图片_20201106225531.png
从最左端开始,第一个字符/符号表示文件类型。一个连字符( - ) ,表示该文件是一个普通文件。符号d表示它是目录。符号l表示它是符号链接。其余的9个字符分成3个三元组,每个三元组带有三个符号r(read),w(write)和x(execute)。如前所述,第一部分指向所有者权限,第二部分指示组权限,最后一部分指定其他用户对该文件或目录具有的权限。从输出中,我们可以看到我们有4个文件和2个目录。让我们查看下第一个文件-rw-rw-r-- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.com.cpp对于第一个文件,-rw-rw-r–权限表示该文件的所有者具有读取和写入权限,该组还具有读取和写入权限,而其他用户仅具有读取权限。再看看目录的权限:drwxrwxr-x 3 linuxmi linuxmi 4096 10月 12 13:31 Linux迷我们可以看到目录和组的所有者拥有所有权限(读取,写入和执行),而其他用户仅具有读取和执行权限。在三重连字符符号-表示没有权限已被授予该文件,小组或其他用户的所有者。


使用chmod命令设置文件和目录权限


在查看了文件权限以及如何查看它们之后,我们不再关注如何修改这些权限。Linux中的chmod命令用于使用文本(符号)或数字(八进制)表示法更改文件和目录权限。它采用以下语法:
$ chmod [选项]模式文件名
只有root用户或具有sudo特权的普通用户才能更改文件或目录权限。您可以在命令语法中传递多个文件或目录,并用空格分隔。现在让我们深入研究并查看chmod命令的不同示例。


示例1)使用数字符号分配权限


使用数字样式/符号设置权限时,请使用以下语法:$ sudo chmod [选项]数字值文件名数值可以为3或4个数字。但是,在大多数情况下,使用3个数字。读取,写入和执行权限采用以下值:

  • 读取权限=> 4
  • 写权限=> 2
  • 执行权限=> 1

权限值的总和,即在三个段中的每一个中的读取,写入和执行,都占给定文件或目录的完整权限。


这是什么意思?


假设所有者具有读取,写入和执行权限,该组具有读取和执行权限,而其他用户仅具有读取权限,可以将其细分如下:u:rwx = 7
g:rx = 5
o:r– = 4
因此,我们得到的值为754,作为给定文件的文件权限的数值。要将读取,写入和执行权限分配给所有者,而仅将读取权限分配给组和其他用户,请运行以下命令:$ chmod 744 www.linuxmi.com.txt要将所有权限分配给文件的所有者,请对该组读取和执行权限,而对其他用户则完全没有权限,请执行:$ chmod 750 www.linuxmi.com.txt要将所有权限分配给文件的所有者,请对该组具有读写权限,其他用户请运行以下命令:$ chmod 755 linuxmi.txt


示例2)递归分配目录权限


为目录分配权限时,请使用-R标志以递归方式为其目录和子文件夹分配权限。例如:$ chmod 755 -R 目录名$ chmod 755 -R /home/linuxmi/linux


示例3)使用文本表示法指定权限


分配权限的另一种方法是使用文本表示法。在此方法中,chmod命令采用标志或符号,这些标志或符号代表语法中的所有者,组,其他或所有用户(u,g和o)。该方法不像以前的方法那样简单明了,应注意避免分配错误的权限。这是语法的样子$ chmod [选项] [ugoa] [– + =] [r,w,x]文件让我们分解一下。第一组参数[ugoa]指定权限将更改的用户类别
  • u:用户
  • g:组
  • o:其他
  • a:全部(包括以上所有内容)
如果省略了这个集合,那么默认选项是a选项。第二组选项–操作员选项[– + =] –确定是要添加权限还是要从用户类别中删除权限。选项删除
  • –     :该标志从指定的用户中删除文件权限。
  • +    :将权限添加/添加到指定用户。
  • =    :为指定的用户分配不同的权限,并删除该用户段的先前权限。

  • 示例4)为文件分配读取权限

$ chmod o = r 文件名上面的命令仅将用符号“ o”表示的其他用户分配给该文件的读取权限,并删除先前分配给' others '段的权限。取得具有以下权限的linuxmi.txtlinuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt
-rwxrwxr-x 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt

微信图片_20201106225535.png
分配“others (o)”段的读权限,请仅运行linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod o=r linuxmi.txt
[sudo] linuxmi 的密码:
linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt
-rwxrwxr-- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt

微信图片_20201106225537.png
从输出中,我们可以看到已为“others”段分配了读取权限,而同时又失去了执行权限。这意味着=运算符将分配新的权限,而同时会删除以前的权限。


示例5)向文件和组所有者分配执行权限


linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod ug+x linuxmi.txt
linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt
-rwxrwxr-- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt
上面的命令将执行权限添加到文件的所有者和组。使用我们的文件,它将变成:
微信图片_20201106225543.png


示例6)为文件,组和其他分配不同的权限


sudo chmod u=rwx,g=rw,o=r filename上面的命令将所有权限分配给文件的所有者,将读写权限分配给组,仅将读取权限授予其他用户。
微信图片_20201106225540.png

注意:


如果在=运算符之后未指定任何权限,则将删除该用户段中的所有权限。


示例7)删除其他用户的所有权限


$ sudo chmod o= filenamesudo chmod o= linuxmi.txt$ sudo chmod o-rwx linuxmi.txt上面的命令从“其他”用户段中删除指定文件的所有权限。该命令与以下命令具有相同的作用:$ sudo chmod o-rwx filenamelinuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod o= linuxmi.txt
linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt
-rwxrw---- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt
linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod o-rwx linuxmi.txt
linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt
-rwxrw---- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt

微信图片_20201106225546.png


示例8)使用模板文件分配权限


分配文件权限的另一种便捷方法是使用参考文件。在此方法中,您使用--reference=<模板文件> 选项将文件的权限设置为与另一个参考文件的权限相同。使用以下语法$ sudo chmod –reference=ref_file filename例如,要将linuxmi.txt的文件权限设置为与www.linuxmi.com.py的权限相同,请运行以下命令:$ sudo chmod --reference=www.linuxmi.com.py linuxmi.txt模板文件是www.linuxmi.com.py,将linuxmi.txt更改为模板文件相同的权限。
微信图片_20201106225549.png


示例9)仅将执行权限分配给目录


假设我们有一个包含文件和子目录的目录,并且我们希望仅对目录分配执行权限,而不接触文件。因此,这可以通过使用以下chmod命令来实现,$ chmod a+X *如果您已经注意到,我们已经使用大写的X作为执行权限,以上命令将在当前工作目录的所有目录上设置执行权限。


总结


这个话题暂时到此结束。我们查看了chmod命令,并了解了可以使用该命令更改文件权限的各种示例。

收藏 评论0 发布时间:2020-11-6 22:58

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版