什么是权限
**权限:**在计算机系统中,权限是指某个计算机用户具有使用软件资源的权利。
权限的目的
文件权限的设置目的:是想让某个用户有权利操作文件
权限的分类
-
普通权限rwx
用户正常情况去操作文件所具有的权限
-
高级权限st
用户对某个文件操作有特殊需求,而普通权限不能满足,需要给文件设置高级权限
-
默认权限umask
用户在系统中创建一个文件,该文件默认都会有一个权限,该权限是默认有的
注意:
权限是设置在文件上的,而不是用户
普通权限rwx(重点)
read读权限
-
针对目录
一个目录拥有r权限,说明可以查看该目录里的内容(ls命令列出)
-
针对普通文件
一个普通文件拥有r权限,说明可以查看该文件的内容(cat/head/tail/less/more等命令查看)
-
读权限==r==(read)用数字表示是**4**
write写权限
-
针对目录
一个目录拥有w权限,说明可以在该目录里==创建、删除、重命名==等操作(mkdir/touch/mv/rm等)
-
针对普通文件
一个普通文件拥有w权限,说明可以==修改该文件的内容==(vi/vim编辑器编辑文件)
-
写权限==w(write)用数字表示是2==
execute执行权限
-
针对目录
一个目录拥有x权限,说明可以==进入或切换到==该目录里(cd命令)
-
针对普通文件
一个普通文件拥有x权限,说明可以==执行==该文件(一般程序文件、脚本文件、命令都需要执行权限)
-
执行权限==x(execute)用数字表示是1==
rwx = 读写执行 = 4 + 2 + 1
没有权限
没有任何权限用横杠==-表示,数字表示是0==
理解UGO
UGO,指的是==用户身份,每个字母代表不同的==用户身份。
-
U(the user who owns it)
文件的拥有者(owner)或者创建者
-
G(other users in the file’s group)
在文件的所属组(默认是创建文件的用户的主组)里的用户
-
O(other users not in the file’s group)
既不是文件的创建者,也不在文件属组里的用户,称为其他人
注意:
除了上面ugo以外,还有一个字母==a(all users),表示所有用户==,包含ugo
查看文件的权限
ls -l 文件名称
或
ll 文件名称
如果查看一个文件夹的权限,建议使用-d
普通权限rwx
rwx对文件的影响
r对文件的影响
-
针对目录
一个目录拥有r权限,说明可以查看该目录里的内容(ls命令列出)
-
针对普通文件
一个普通文件拥有r权限,说明可以查看该文件的内容(cat/head/tail/less/more等命令查看)
-
读权限==r==(read)用数字表示是**4**
w对文件的影响
-
针对目录
一个目录拥有w权限,说明可以在该目录里==创建、删除、重命名==等操作(mkdir/touch/mv/rm等)
-
针对普通文件
一个普通文件拥有w权限,说明可以==修改该文件的内容==(vi/vim编辑器编辑文件)
-
写权限==w(write)用数字表示是2==
如果我们想在Linux系统中删除某个文件,不是看这个文件有什么权限,而是要看这个文件所处的上级目录是否具有w权限。
x对文件的影响
-
针对目录
一个目录拥有x权限,说明可以==进入或切换到==该目录里(cd命令)
-
针对普通文件
一个普通文件拥有x权限,说明可以==执行==该文件(一般程序文件、脚本文件、命令都需要执行权限)
shell.sh => 类似Windows中的exe文件
-
执行权限==x(execute)用数字表示是1==
图解常见操作权限
/
/dir1 /dir2
/dir1/file1
用户身份
U : user,代表文件的拥有者(默认为文件的创建者)
G :group,与文件所属组同组的用户(组内用户)
O :other,既不是拥有者,也不是所属组内的用户,这些用户就称之为其他用户
a = UGO,代表所有用户
如何判断不同身份的用户对文件的权限
ls -l
或
ll
注:ll代表红帽以及CentOS系统专有的一个命令,等价于ls -l。但是其他系统可能并不支持
权限的设置(重点)
① 字母方式(ugo + rwx)
② 数字方式(4 2 1)
基本语法:
chmod [选项] 字母形式或数字形式 文件名称
选项说明:
-R : 递归设置,针对文件家(目录)
字母形式(三步走)
第一步:确认给谁设置权限(u,g,o,ugo=a)
第二步:怎么设置权限(+, -, =)
第三步:授予什么样的权限(r,w,x)
案例:给readme.txt设置权限,要求文件拥有者rwx权限,所属组内用户rw,其他用户r权限
chmod u=rwx,g=rw,o=r readme.txt
数字形式(421)
read = 4
write = 2
execute = 1
777
644
755
7 = 4 + 2 + 1 = r + w + x = rwx
6 = 4 + 2 = rw
5 = 4 + 1 = rx
案例:设置shop文件夹权限为777(所有拥有都拥有rwx)
chmod -R 777 shop
高级权限
在Linux系统中有哪些高级权限
① 冒险位(u + s) => S
- 冒险位,指文件操作者(用户)临时拥有文件拥有者的权限
- 冒险位,一般针对的是命令或者脚本文件
- 冒险位,用字母表示是s或S;数字表示是4
- 冒险位的设置:
chmod u+s 文件名
或者chmod 4xxx 文件名
主要针对可执行的二进制文件,如/usr/bin/passwd文件
② 强制位(g + s)
-
强制位,一般针对的是目录
如果一个目录拥有强制位,那么任何用户在该目录里所创建的任何文件的属组都会继承该目录的属组。
-
强制位,用字母表示是s或S;数字表示是2
-
强制位的设置:
chmod g+s 文件名
或者chmod 2xxx 文件名
主要针对目录进行设置,比如shop目录,文件拥有者root,所属组wangwu,g+s
这样以后我们在shop目录下创建的所有文件的所属组都会继承shop文件夹的itheima
③ 粘滞位(o + t) => T
-
粘滞位,一般针对的是公共目录
如果一个公共目录拥有粘滞位,那么该目录下的文件,只有root和文件的创建者可以删除,其他人只能自己管理自己。(A用户不能删除B用户创建的文件)
-
粘滞位,用字母表示是t或T;数字表示是1
-
粘滞位的设置:
chmod o+t 文件名
或者chmod 1xxx 文件名
默认权限(了解)
什么是文件的默认权限
所谓文件的默认权限(遮罩权限),是指用户创建文件后,文件天生就有的权限,不需要设置。
文件默认权限由谁控制
文件默认权限由一个叫做**umask**的东西来控制。
文件或目录的最高权限
目录:最高权限0777,简写就是777
文件:最高权限0666,简写就是666
默认目录权限 = 0777 - umask
默认文件权限 = 0666 - umask
获取umask值
默认umask值,root账号0022
临时或永久更改umask值(慎用,只了解)
临时设置umask值
umask 0002
只在当前终端当前进程中有效
永久设置umask值(写入系统配置)
配置文件说明:
全局配置文件(针对所有用户所有进程) => 针对所有用户有效
/etc/profile
系统和用户的环境变量信息,当用户第一次登录时,该文件被读取
/etc/bashrc
每个运行的bash信息(系统别名、函数及默认权限的定义),当bash被打开时,该文件被读取
局部配置文件(针对某个特定用户以及用户的所有进程) => 针对当前用户有效
~/.bashrc
当前用户的bash信息,当用户登录和每次打开新的shell时该文件被读取
~/.bash_profile
当前用户的环境变量,当用户登录时,该文件被读取
~/.bash_history
保存当前用户历史命令的文件
~/.bash_logout
当用户退出bash或者终端时,会首先执行该文件里的代码,然后再退出
案例:更改umask值,针对所有用户有效,umask值设置为0002
# vim /etc/bashrc
...
umask 0002
# source /etc/bashrc => 让umask值立即生效
案例:更改umask值,只针对wangwu用户有效,umask值设置为0002
su - wangwu
[wangwu@localhost ~] # vim ~/.bashrc
...
umask 0002
更改文件的拥有者以及所属组
什么是拥有者什么是所属组
更改文件的拥有者与所属组
有些软件或程序要求比较特殊,其如果想正常运行,拥有者与所属组必须是某个值。
如mysql数据库,其要求系统中必须有一个mysql的系统账号,而且要求其安装目录的文件拥有者以及所属组都必须是mysql
chown更改文件拥有者
chown [选项] 新文件拥有者 文件名称
选项说明:
-R :递归设置,主要针对文件夹
chgrp更改文件的所属组
chgrp [选项] 新文件所属组 文件名称
选项说明:
-R :递归设置,主要针对文件夹
chown同时修改文件属主以及属组
chown [选项] 新的文件拥有者:新的文件所属组 文件名称
chown [选项] 新的文件拥有者.新的文件所属组 文件名称
选项说明:
-R :递归设置,主要针对文件夹
ACL访问权限控制(扩展)
ACL能做什么
- ACL访问控制策略可以作为前面所讲权限的补充,更加细的来控制文件的权限
- ACL策略可以只针对某个用户在文件上有相应权限
- ACL策略也可以只针对多个用户或者一个组里的所有用户在文件上有相应权限
getfacl
基本语法:
getfacl = get + file + acl => 获取某个文件的ACL权限
案例:获取readme.txt文件的ACL权限
getfacl readme.txt
setfacl
常用选项:
-m 修改或者设置ACL策略
-R 递归授权,对目录下已存在的目录或文件有acl策略,但新建的文件没有
-x 去掉某个用户或者某个组的权限
-b 删除所有的acl策略
-d 默认ACL策略,只针对目录,该目录下新建的目录和文件都会继承acl策略
mask: 定义除其他人和所有者外的最大权限
案例:修改readme.txt文件的ACL权限(给itheima这个账号开通rw权限)
setfacl -m u:wangwu:rw readme.txt
u代表user
wangwu代表具体的某个用户
rw代表权限
案例:修改shop文件夹的ACL权限(给itheima组开通rwx权限)
# setfacl -R -m g:wangwu:rwx shop
g代表group
wangwu代表具体的某个用户组名称
rwx代表用户组权限
案例:删除某个用户权限
setfacl -x u:itheima readme.txt
案例:删除所有的ACL权限
setfacl -b readme.txt