六.Linux权限管理(重点)
一.权限概述
总述:linux系统一般将文件可存/取访问的身份分为3个类别:owner,group,other,且3种身份各有read,write,excute
- 权限介绍
什么是权限?
在多用户(可以不同时)计算机系统管理中,权限是指某个特定的用户具有特定的系统资源使用权力,像是文件夹,特定系统指令的使用或存储量的限制。
在linux中分别有读,写,执行权限
读权限:
对于文件夹来说,读权限影响用户是否能够列出目录结构
对于文件来说,读权限英雄用户是否可以查看文件内容
写权限:
对文件夹将爱来说,写权限英雄用户是否可以在文件夹“创建/删除/复制到/移动到”文档
对文件来说,写权限影响用户是否可以编辑文件内容
执行权限:
一般是对于文件来说,特别脚本文件。
身份介绍
Owner身份(文件所有者,默认为文件的创建者)
由于linux是多用户,多任务的操作系统,因此可能常常有多人同时来某台主机上工作,但是每个人均可在主机上设置文件的权限,让其成为个人的“私密文件”,即个人所有者,因为设置了适当的文件权限,除本人(文件所有者)之外的用户无法查看文件内容。
Group身份(与文件所有这同组的用户)
于文件所有这同组最有用的功能体现在多个团队在同一台主机上开发资源的时候。
Others身份(其他人)
相对于所有者,不是文件所有者并且也不在文件所有者同组下的用户
Root用户(超级用户)
Linux中,有一个神一样的存在,这就是root用户,因为在所有用户中它拥有最大的权限,所以管理着普通用户
- Linux的权限介绍
要设置权限,就需要直到文件的一些基本属性和权限的分配规划。在linux中,ls命令常用在查看文件的属性,用于显示文件的文件名和相关属性。
#ls -l 路径 [ls –l 等价于 ll 命令]
标红的部分就是linux的文档权限属性信息。
Linux中存在用户,用户组和其他人概念,各自有不同的权限,对于一个文档来说,其权限具体分配如下:
十位字符表示含义:
第1位:表示文档类型,取值常见的有”d 表示文件夹”,“- 表示文件”,“l 表示软连接”,“s 套接字”等等
第2~4位:表示文档所有者的权限情况,第2位表示读权限,取值有r或-,第3位表示写权限的情况w 可写或- 不可写,第4位表示执行权限的情况,取值有x可执行或- 不可执行
第5~7位,表示与所有者同在一个组的用户的权限情况
第8~10位,表示除了上面的前2部分的用户之外的其它用户的权限情况
注意:当一个文件夹具有可执行的权限的时候,可执行的权限是没有意义的
权限分配中,均是rwx的三个参数的组合,且位置顺序不会变化,没有对应权限就使用“-”代替
二.权限设置
语法:#chmod 选项 权限模式 文档
注意事项:
常用选项:
-R:表示递归设置权限(当文档类型为文件夹的时候)
权限模式:就是该文档需要设置的权限信息
文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径
注意点:如果想要给文件设置权限,操作者要么是root用户,要么就是文档的所有者
提权漏洞:通过向系统发送木马来提升普通用户的权限进行非法操作
1.字母形式
选项 字母 介绍
(谁) u 用户
(谁) g 所属群体
(谁) o 其他人
(谁) a 所有人(全部)
(作用) + 增加权限
(作用) - 减少权限
(作用) = 确定权限
(权限) r 可读
(权限) w 可写
(权限) x 执行
给谁设置:
u:表示所有者身份owner(user)
g:给同组用户设置(group)
o:表示other,给其它用户设置权限
a:表示all,给所有人(包含ugo部分)设置权限
如果在设置权限的时候不指定给谁设置,则默认给所有用户设置
权限字符:
r:读
w:写
x:执行
权限分配方式:
+:表示给具体的用户增加权限(相对当前)
-:表示删除用户的权限(相对当前)
=:表示将权限设置成具体的值 (注重结果)
EG1:给/home/zt/1.txt修改权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其它人拥有只读权限
- #chmod u+x,g+x 1.txt
- #chmod u=rwx,g=rx,o=r 1.txt
补充:
EG1.将1.txt文件的权限全部删除
#chmod a=--- 1.txt
EG2:使用root用户给所有人添加可执行权限,可以使用root用户设置所有人都有执行权限,则可以写成
- #chmod +x 1.txt
- #chmod a=x 1.txt
- #chomd a+x 1.txt
- #chmod u+x,g+x,o+x 1.txt
提示:当文档拥有执行(文件的所有者)权限,则其颜色终端则是绿色
2.数字形式
#chmod 777 1.txt
读:r 4
写:w 2
执行:x 1
竖直 权限 目录列表
0 不能读,不能写,不能执行 ---
1 不能读,不能写,可执行 --x
2 不能读,可写,不能执行 -w-
3 不能读,可写,可执行 -wx
4 可读,不能写,不能执行 r--
5 可读,不能写,可执行 r-x
6 可读,可写,不能执行 rw-
7 可读,可写,可执行 rwx
EG1:给1.txt文件设置权限,要求所有者拥有所有权限,同组用户拥有读,执行权限,其它用户只读
#chmod 754.txt
面试题:用超级管理员设置文档权限命令是#chmod –r 731 aaa,请问这个命令有没有什么不合理的地方?
拥有着:7=4+2+1 读,写,执行
同组:3=2+1 写,执行
其它:1 =执行
能写不能读,没法读就没法打开
注意:在写权限的时候千万不要设置类似于上面的这种”奇葩权限”,2,3权限不能单独出现,如果出现则有不合理的地方
3.注意事项
使用root用户创建一个文件夹(/home/zt/012),默认权限,需要在012文件夹下创建文件001.txt,需要给777权限
切换到zt用户(不是文档所有者,也不是同组用户,属于其他者)
问题1:zt是否打开012/001.txt文件[能打开]
问题2:zt用户是否可以编辑012/001.txt[可以]
问题3:zt用户是否可以删除012/001.txt文件[不可以删除,同样不允许创建文件/文件夹,移动文件]
解析:虽然001.txt是可删除的,但是001.txt所在的文件夹0012的权限744,不可写,删除一个文件输入写文件操作,所以删除001.txt是不被允许
给012文件夹添加其它人可写权限
#chmod o+w 012
注意:在lunux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除。
三. 属组与属主设置
属主:所属的用户(文件的主人)
属组:所属的用户组
前面的root就是属主
后面的root就是属组
这两想信息在文档创建的时候会使用创建者的信息(用户名,用户所属主组名称)
如果说有时候去删除某个用户,则该用户对应的文档的属主和属组信息或需要去修改。
- Chown(重点)
作用:更改文档的所属用户
语法:#chown -R username 文档路径
选项:
-R: 递归
EG1:将/home/zt/012文件夹的所有者更给为zt
#chown -R zt /home/zt/012
- Chgrp(了解)
作用:更改文件/文档的所属用户组
语法:#chgrp -R groupname 文档的路径
EG1:将/home/zt/012文件夹的所属用户组改为zt
#chgrp –R zt /home/zt/012
思考:如何通过一个命令实现既可以修改所属的用户,也可以修改所属的用户组呢?
答案:可以,通过chown命令
语法:#chown –R username: groupname 文档路径
EG1:只使用chown命令,将/home/zt/012目录的所属用户和用户组该成root
#chown -R root:root /home/zt/012
四.扩展
问题:reboot,shutdown,init,halt,user管理等等,在普通用户上是无法进行操作的,但是有些特殊的情况下需要有执行权限。又不能让root用户把自己的密码告诉普通用户,这个问题该怎么做。
该问题是可以被解决的,可以使用sudo(switch user do)命令来进行权限设置,suso可以让管理员(root)事前定义某些特殊命令谁可以执行。
默认sudo中是没有除root之外用户的规则,要想使用则先配置sudo
Sudo配置文件:/etc/sudoers
- 配置sudo文件请使用”#visudo”命令(visudo和vim编辑模式是一样的)
- 配置普通用户的权限
Root表示用户名,如果是用户组,则可以写成”%用户组名”
ALL:表示允许登录的主机(地址白名单)
(ALL):表示以谁的身份执行,ALL表示root身份
ALL:表示当前用户可以执行的命令,可以使用多个命令,使用英文逗号”,”进行分割
注意:在写sudo规则的时候不建议写直接形式的命令,而是写命令的完整路径,路径可以使用which命令来查看
语法:#which 指令名称
在末行模式下输入:!which 命令行
将完整的路径复制添加到第三个all的位置处
EG1:用户zt添加用户,要求使用sudo配置,将其设置为可以添加用户,并且修改密码(但是不能修改root用户密码)
注解:表示允许zt用户创建任何用户,除了修改root的密码不被执行,其它修改密码的操作可以执行。禁止的操作一定要写在允许执行的命令的后面
EG2:给用户xu设置重启命令
补充:在普通用户下怎么查看自己具有哪些特殊权限呢?
#sudo –l
最后:sudo不是任何linux分支都有的命令,常见centos和ubantu都存在sudo命令