Linux系列笔记----------理解文件权限

Posted 嵌入式历练者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系列笔记----------理解文件权限相关的知识,希望对你有一定的参考价值。

目录

前言:

1.理解文件权限

1.1使用文件权限符【!】解读ls -l命令所输出的谜一般的文件权限

2.默认文件权限

2.1umask命令用来设置所创建文件和目录的默认权限

3.改变权限

3.1.八进制模式改变权限

3.2.符号模式改变权限


前言:

记下相关笔记,记录我的学习生活!

该文章为原创,转载请注明出处和作者:https://blog.csdn.net/Eterlove/article/details/120611962

1.理解文件权限


1.1使用文件权限符
【!】解读ls -l命令所输出的谜一般的文件权限

输出的第一个字段是用来说明文件和目录权限的编码
第一个字符代表对象类型
- 代表文件
d代表目录
l 代表链接
c 代表字符型设备
b 代表快设备
n 代表网络设备

之后三组三字符的编码,每一组都定义了三种访问权限:
r (read)代表对象是可读的
w (write) 代表对象是可写的
x 代表对象是可执行
若没有某种权限,则用单破折线替代(如rw-说明该对象没有可执行权限)

[shichenghong@localhost 桌面]$ cd /home
[shichenghong@localhost home]$ ls -l
总用量 8
-rw-r--r--.  1 root         root            0 9月  29 17:46 aaa.txt
drwxr-xr-x.  2 root         root         4096 9月  29 17:47 bbb
-rw-r--r--.  1 root         root            0 9月  28 18:00 hello


这里有三组权限分别对应对象的三个安全级别:
(按从左到右顺序) 第一组:对象的属主
                            第二组:对象的属组
                            第三组:系统其他用户

用上面找个简单例子说明:

-rw-r--r--.  1 root         root            0 9月  29 17:46 aaa.txt

 文件aaa.txt(第一个字符-代表对象是文件)有三组权限:

rw-: 文件的属主(是登录名root)

r--: 文件的属组(是组名root)

r--: 系统上其他用户

详解:这些权限说明登录名为root的用户可以读取,写入这个文件,但不可以执行这个文件,类似的,root组的成员可以读取,但不可以写入这个文件及执行这个文件,而不属于root组的其他用户也只能读取文件,而不能写入和执行文件。(wx被单破折线-所替代

2.默认文件权限

接下来我们讨论下文件从何而来,你可能曾经接触过-----umask

2.1umask命令用来设置所创建文件和目录的默认权限

[root@localhost home]# umask
0022
[root@localhost home]# pwd
/home
[root@localhost home]# touch zzz.txt
[root@localhost home]# ls -l zzz.txt
-rw-r--r--. 1 root root 0 10月  5 21:14 zzz.txt
  • 遗憾的是umask有一点复杂!以上为例,0022第一位表示一项特别的安全特性,叫做粘着位(先了解后面讲述,这次不是重点)
  • 后面的3位表示文件或目录对应的umask八进制值,八进制模式的安全性设置先获取这3个rwx权限的值,然后将其转化成3位二进制值,用一个八进制值来表示。
  • 以rw-为例,权限值就是rw- ,转化成二进制值为110,代表的八进制值为6
  • -rw-r--r--. 1 root root 0 10月  5 21:14 zzz.txt
  • 理解八进制模式后就更加让我疑惑了,我的Linux系统上默认的八进制值为0022,为什么我所创建的文件八进制权限为644?
  • 原来umask值只是个掩码,它会屏蔽掉不想授予该安全级别的权限
  • 要把umask值从对象的全权限值中减掉,对文件而言,全权限的值为666(所有用户都有读写的权限),而对于目录来说,则是777(所有用户都有读写,执行权限)
  • 在上例中,文件剩下的权限644=666-022

值得注意的是,在大多数Linux发行版中,umask中设置在/etc/profile启动文件中,也有一些是设置在/etc/login.defs文件中(如Ubuntu),可以用umask命令设置指定一个新值。

[root@localhost home]# umask 026

3.改变权限

你已经创建了一个目录和文件,如何更改文件和目录的已有权限?

  • chmod命令用来改变文件和目录的安全性设置
  • 格式:chmod mode newfile
  • mode参数可以使用八进制模式和符号模式设置权限

3.1.八进制模式改变权限

  • 以上面zzz.txt文件为例
[root@localhost home]# ls -l zzz.txt
-rw-r--r--. 1 root root 0 10月  5 21:14 zzz.txt
[root@localhost home]# chmod 760 zzz.txt
[root@localhost home]# ls -lF zzz.txt
-rwxrw----. 1 root root 0 10月  5 21:14 zzz.txt*

3.2.符号模式改变权限

  • 下面是符号模式的格式:[ugoa...] [+ - =] [rwxXstugo.diyi]
  • 第一组字符定义了权限作用的对象:

u表示用户

g表示组

o表示其他

a代表上述全部

  • 接下来,后面的符号表示在现有权限基础上增加权限(+),或者在现有权限基础上减去权限(-),或是将权限设置成后面的值(=)
  • 第三个符号代表作用到设置上的权限,除了常见的rwx权限,其他的有:

X:如果对象是目录或者它已有执行权限,赋予执行权限

s:运行时重新设置UID(用户ID)或GID(组ID)

t:保留文件和目录

u:将权限设置为跟属主一样

g:将权限设置为跟属组一样

o:将权限设置为跟其他用户一样

还是以上述zzz.txt为例:

[root@localhost home]# ls -lF zzz.txt
-rwxrw----. 1 root root 0 10月  5 21:14 zzz.txt*
[root@localhost home]# chmod u-x zzz.txt
[root@localhost home]# ls -lF zzz.txt
-rw-rw----. 1 root root 0 10月  5 21:14 zzz.txt
[root@localhost home]# 
  • 由ls -lF可知用户具有可执行权限,现在我想减去这个权限。
  • chmod u-x zzz.txt
  • u-x移除了属主已有的执行权限,现在zzz.txt文件后面已经没有了*星号,即没有了执行权限

                                   动手才能收获。最后感谢大家阅读!

以上是关于Linux系列笔记----------理解文件权限的主要内容,如果未能解决你的问题,请参考以下文章

Linux关于文件的权限笔记

Linux课程笔记 Apache服务Forbidden 403故障分析

linux的学习系列 4---文件权限和访问模式

Linux Linux权限管理与特殊权限

Linux 权限的理解

Linux 权限的理解