7.2-linux文件权限
在linux中每个文件有所有者、所在组、其它组的概念
- 所有者
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者
用ls ‐ahl命令可以看到文件的所有者
也可以使用chown 用户名 文件名来修改文件的所有者 - 所在组
在linux中的每个用户必须属于一个组,不能独立于组外
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
用ls ‐ahl命令可以看到文件的所有组
也可以使用chgrp 组名 文件名来修改文件所在的组 - 其它组
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
1. 文件权限符概念
如上图所示做简介:drwxr-xr-x 就表示该文件..的文件权限
- 第一个字段的字符d表示对象的类型为目录
d:表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。
-:表示这是一个普通的文件。
l: 表示这是一个符号链接文件,实际上它指向另一个文件。
b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。 - 剩下的字段分为3组,分别代表 文件属主 属组成员 其他用户 的权限为 rwx r-x r-x
前三个为属主位:创建该文件者或被指定的文件所属者
中三个为属组位:文件的所属组,在该组内的非属主用户对该文件拥有该属组权限。
后三个Other位:other用户,既不属于属主又不在属组的用户
文件权限r w x 介绍
- r(Read,读取)
对文件而言,具有读取文件内容的权限;
对目录来说,具有浏览目录的权 - w(Write,写入):
对文件而言,具有新增、修改文件内容的权限;
对目录来说,具有删除、移动目录内文件的权限。 - x(eXecute,执行):
对文件而言,具有执行文件的权限;
对目录了来说该用户具有进入目录的权限。 - -:表示不具有该项权限。
文件中rwx的具体含义:
- r:可以使用类似cat等命令查看文件内容
- w:可以编辑或删除此文件
- x:可以在命令提示符下当做命令提交给内核运行
目录中rwx的具体含义:
- r:可以对此目录执行ls以列出内部的所有文件
- w:可以在此目录创建文件:
- x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息
举例说明:
rwx------: 文件所有者对文件具有读取、写入和执行的权限。
-rwxr―r--: 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。
-rw-rw-r-x: 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
drwx--x--x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
特别注意:
当删除或移动一个文件或目录,仅与该文件与目录所在的上一层目录权限有关,与该文件本身属性没有任何关系。对于文件来说,写文件是修改文件,而不是删除文件,因此写文件是与该文件的本身属性有关的。
默认文件权限
使用命令umask改变文件及目录的默认权限
Linux系统中,文件的默认权限是由umask确定的。在/etc/login.defs文件中可以查看umask在不同目录下的默认权限值。
000 |
--- | 对应八进制0 | 没有任何权限 |
001 | --x | 对应八进制1 |
只有执行权限 |
010 |
-w- | 对应八进制2 | 只有写入权限 |
011 | -wx | 对应八进制3 | 有写入和执行权限 |
100 | r-- | 对应八进制4 |
只有读取权限 |
101 | r-x | 对应八进制5 | 有读取和执行权限 |
110 | rw- | 对应八进制6 | 有读取和写入权限 |
111 | rwx | 对应八进制7 | 有全部权限 |
umask命令查看默认权限
umask 不加参数得出的 0022 第一位0表示安全特性叫粘着位,剩下3个数字表示文件或目录对应的umask的八进制值
创建文件时,默认最大权限是666,创建文目录最大权限是777,然后根据umask值,计算对应权限。
所以实例创建文件最大权限666减去usmak数值022得出的数值才是文件权限 = 644 等价于 rw-r--r--
umask命令设置文件的默认权限
umask命令设置目录的默认权限
umask设置为026,给新的目录newdir01, 对应的权限应该是777-026=751 等价于 wrxr-x--x
2. 改变权限chmod
- chmod可以用来改变文件或目录权限的命令,但只有文件的属主和超级用户root才有这种权限。
- 若同时更改多个所属对象权限,中间用“空格”隔开
通过chmod改变文件或目录的权限有两种办法:
- 一是通过权限字母和操作符表达式的方法来设置权限
u 属主 g 属组 o 其它用户
+ 增加 - 减去 = 设置
r 读 w 写 x 执行 - 另一种是通过使用数字方法来设置权限
chmod [数字组合] 文件名
-R 可以改变某个目录下所有文件的属性 4 读 2 写 1 执行 0 无权限
原来文件carlos01 caelos02的权限都是无权限,后来在原权限其他用户组追加r读权限,所以变成r-- ,,若想在carlos01的所属组在追加w权限,carlos02的其他用户组减去r读权限怎么操作?
3. 改变所属关系命令chown chgrp
当我们要改变一个文件的属组,我们使用的用户必须是文件的属组而且同时是目标属组的成员,或超级用户。
只有超级用户才能改变文件的属主。
- chown命令改变文件的属主
将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
因为chown既可以改属主又可以改属组所以下面这个chgrp命令很少用 - chgrp命令可以改变文件默认属组
语法: chown [选项] [所有者][:[组]] 文件 #:可以被.代替
- user : 新的文件拥有者的使用者 ID
- group : 新的文件拥有者的使用者群体(group)
- -c : 若该文件拥有者确实已经更改,才显示其更改动作
- -f : 若该文件拥有者无法被更改也不要显示错误讯息
- -h : 只对于连结(link)进行变更,而非该 link 真正指向的文件
- -v : 显示拥有者变更的详细资料
- -R : 对目前目录下的所有文件与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
- --help : 显示辅助说明
- --version : 显示版本