Linux权限管理
Linux的权限操作与用户、用户组是兄弟操作
一、权限概述
总述:Linux系统一般将文件可存/取访问的身份分为3个类别:owner、group、others,且3种身份 各有read、write、execute等权限
1、权限介绍
什么是权限:
在多用户(可以不同时)计算机系统的管理中,权限指某个特定的用户具有特定的系统资源使用权利,像是文件夹,特定系统指令的使用或存储量的限制。
在Linux中分别有读、写、执行权限:
读权限:
文件夹,影响用户是否能够列出目录结构
文件,影响用户是否可以查看文件内容
写权限:
文件夹:影响用户是否可以在文件夹下,创建/删除/复制到/移动到
文件:影响用户是否可以编辑文件
执行权限:
一般对于文件来说:(脚本文件)
2、身份介绍
Owner身份(文件所有者,默认文档创建者)
Group身份(与文件所有者同组的用户)
Others身份(其他人)
Root用户(超级用户)
3、Linux的权限介绍
要设置权限,就需要知道文件的一些基本属性和权限分配规则。在Linux中,ls命令常用查看文件的属性,用于显示文件的文件名和相关属性。
# ls –l 路径 ls –l 等价于 ll
Linux中存在用户、用户组和其他人概念,各自有不同权限,对于一个文档来说,其权限具体分配如下:
十位字符的表示含义:
第1位:表示文档类型,常见“d表示文件夹”、“-表示文件”、“l表示软链接”、“s表示套接字”
第2-4位:表示文档所有者的权限情况,第2位表示读权限,取值r、-,第3位表示写权限,取值w、-,第4位表示执行权限,取值x、-
第5-7位:表示与所有者同在一个组用户的权限情况,第5位表示读权限,取值r、-,第6位表示写权限,取值w、-,第7位表示执行权限,取值x、-
第8-10位:表示其他用户的权限情况,第8位表示读权限,取值r、-,第9位表示写权限,取值w、-,第10位表示执行权限,取值x、-
注意:位置不会变化
二、权限设置
语法:# chmod 选项 权限模式 文档
常用选项:
-R:递归设置权限(当文档类型为文件夹的时候)
权限模式:需要设置的权限信息
文档:可以是文件,也可以是文件夹,可以是相对路径,也可以是绝对路径
注意:如果给文件设置权限,操作者为root用户,或者是文档所有者
提权漏洞
1、字母形式
文件为绿色,拥有执行权限
2、数字形式
# chmod 777 a.txt
读:r 4
写:w 2
执行:x 1
没有权限:0
案例:给anaconda-ks.cfg设置权限,所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读
语法:#Chmod 754 anaconda-ks.cfg
3、注意事项
使用root创建一个文件夹,权限默认drwxr-xr-x
在文件夹下创建一个文件,给777权限
切换用户test(不是所有者,不是同组用户,是其他人)
能打开文件:能打开
能编辑文件:能编辑
能删除文件:权限不够,无法删除,不允许创建文件/文件夹,移动文件,重命名文件
在Linux中,如果删除一个文件,不是看文件有没有对应权限,而是看文件所在目录是否有写权限,如果有才可以删除。
三、属主与属组设置
属主:所属的用户(文件的主人)
属组:所属的用户组
前面为属主,后面为数组
这两项信息在文档创建的时候会使用创建者的信息(用户名、用户所属的主组名称)
删除某个用户时,该用户对应的文档的属主和属组信息就需要去修改。
1、chown
作用:更改文档的所属用户
语法:# chown –R username 文档路径
案例:将目录的用户名从root更改其他用户名
# chown text /oo
2、chgrp
作用:更改文档的所属的用户组
语法:# chgrp –R groupname 文档的路径
案例:将目录所属用户组从root改为其他组
# chgrp test oo/
如何通过一个命令同时更改用户名和用户组
命令:chown
语法:# chown –R username:groupname 文档路径
四、拓展
Reboot、shutdown、init、halt、user管理,普通用户无法处理
解决:sudo(switch user do)命令进行权限设置
默认sudo中没有除root之外用户的规则,要想使用则先设置sudo
Sudo配置文件:/etc/sudoers
- 配置sudo文件请使用“# visudo”,打开后,与vim使用一致
- 配置普通用户的权限
Root:表示用户名,如果是用户组,则可以写成“%组名”
ALL:表示允许登录的主机(地址白名单)
(ALL):表示以谁的身份执行,all表示root
ALL:表示当前用户可以执行的命令,多个命令可以使用“,”分割
案例:用普通用户添加用户,并且修改密码(不能改root密码)
注意:写sudo规则时,不建议直接写命令,而是写命令的完整路径,路径可以用which查看
语法:# which 指令名称
添加好对应规则后,使用:# sudo 命令
在普通用户下如何查看自己哪些权限:
# sudo –l
Sudo不是所有任何Linux分支都有的命令,常见centos与Ubuntu都存在