7.1 文件的基本权限
7.1.1 权限的作用
通过对文件设定权限可以达到以下三种访问限制权限:
只允许用户自己访问;
允许一个预先指定的用户组中的用户访问;
允许系统中的任何用户访问。
7.1.2 查看权限
命令:ll /etc/passwd
其中:文件类型,可以为p、d、l、s、c、b和-
p 表示命令管道文件
d 表示目录文件
l 表示符号连接文件
- 表示普通文件
s 表示 socket 套接口文件,比如我们启用 mysql 时,会产生一个mysql.sock 文件
c 表示字符设备文件,例:虚拟控制台 或 tty0
b 表示块设备文件 例:sda,cdrom
例子:
7.1.3 权限说明
对于文件来说:
r:读
w:写
x:执行
对于目录来说:
r:读(看到目录里面有什么) ls
w:在目录里面见文件,删除,移动 touch mkdir rm mv cp
x:进入 cd cat
7.1.4 文件拥有者
UGO:所有者-----用户组-----其他用户
所有者:就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
用户组:用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改收此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是是用户组。
其它用户:系统内的其他所有者用户就是other用户类
7.1.5 举例说明
7.1.5.1 常见几种文件权限组成
- rwx --- --- :文件所有者对文件具有读取、写入和执行的权限。
- rwx r-- r-- :文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限
- rw- rw- r-x :文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
drwx --x --x :目录所有者具有读写与进入目录的权限,其他用户仅能进入该目录,却无法读取任何数据。
drwx --- --- :除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
例1:
每个用户都拥有自己的专属目录,通常放置/home下
注:[rwx --- ---] 表示目录所有者本身拥有的权限,其它用户是无法进入的。root可以
例2:
以什么用户身份登录,那么你创建的文件或目录,自动成为该文件的所属主和组
7.1.5.2 更改文件的属主和属组
chown:可以用来改变文件(或目录)的属主
chgrp:可以用来改变文件(或目录)的默认属组
如果要对目录进行操作,加参数 -R
chown语法:
chown user:group filename 比如:chown hr:san a.txt 把文件的属主和属组改为 hr和san
chown user filename 比如:chown san a.txt 把文件的属主改为 san 用户
chown :group filename 比如:chown :miao a.txt 把文件的属组改为 miao 这个组
chown user: filename 比如:chown san: a.txt 把 a.txt 文件的属主和属组改为 san 用户。
chgrp hr filename 比如:chgrp hr f.txt
-R :递归(目录下的所有内容都更改,否则只修改目录)
实验:一个文件只有只读的权限,拥有者是否可以写入这个文件?
结果:文件所有者一定可以写文件,需要强制保存退出(wq!)
7.1.6 修改权限
7.1.6.1 使用字符设定
修改权限用的命令:chmod
作用:修改文件,目录的权限
语法:chmod [对谁操作] [操作符] [赋于什么权限] 文件名
对谁操作:
u -----> 用户 user,表示文件或目录的所有者
g -----> 用户组 group,表示文件或目录所属的用户组
o -----> 其他用户 others
a -----> 所有用户 all
操作符:
+ 添加权限
- 减少权限
= 直接给定一个权限
权限:r w x
例如下列的组合:
u-w user 拥有者
g+x group 组
o=r other 其他人
a+x all 其他人
7.1.6.2 使用八进制(0-7)数字表示权限法
例 1:
例 2:
rw- 的值是多少? 4+2=6
rwx r-x r-x的值是多少? rwx=4+2+1=7 r-x=4+1=5 r-x=4+1=5
7.1.7 权限对文件和目录的影响
有三种权限可以应用:读取,写入与执行,这些权限对访问文件和目录的影响如下:
7.1.8 补码
为什么我们创建的文件权限是644(即rw- r-- r--)呢?
我们创建文件的默认权限是怎么来的
umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的 umask 值中的数字
文件默认权限=666 目录默认权限=777
我们一般在/etc/profile、$[HOME]/.bash_profile 或$[HOME]/.profile 中设置umask 值
永久生效,编辑用户的配置文件:vim /etc/profile
图上注解:UID大于199 且用户的组名和用户名一样,那么 umask 值为 002,否则为 022
图上注解:-gt 在 shell 中表示大于;id -g 显示用户组 ID,id -gn 显示组名
临时生效权限:
umask 权限补码
权限的算法:一般情况是:目录默认权限-umask 值
图上 :666-044=622
试题:umask 掩码为 033 创建普通文件后,权限是什么?
(重要)666-033= 633,633是错误情况,因为在创建文件的时候不能带有执行权限,所以结果为644,即:-rw- r-- r--