权限管理
1、权限介绍
权限有三种
读权限:对于文件,影响用户是否可以看到文件的内容;对于文件夹来说,影响用户是否可以看的见目录的结构。
写权限:对于文件来说,影响用户是否可以修改文件内容(对文件内容进行编辑);对于文件夹来说,影响到用户是否可以变化文件夹的目录结构(增、删、改、创建文件)
执行权限:对于文件来说(特别是脚本文件),影响文件是否可以运行。对于文件夹来说,影响用户是否可以在文件夹内执行命令。
2、身份介绍
owner身份(文件夹 or 文件的所有者,默认是文档的创建者)
一个工作者创建的文件,除了这个工作者自己(owner)之外没人能对这个文件进行访问和操作。
group身份 (和文件所有者同组的用户)
工作者A和工作者B被分到了相同的组,如果A对自己的文件设置了组的权限,那么B也可以访问和他同组的A的文件。
others身份(其他人、相对于所有者和同组的用户)
如果A创建的文件设置了其他人的权限,不仅自己(owner)、同组的人(group),
其他人(others)也可以看的见这个文件。
3、Linux权限查看
语法:# ls -l 文件夹名/文件名
执行结果:
前面的这一堆全都是十个字符,关于十个字符
解释如下:
1位: 文件的类型, 之前介绍过【d : 文件夹 - : 普通文件 l :软连接 s:套接字文件
c:字符设备 b:块状设备】
2-4位 :owner权限
5-7位 :group权限
8-10位 :others权限
三位的取值情况:
第一位:读权限 取值 r/-
第二位:写权限 取值 w/-
第三位:执行权限 取值 x/-
比如说:rw-就是有读权限、有写权限、没有执行权限
4、权限设置
语法:# chmod 选项 权限模式 文档路径
注意事项:-R 递归设置权限,当设置文件夹权限的时候同时把当中的文件权限统一, 使用递归进行设置。
给谁设置???
选项:
(谁)u g o a 【user group owner all】
(作用)+ - = 【增加权限 减少权限 确定权限】
(权限)r w x 【read write execute】
演示:
例如我现在的文件夹是这样的:
桌面上有test文件夹,test当中有2020test1.txt和passwd文件。还有一个testdir文件夹。现在要给文件夹 testdir 设置所有者全部权限,同组用户读写权限, 其他人只读权限
因为现在的testdir对group身份是rx,所以需要加上w, 对others的身份是rx,所以需要减少x执行权限。所以执行命令: # chmod g+w, o-r test/testdir
如果两部分执行权限相同的时候可以进行合并。# chmod ugo+rwx
5、权限设置(数字形式)
权限代表的数字:
读权限-4、写权限-2、执行权限-1
权限的组成符合最短路径原则:
1——不读、不写、可执行 没用
2——不读、可写、不执行 没用
3——不读、可写、可执行 没用
4——可读、不写、不执行
5——可读、不写、可执行
6——可读、可写、不执行
7——可读、可写、可执行
标注没用的是因为文件或者文件夹连读权限都没有, 更别提写和执行了
演示:
(1)设置test/passwd文件的权限是 所有着全部权限、同组用户可读可写、其他人只读权限 # chmod 764 test/passwd:
扩展:
创建文档的权限只有一个默认值,文件夹的权限是755、文件的权限是644
之所以是这样,是因为掩码(usmask)的值的影响,默认值是022
计算方式:
文件:666 - 022 = 644
文件夹:777 - 022 = 755
6、属主和属组
还记得之前的目录当中有这两列数据吗??
第一列数据就是属主, 第二列的数据是属组。
属主的意思是它属于什么用户, 属组的意思是它属于哪个用户组。
之所以需要这两列,原因是在删除用户之后,他名下的那些文件和文件夹需要有人接手。交接的时候修改这两列即可。
6.1 chown 更改文档所属用户 【change owner】
语法:# chown 【-R】 新的username 文档路径
把java目录的所有者设置为 miss.virgo
演示:
注意的点:这个操作只能是文件所有者或者是root用户执行,其他的用户不能执行,因为这个文件不能强制被别人夺去。出于安全考虑。
6.2 chgrp 更改所属用户组 【change group】
语法:# chgrp 【-R】 新的groupname 文档路径。
这个命令没什么大用处,因为chown也可以达到相同的效果。
命令:# chown 【-R】username:groupname 文档路径
7、sudo 指令
有些指令是root特有的指令,比如说关机、重启等操作,假如说用户想执行这些操作,但是还不知道root的密码。
这就需要root用户进行授权,root可以先进行配置。指定什么指令哪些用户可以执行。
sudo配置文件:/etc/sudoers 这个文件默认是只读,任何用户不能对其进行修改。
进行配置的步骤:
(1)配置sudo文件使用 “visudo“,打开之后和vim相同,此时我们编辑的是.tmp文件, 保存之后会替换掉原来的sudoers文件。
(2)配置普通用户权限:大概切换到98行,会看到如下这样的字样:
翻译过来就是:允许root用户执行什么命令在什么地方
sudo指令规则:
用户名 允许操作的主机 =(以什么身份运行,all表示root) 允许执行的指令
注意:写sudo规则的时候不建议写直接形式的指令,而是写指令的完整路径
那么如何查找完整路径呢??
使用命令:#which 命令名称
那么最后就修改成这个样子:
wq保存,ALL代表root。
验证一下:
还是不对?为什么?原来还需要加一些东西,也就是这样:
查看一下家目录:
第一次切换到miss.virgo的时候需要输入用户的密码,Linux默认在五分钟之内不需要密码(前提是不修改sudo规则的情况下保持五分钟)
查看root都给用户提供了执行什么命令的权限:sudo -l :
回到目录:Linux基础14篇