Linux shell编程(五): Linux文件权限管理

接上一篇文章Linux shell编程(四): Linux 用户和组管理

2.4.3 Linux文件权限

使用 ls 命令可以查看文件、目录和设备的权限(第一组),如下:

Linux shell编程(五): Linux文件权限管理

共有10位,除第1位,后9位每3位为一组,其中各部分含义如下:

Linux shell编程(五): Linux文件权限管理

  1. 文件类型
    • - 代表文件
    • d 代表目录
    • l 代表链接
    • c 代表字符型设备
    • b 代表块设备
    • n 代表网络设备
  2. 属主权限(user)
  3. 属组权限(group)
  4. 其他用户权限(other)

其中,每组3位依次为读权限/写权限/执行权限,

  • r 代表可读
  • w 代表可写
  • x 代表可执行
  • - 代表当前位没有权限

有时也看到使用数字表示这几位权限,其实这些数字是八进制数,它与字母表示的方法是通过二进制转换过来的,对应关系如下:

权限 二进制值 八进制值 描述
000 0 没有任何权限
–x 001 1 只有执行权限
-w- 010 2 只有写入权限
-wx 011 3 有写入和执行权限
r– 100 4 只有读取权限
r-x 101 5 有读取和执行权限
rw- 110 6 有读取和写入权限
rwx 111 7 有全部权限

依照此规律,上面例子中的 Videos 目录的权限用数字可以表示成 755。

修改权限

使用 chmod 命令可以修改文件和目录的权限,如下:

chmod options mode file

其中,options 是参数选项,mode 是权限,file 是要修改权限的文件或目录。

对于参数选项,有一个很有用的参数 -R ,可以让权限的改变递归地作用到文件和子目录。

对于mode权限,可以使用八进制模式或符号模式进行设置。

八进制模式: chmod 760 testfile

符号模式较八进制模式有些复杂,它的格式如下:

[ugoa][+-=][rwxXstugo]

其中第一组各字符含义如下:

  • u:用户(user)
  • g:用户组(group)
  • o:其他(other)
  • a:上述所有(all)

第二组各字符含义如下:

  • +:在现有权限基础上增加权限
  • -:在现有权限基础上移除权限
  • =:将权限设置成后面的值

第三组除rwx外,其余各字符含义如下:

  • X:如果对象是目录或者它已有执行权限,赋予执行权限。
  • s:运行时重新设置UID或GID。
  • t:保留文件或目录。
  • u:将权限设置为跟属主一样。
  • g:将权限设置为跟属组一样。
  • o:将权限设置为跟其他用户一样。

使用示例:

Linux shell编程(五): Linux文件权限管理

修改所属关系

chown 命令用来改变文件的属主,也可以同时修改属组,
chgrp 命令用来改变文件的默认属组。

chown 修改属主

chown testuser testfile

chown 修改属组

chown .testgroup testfile

chown 同时修改属主和属组

chown testuser.testgroup testfile

如果属组是通过匹配属主创建的(此时属组和属主同名),同时修改属主和属组可以简写为:

chown testuser. testfile

同样,chown 也有参数选项,-R 选项配合通配符可以递归地改变子目录和文件的所属关系。 -h 选项可以改变该文件的所有符号链接文件的所属关系。

注意,只有root用户能够改变文件的属主。任何属主都可以改变文件的属组,但前提是属主必须是原属组和目标属组的成员。

上一篇:【Mysql基础】五.TCL语言(事务控制)


下一篇:Python subprocess的使用