0


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

文章目录

1、Linux文件权限

1.1、如何查看到文件权限

使用

ls -l

或者

ll

指令可以直接查看到如下的标记,这些标记代表的相关文件或文件夹的权限类型及所属:

image-20240222100605216

其中分四段:

  • 第一段,为文件/文件夹权限,其中首个bit位字符为文件类型,一共有如下的七种:前三种为常见类型
    类型说明
    ```
  • 普通文件。
    
    d
    目录,字母
    
    d
    dirtectory
    (目录)的缩写。
    
    l
    符号链接。请注意,一个目录或者说一个文件夹是一个特殊文件,这个特殊文件存放的是其他文件和文件夹的相关信息。
    
    b
    块设备文件。
    
    c
    字符设备文件。
    
    p
    管道文件
    
    s
    ```
    套接口文件
    像类型为文件,如下面这种:

image-20240223160559384

之后跟随的会有9个bit位,分别代表不同的权限类型,后续再进一步讨论。

  • 第二段,为文件/子目录的链接数量

像上述的文件结果中,

1

表示有一个硬链接指向文件

python.gram

,一般来说文件类型均为1。如果为文件夹类型则表示的是链接的子目录个数。

  • 第三段,为权限所属用户

表示拥有当前文件或目录的用户。

  • 第四段,为权限所属群组

表示所属的群组(group)。群组下的每一个使用者都具有该文件\路径的控制权限,一个用户可以拥有一个以上的组,大部分都只属于1个群组。

1.2、ll命令介绍

在Ubuntu中默认不含ll命令,其实质为

ls -l

的别名,我们可以通过修改环境变量自行添加:

# 切换管理员模式su# 修改系统环境变量vim ~/.bashrc

添加或将下面这一段去掉注释:

image-20240222095730569

修改完成之后,使环境变量生效:

source ~/.bashrc

image-20240222100228829

注:root环境变量和普通用户环境变量不共通,使用

ll

指令,不同用户下需单独修改。

2、权限分类

2.1、文件权限

在文件类型字节位后,紧接着的3*3个字符分3组,各**表示不同角色对此文件的读®、写(w)、执行权限(x)**:

  • 第一段:3bit,对应**文件所有者(owner)**的权限
- rwx --- ---    对应文件所有者(owner)拥有读写及执行权限,设定值为700,其值等于下面三项值相加
- r-- --- ---    对应文件所有者(owner)拥有读权限,设定值为400
- -w- --- ---    对应文件所有者(owner)拥有写权限,设定值为200
- --x --- ---    对应文件所有者(owner)拥有执行权限,设定值为100
  • 第二段:3bit,对应**文件所属用户群组(group)**的权限
- --- rwx ---    对应文件所属群组(owner)拥有读写及执行权限,设定值为070,其值等于下面三项值相加
- --- r-- ---    对应文件所属群组(owner)拥有读权限,设定值为040
- --- -w- ---    对应文件所属群组(owner)拥有写权限,设定值为020
- --- --x ---    对应文件所属群组(owner)拥有执行权限,设定值为010
  • 第三段:3bit,对应**其他用户(others)**的权限
- --- --- rwx    对应其他用户(others)对文件拥有读写及执行权限,设定值为007,其值等于下面三项值相加
- --- --- r--    对应其他用户(others)对文件拥有读写及执行权限,设定值为004
- --- --- -w-    对应其他用户(others)对文件拥有读写及执行权限,设定值为002
- --- --- --x    对应其他用户(others)对文件拥有读写及执行权限,设定值为001

上述权限对应下来则为八进制码表,二进制码的计算顺序为从右往左:
八进制位权限权限符号二进制位7读\写\执行rwx1116读\写rw-1105读\执行r-x1014读r–1003写\执行-wx0112写-w-0101执行–x0010无权限—000
举例:

权限符号为

rw-

,其二进制位为110,则二进制转为八进制为,计算顺序为从右往左:

      2 
     
    
      0 
     
    
   
  
    2^0 
   
  
20+ 
 
  
   
    
    
      2 
     
    
      1 
     
    
   
  
    2^1 
   
  
21+ 
 
  
   
    
    
      2 
     
    
      1 
     
    
   
  
    2^1 
   
  
21=6,即r为2号位值为1,w为1号为值为1,-为0号位值为0。

2.2、文件夹权限

文件夹的权限标识与文件相同,但所具有的含义不一样,对应如下:

  • r:能够浏览目录信息,包括目录名称及所含文件等信息。无权限时无法查看对应内容

image-20240223171228842

  • w:能够删除新增或修改目录中的文件或目录。无权限时限制删除新增等操作

image-20240223171711277

  • x:当具有x权限时,能够进入该目录。无权限时被限制进入

image-20240223171127644

3、权限修改

3.1、修改文件/文件夹权限

1)chmod指令
chmod

修改文件权限:

chmod[选项] 权限 文件名/文件夹名

[选项]为可选,支持以下常用参数:
参数作用-c改变权限成功后再输出成功信息-R递归处理所有子文件-f改变权限失败后不显示错误信息-v显示执行过程详细信息
示例:

# 设置文件夹权限为770:文件所有者和用户群组有读\写\执行权限,其他用户无权限chmod770 testDir
# 设置文件权限为707:文件所有者和其他用户有读\写\执行权限,用户群组无权限chmod707 testfile

image-20240223170729874

注:只有**文件所有者(owner)或管理员(root)**才允许修改文件权限。

2)chmod指令符号

在chmod指令中,可以使用用户表示符和权限控制符号来简化指令,更为的清晰,其对应的不同符号如下:

  • 用户表示符
    用户表示符说明u所有者g拥有者同组用户o其它用户a所有用户

  • 权限操作符
    权限操作符含义+表示添加权限-表示移除权限=表示设置权限为特定的值

  • 权限符号
    符号含义r读取权限w写入权限x执行权限
    组合使用举例:

# 给文件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)设置读取和写入权限chmoda=rw file.txt

3.2、修改文件/文件夹所属用户

chown

修改文件/文件夹所属的用户:

chown[选项] 新所属用户名 文件名/文件夹名
chown

常用的[选项]参数:
常用参数描述

-R, --recursive

递归地更改指定目录及其子目录中所有文件和目录的所有者。

--reference=RFILE

把指定文件的拥有者和用户组应用到其他文件, RFILE为参考文件。

--from=CURRENT_OWNER[:CURRENT_GROUP]

仅在文件的当前所有者或用户组匹配指定的值时才更改文件的所有者和/或用户组。

--preserve-root

不允许在 “/” 上递归操作

-v, --verbose

显示详细的操作信息。
示例:

# 将file.txt文件所属用户修改为用户miniboychown miniboy file.txt

image-20240302175436935

注:所修改的新用户,为存在的用户,否则会执行失败,提示无效用户。

--from=CURRENT_OWNER[:CURRENT_GROUP]

参数使用举例:当匹配到对应的所有者/用户组时才进行修改

# 当file.txt的当前所有者是olduser,用户组是oldgroup时,才将其所有者更改为newuser,用户组更改为newgroupchown--from=olduser:oldgroup newuser:newgroup file.txt

3.3、修改文件/文件夹所属群组

chgrp

更改文件或文件夹所属用户组(group):

chgrp[选项] 用户组名 文件名/文件夹名

在[选项]参数方面与

chown

类似,常用参数如下:
参数描述

-R, --recursive

递归地更改指定目录及其子目录中所有文件和目录的所属用户组。

--reference=RFILE

把指定文件的用户组应用到其他文件。

--preserve-root

不要跨越文件系统的边界,这对于递归操作非常重要。

-v, --verbose

显示详细的操作信息。

--dereference

在符号链接指向文件本身时,处理符号链接指向的文件而不是符号链接文件本身。
使用示例:

# 将file.txt文件的所属群组修改为newgroupchgrp newgroup file.txt
chgrp

部分修改也能够通过

chown

来实现,如修改拥有者和所属组:

chown :root file30.txt (修改所属组为root)
chown root:root file30.txt (修改拥有者和所属组为root)

注:只有超级用户(root)或者文件的当前所有者才能使用

chgrp

命令。

4、参考

https://blog.csdn.net/m0_56311933/article/details/123006978

https://www.cnblogs.com/kongzhongqijing/p/3488884.html

标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/qq_44281591/article/details/136425033
版权归原作者 mini小新 所有, 如有侵权,请联系我们删除。

“Linux:文件权限详解及修改方法”的评论:

还没有评论