1.Linux权限的概念
超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情,受到某些权限的限制。 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令 :su 【用户名】 作用:切换用户 su - 从普通用户切换到超级用户。
指令: exit,logout:退出当前用户。
2.Linux权限管理
1. 文件访问者的分类
文件的权限主要是用来限制普通的用户,超级用户root基本不受限制。 文件中有两种权限: 1.相对文件来说,可以分为3种用户:
- 文件拥有者 ( owner 缩写u)
- 文件的所在组(group 属组,缩写g)
- 其他人(既不是文件的所有者也不是文件的所在组) (other 其他,缩写o)
文件可以分别对这3种用户设置权限。 注意:目录也属于文件中的一种。
为什么要有所属组的存在? 例如:此时你们都组A和组B在同一家公司,用的是同一台服务器,假如你有一个文件file.c,此时文件的拥有者就是你,王五和李四就和属于文件的所在组,而张三就是其他人other。所以这时候你可以设置这个文件的权限,让组内的人可以读取这个文件的内容,让其他人不能读取这个文件的内容,此时张三就不能读取这个文件的内容。 如果你有一个文件,你只为了某些人只能看这个文件的内容,而不想让其它人看这个文件的内容,你可以把能看这个文件的内容拉进你的所属组,然后设置权限,让所属组可以看文件的内容,让其它人不能看这个文件。所以所属组的存在是为了更灵活的进行权限的配置,满足团队的协作。
2.文件的类型和访问的权限:
由指令ll可以查看文件的属性,那么这些文件属性代表的是什么。 上面的红方框代表的是文件所有者,绿方框代表的是文件所在组
我们看红色方框中符号,我们可以看到每个文件中都有10个符号,那么这10个符号代表的是什么意思。 我们以dir3文件为例子:
第1位代表的文件的类型有:
- d:目录
- -:普通文件
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
文件字符代表权限的含义:
- r:代表读,对于文件来说,具有查看文件内容的权限,对于目录来说,具有查看该目录下的文件权限。
- w:代表写,对于文件来说,具有在文件中写内容的权限,对于目录来说,具有在目录底下创建文件或目录的权限。
- x:代表可执行,对于文件来说,具有执行文件的权限,对于目录来说,具有进入目录的权限。
后9个符号代表的权限,2-4位字符是文件所有者的权限,5-7位字符是文件所在组的权限,8-10位字符是其他人的权限。 这三种用户里的权限都有3个字符: 3个字符种的第一个字符的位置代表该用户是否有读的权限:如果有则为 r,没有为 -;
第二个字符的位置代表该用户是否有写的权限:如果有为w,没有为 -;
第三个字符的位置代表该用户是否有可执行的权限:如果有为x,没有为 -; 我们知道这些以后,那么dir3文件是什么类型的文件和它对三种用户都有什么权限? 答:dir3是目录,对于文件拥有者和文件的所属组都是可读可写可执行,对于其他人是可读可执行 当不能写,文件的拥有者和所属组都为sjp。
看完权限后,我们在来看下面的属性:
上面绿色框代表的是:该文件被硬链接的次数。 上面绿色框代表的是:文件内容最近一次被修改的时间 上面红色框代表的是:文件名。
设置权限
语法:
- chmod 用户+权限 文件名 给文件指定的用户加上指定的权限
- chmod 用户-权限 文件名 删去文件指定的用户加上指定的权限
- 用户:u(文件拥有者),g(文件所属组), o(其它人 )
例子:
- chmod u-r test.1 : 删去test.1拥有者的读权限
- chmod g+ rwx test.1: 给test.1的所属组加上读,写,可执行的权限
- chmod -rwx test.1: 删去拥有者,所属组,其它人的读,写,可执行的权限
- chmod +rw test.c1: 给test.1的拥有者,所属组,其它人 加上读,写权限
用数字来进行权限: 我们用户权限三个字符提取出来看,用二进制的0或1来来代表这三个字符权限的有无,如果该用户有该权限就表示为1,没有就表示为0,例如: 然后由二进位转换为八进制位: rwx的八进制位就是7,- w -的八进制位就是 2,也就是说 你想要给test.1文件所有用户设置读写可执行权限,直接 chmod 777 test.1 即可。 例子
- chmod 666 test.1: 给test.1文件中的所有用户设置读写的权限。
- chmod 000 test.1: 删去拥有者,所属组,其它人的读,写,可执行的权限
- chmod 600 test.1: 仅给拥有者设置可读可写的权限
以上是两种给文件设置权限的方法,不管用哪种方法都是一样的。
3.文件的默认权限
对于我们刚创建的文件,文件中对三种用户都有固定的权限。这个固定的权限位默认的权限 umask: 查看umask值 比如: 0002 第一位0是文件的特殊权限 后三位002是umask值
默认权限的计算
- 系统默认不能建立可执行权限的文件,需要手工赋予
- 所以文件默认的最大的权限为 666 (目录的默认权限为 777)
- 默认权限=默认最大权限-umask值(默认的权限需要换算成字母进行相减)
- 666换算成字母为 rw- rw- rw- ,002换算成字母为 — --- -w- ,相减为 rw- rw- r–,所以默认权限为rw- rw- —
- 777 换算成换算成字母为 rwx rwx rwx ,002换算成字母为 — --- -w- ,相减为 rwx rwx r-x ,所以目录的默认的权限的为rwx rwx r-x
如果我们想修改文件或目录的默认权限,我们可以怎么做? umask 0001 :将umask的值修改为0001,这样我们就可以间接的修改默认在的权限。 0001 转换为字母为 — --- --x 通过计算,文件默认的权限为 rw- rw- rw-,目录的默认的权限为 rwx rwx rw-.
chown
功能:修改文件的拥有者 格式:chown 用户名 文件名 当然,我们修改文件的拥有者还需要经过对方的同意,才能成功修改文件的拥有者 或者超级用户可以直接修改文件的拥有者,或者普通用户短暂提升超级用户的权限也可以直接修改文件的拥有者,不需要对方的同意。 例如: 将dir2目录的拥有者由root改为sjp。
sudo +指令:短暂使用root权限。 使用sudo指令需要进行设置,下面会讲
chgrp
功能:修改文件的所属组 格式:chgrp 【选项】 用户组名 文件 常用选项:-R 递归修改文件的所属组 当然,我们修改文件的所属组还需要经过对方的同意,才能成功修改文件的所属组 或者超级用户可以直接修改文件的所属组,或者普通用户短暂提升超级用户的权限也可以直接修改文件的所属组,不需要对方的同意。 例如: 将test.c文件的所属组由root改为sjp。
4.Linux 授予普通用户root权限方法
直接进入**/etc/sudoers** 文件,然后找到99行,只有root或者授予普通用户root权限才能进入这个文件。 怎样显示行号?我们进去按shift+;进入底行模式,然后在底行输入 set nu 即可
然后把你想要拥有root权限的用户在添加一行即可。例如我的普通用户是sjp,那么我们直接在root下面添加一行即可。 按Esc退出底行模式,在按i进入文本编辑模式,即可修改文本。
最后在按Esc退出文本编辑模式,按shift+;进入底行模式。然后输入wq!,保存文本并退出就行。这时候该普通用户才能用sudo指令。
5.粘滞位
可执行权限:如果目录没有可执行权限,则无法进入目录。 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
假设有两个小组,组A和组B,他们需要共同完成一个项目,所以项目管理者就创建一个目录,让两个组的成员的能够在这个目录下创建文件并写代码,项目管理者给这个目录设置其他人可读可写可执行的权限。此时张三和李四是分别是组A和组B的成员,他们两个都在这个目录下创建了各属于自己的文件并写代码。有一天,李四看到暗恋已久的如花跟张三一起出去吃饭,并且有说有笑,李四心里很不好受,李四很一直很嫉妒张三,因为张三又高又帅,而且能力又强,领导更是对张三赞不绝口,此时看到女神跟张三一起出去吃饭。李四忍无可忍,便把该目录张三的所有文件给删除掉了。因为该目录设置其他人的权限是可写的,所以李四可以在该目录下删除张三的文件。张三写了30多天的代码就这样被李四给毁掉了,此时我们应该避免张三的文件被李四给毁掉呢,如果说我们只要对给其他人的可写的权限给去掉就可以,那么小组就不能在该目录下创建文件了,粘滞位就可以很好解决同一个目录下文件被别人删的情况
设置粘滞位之后,允许用户在目录中任意的写入、删除文件,但是禁止删除其他人的文件。
- chmod +t test 给test设置粘滞位,使用ls命令查看其属性时,其他用户权限处的“x”将变为“t”
- 注意粘滞位只能修饰目录 ,文件不能设置粘滞位
- 目录设置粘滞位后,可以删除目录下的文件的用户:
- a.超级用户root
- b. 文件的所有者
- c. 目录的所有者
设置粘滞位后的目录,则李四就不能删除张三的文件,这样就阻止了李四犯傻事。
点个赞呗~ 谢谢大佬们!!!
完!
|