一.Linux的两种用户
1.root:超级用户,在linux下有最高权限,可以做任何事情
2.普通用户(Ubuntu/CentOs):在linux做有限的事情,受管控
补充:在Windows下:管理员(admin)or 普通用户
身份的切换的命令
1.语法
su[用户名]
2.功能
切换用户(Ubuntu)
要从root 用户切换到普通用户 user,则使用 su user;
要从普通用户 user 切换到 root用户则使用 sudo -i,此时系统会提示输入 root 用户的口令。
切换用户。(CentOs)
要从 root 用户切换到普通用户 user,则使用 su user;
要从普通用户 user 切换到 root 用户则使用 su root(root 可以省略),此时系统会提示输入 root 用户的口令。
3.举例
Ubuntu系列:
1.root切换成(临时用户,额外用户,自定义用户):su - 用户名
2.普通管理用户(Ubuntu)切换成超级用户:sudo -i
2.退回成上一级用户:ctrl+d/exit
4.【拓展一】
root具有最高权限,但是不想切换成root可以选用sudo+命令的方式暂时获得10~15min的权限提升。
语法.
sudo [命令]
【拓展二】
遇到下面这种情况就是重新切换成root用户,执行该指令,再切换回普通用户
二.Linux权限管理
权限本质:能或者不能做某事
权限出现的原因:控制用户行为,防止错误的发生
文件权限 = 角色+目标属性
- 文件受人的影响(人准确来说是一个角色)
- 文件还受本身的影响(目标属性)
- 三种人:拥有者,所属组,拥有者
- 文件的权限:r(read读权限) w(write写权限) x(execute可执行权限)
1.⽂件访问者的分类(⼈)
- ⽂件和⽂件⽬录的所有者:u---User(中国平⺠ 法律问题)
- ⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g---Group(不多说)
- 其它⽤⼾:o---Others (外国⼈)
2.文件内类和访问权限(事物属性)
- (1)文件类型
- windows默认用后缀来判断文件的类型,但是linux区分文件一般通过属性列的第一字符
备注:d表示目录,-表示普通文件,而且有些软件也官心后缀,例如gcc
- d:⽂件夹
- -:普通⽂件
- l:软链接(类似Windows的快捷⽅式)
- b:块设备⽂件(例如硬盘、光驱等)
- p:管道⽂件
- c:字符设备⽂件(例如屏幕等串⼝设备)
- s:套接⼝⽂件
(2)文件的基本权限
属性列第一个字符后面有九个字符3个为一组,表示属性
- 读(r/-):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息的权限
- 写(w/-):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内⽂件的权限
- 执⾏(x/-):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权限
- “—”表⽰不具有该项权限
Group的作用是啥?
保证项目安全的前提,同时也方便组内协同
公司里有一台服务器,有两个项目技术组,A 组和 B 组,老板让两个组同时开发一个项目,比一比谁做的更好。虽然都是公司的员工,但并不想另外一组看到我们的项目文件,该怎么办呢?
假如 A 组中的张三创建了该项目文件,张三是该项目的所属用户 Owner,可读可写;A 组的其它组员则是所属用户组 Group,设置成可读可写;B 组的人都是 Other,设置成不可读不可写,这样他们就什么都看不到;我们对这三类访问者进行了项目文件的访问权限控制。在保证项目安全的前提下,方便组内协同。
3.文件权限值的表示方法
也就是对文件,进行可读可写,是否可执行。这个就类似二进制中0/1,1表示可以,0表示不可以
- 字符表⽰⽅法
- 8进制数值表⽰⽅法
4.文件访问权限的相关设置方法
1.chmod
(1)功能:
设置⽂件的访问权限
(2)格式:
chmod [参数] [权限] [⽂件名]
(3)常⽤选项:
-R 递归修改⽬录⽂件的权限,说白了就是对文件夹中的所有内容有同样的规则说明:只有⽂件的拥有者和root才可以改变⽂件的权限
(4)chmod命令权限值的格式:
⽤⼾表⽰符+/-=权限字符
+:向权限范围增加权限代号所表⽰的权限-:向权限范围取消权限代号所表⽰的权限=:向权限范围赋予权限代号所表⽰的权限⽤⼾符号:u:拥有者g:拥有者同组⽤o:其它⽤⼾a:所有⽤⼾
(5)选项举例:
1.增加取消权限
备注:这里面使用CentOs内核系统,ubuntu同样也可以,操作方式一样,输入内容一样,当时我的ubnutu东西多,看起来不太方便吧,所以选用CentOs了。
取消test.c文件拥有者的可读(r)权限
取消文件所属组(g)可读(r)可执行(x)权限
取消其他用户(o)rwx可读,可写,可执行权限
对test.c文件给拥有着提供可读权限,给所属组提供可读可写权限,给其他人提供可读可写可执行权限
2.重新赋予权限
3.没有权限时,提升权限
使用sudo提升用户的权限到达root水平,因为权限永远约束普通用户,对root没有约束
4.基于三位八进制数来修改权限
7的二进制是111,表示 rwx,可读可写可执行,一次性设置三类用户的文件访问权限:
660->110 110 000表示只有可读写权限,对于拥有者和所属组
2.chown(change owner)
(1)功能:
修改⽂件的拥有者
(2)格式:
chown [参数] ⽤⼾名 ⽂件名(chown [参数] [用户] : [用户] [文件名])
":"用来分隔用户组和用户组
(3)举例:
把 test.c 文件的拥有者改为 root,提示说不允许操作。就相当于你把这个东西(test.c)给别人,肯定是需要征得别人同意的。
增加权限:
结果演示:
3.chgrp
(1)功能:
修改⽂件或⽬录的所属组
(2)格式:
chgrp [参数] ⽤⼾组名 ⽂件名
(3)常⽤选项:
-R递归修改⽂件或⽬录的所属组
(4)举例:
修改文件的所属组为 root,提示说不允许操作,就要使用chown
使用sudo暂时提升一下我们的权限,来修改文件的所属组:
修改结果:
【拓展1.】
如何一次性把拥有者和所属者都进行修改
【拓展2】
Linux 中的默认权限由什么决定
对于一般普通文件,新建文件的默认权限为666(rw- rw- rw-)
对于一般目录文件,新建目录的默认权限为777(rwx rwx rwx)
实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask 的影响。所以我们在 Linux 中看到的实际创建出来的文件权限是这样的:
最终权限 = 起始权限&(~usmak)
原因:权限掩码的出现
【权限掩码】
权限掩码是由 3 个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时最终的权限。
4.umask
(1)功能:
查看或修改⽂件掩码新建⽂件夹默认权限=0666新建⽬录默认权限=0777
(2)格式:
umask 权限值
(3)说明:
将现有的存取权限减去权限掩码后,即可产⽣建⽴⽂件时最终权限。超级⽤⼾默认权限掩码值为 0022,普通⽤⼾默认为0002。
(1)使用指令 "umask" 查看当前权限掩码,我们只关注后3 个八进制数字
凡是希望在 umask 中出现的权限,都应该减掉,不应该在文件的最终权限中出现。
【最终权限计算方法一】
建立文件时最终权限 = 默认权限 & (~umask)
【最终权限计算方法二】
建立文件时最终的权限 = 默认权限 - 权限掩码
(2)我们通过指令 "umask" 可用来设置建立文件时预设的权限掩码
5.file 指令
(1)功能说明:
辨识⽂件类型
(2)语法:
file [选项] ⽂件或⽬录
(3)常⽤选项:
-c:详细显⽰指令执⾏过程,便于排错或分析程序执⾏的情形。-z:尝试去解读压缩⽂件的内容
使⽤ sudo 分配权限
(1)修改 /etc/sudoers权限 :防止普通用户失误修改sudo配置文件,保证系统安全(默认就740)
接受权限的用户 登陆的主机 = (执行命令的用户) 命令
(2)使用 sudo 调用授权的命令
sudo –u [用户名] [命令]
作用:以指定的非root用户身份执行指令(实际上就是root的身份,因为临时加的权限)
五.目录的权限
可执⾏权限:(x)如果⽬录没有可执⾏权限, 则⽆法cd到⽬录中.可读权限:(r)如果⽬录没有可读权限, 则⽆法⽤ls等命令查看⽬录中的⽂件内容.可写权限:(w)如果⽬录没有可写权限, 则⽆法在⽬录中创建⽂件, 也⽆法在⽬录中删除⽂件.
(2)在 dir 目录中创建一些文件,并去掉其它用户的所有权限:
(3)那当我作为其它用户,有 dir目录的写权限,来对目录里 root 的文件执行 rm 指令:
我发现我可以删除root的文件哈,但之前dir文件的写权限被删除了,为什么,我还可以删?
如何解决呢,就引入了粘滞位的概念
再去删除目录中 root 的文件,提示无法删除,操作不被允许
当⼀个⽬录被设置为"粘滞位"(⽤chmod +t),则该⽬录下的⽂件只能由1.超级管理员删除2.该⽬录的所有者删除3.该⽂件的所有者删除
如果不为目录设置粘滞位,任何具有该目录写和执权限的用户都可以删除和移动其中的文件。
实际应用中,粘滞位一般用于 /tmp 目录(该目录通常保存系统中各用户产生的临时文件),以防止普通用户删除或移动其他用户的文件。
-d 只显示目录本身的信息,不显示目录里面的文件
备注:ubuntu默认没有ll,需要手动配置,但是CentOs7/8 root, 普通用户默认自带,需要用alias进行别名它实际上就是ls -l.
三.权限总结
- ⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。
- 如果⽬录没有 -x 权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法 cd 进⼊⽬, 即使⽬录仍然有 -r 读 权限(这个地⽅很容易犯错,认为有读权限就可以进⼊⽬录读取⽬录下的⽂件)
- ⽽如果⽬录具有 -x 权限,但没有 -r 权限,则⽤⼾可以执⾏命令,可以 cd 进⼊⽬录。
- 但由于没有 ⽬录的读权限 所以在⽬录下,即使可以执⾏ ls 命令,但仍然没有权限读出⽬录下的⽂档。