目录
本篇将围绕权限三问进行详细介绍,带你一睹Linux下权限的魅力。
1.什么是权限?
2.如何操作权限?
3.为什么要存在权限?
1.什么是权限?
1.1用户的划分
在介绍权限这个概念之前,我们首先需要对Linux下用户概念进行一定的了解。
在Linux 下有两种用户:超级用户( root )、普通用户。超级用户:可以在linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情超级用户的命令提示符是“#”,普通用户的命令提示符是“$”命令 : su [ 用户名 ]功能 :切换用户例如,要从 root 用户切换到普通用户 user ,则使用 su user 。 要从普通用户 user 切换到 root 用户则使用 su root( root 可以省略),此时系统会提示输入 root 用户的口令。演示:注意:我这里是将第二个用户起名为user,不是说su 后一定跟user
1.2权限的提升
既然Linux下有权限的划分,那当我们想保持自身身份但又想以较高权限执行时该怎么办呢?
我们可以使用sudo来进行短暂提权,当sudo在第一次使用过后,在10-15分钟之内(时间长短并不固定)将不用再输入密码。
但是有的小伙伴可能会存在某些疑问,为什么提权的时候要输入自己当前用户的密码?
这其实是对你身份的一种验证,确保你是系统信任的用户,否则将会拒绝你的请求。所以在使用sudo的前提是,你已被添加进入/etc/sudoers中。
1.3权限的定义
权限:一件事情是否允许被谁做
权限有两个关键词------谁与做,对于谁:权限是约束人的(一个或者某些群体);对于做:目标对象有没有对应的属性或义务(如在电影网站做oj题)
1.4Linux下的权限----文件权限
在Linux下,我们更多所谈到的权限是文件权限。
那么什么是文件权限?
文件权限=人(角色)+ 属性(读,写,执行)
人的三种身份:拥有者(owner)所属组(grouper)其他人(other)
属性的三种类型:读操作(r)写操作(w)执行操作(x)
1.5查看文件权限
对文件采用ll指令
第一个root是拥有者,root是拥有者的姓名
第二个root是所属组,root是所属组的名字
左边十个字符:
(1) - 代表文件类型
(2-4) rw- 代表拥有者权限
(5-7) r-- 代表所属组权限
(8-10) r-- 代表其他人权限
!!!Linux区分文件类型与后缀没有关系!!!
!!!gcc等编译工具可能对后缀有要求!! !
通过ll显示的众多属性列中的第一列的第一个字符区分文件类型
Linux文件类型:
-:普通文件(源代码,库文件,可执行程序,文档压缩包等)
d:目录文件
c:字符设备文件(键盘,显示屏等)
b:块设备
l:链接文件(快捷方式)
p:管道文件
s:socket文件
以拥有者权限(三三为一组)为例:
rwx分别代表读写执行权限,有相应权限则为对应字符,无则以-来代替。
2.如何操作权限?
2.1设置文件属性----chmod
语法:chmod ugo +- rwx方案
chmod a+- rwx方案(对所有角色进行相同操作)
演示:
操作权限:root或文件拥有者
如果某种文件权限对于拥有者不放开,但对于所属组放开,而你作为拥有者且属于所属组能不能访问?
答案是不可以,只有当你不符合拥有者条件时才会去匹配你是否属于所属组。
2.2 设置文件所属角色----chown
语法:chown 用户 文件
演示:
注意:chown 用户 : 所属组 文件 可以一并更改所属组
2.3设置文件所属组---chgrp
语法: chgrp 所属组 文件
演示:
2.4以八进制修改文件属性
rwx 有是1,无是0 故rwx对应111 八进制为7
故rwxrwxrwx对应777
演示:
3.为什么要存在权限?
便于系统进行安全管理
这里穿插一个小指令----file 查看文件类型
4.大厂面试题---umask
1.为什么我们创建的目录或者普通文件,默认权限是我们所看到的样子?
Linux下规定:
目录文件起始权限为777
普通文件起始权限为666
在起始权限之外,还有一个umask-----权限掩码
在这四个数字中,只关注后三位,第一位0可以认为其代表8进制
系统会默认配置好umask
权限掩码:凡是在umask中出现的权限,必须在起始权限中去掉
-------------------- 最终权限=起始权限&(~umask) ------------------
例如:
test.txt 起始权限 666 即110-110-110
umask 022 即 000-010-010
~umask 111-101-101
test.txt&(~umask) 110-100-100 644 即rw-r--r--
但是我们可以有更简单的记忆方法:
那就是回归权限掩码本身(凡是在umask中出现的权限,必须在起始权限中去掉),那么对于原本是0的不用更改,原本是1的,如果对应是1则置为0.
更通俗的来说就是:对起始权限中1做按位异或,对0做按位与
2.如果我们进入一个目录,需要什么权限?
对于目录来说:
r权限:不能进行ls ll等读操作
w权限:不能进行touch mkdir等写操作
x权限:不能进行cd等执行操作
因此,目录默认权限777,一般都要包含上述操作
文件默认权限666,因为大部分文件不能执行,你需要自己加上即可。