1.权限下两种用户
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
指令su用来切换用户
1.从普通用户user切换到root用户使用 su root(root可以省略)
注意此时虽然用户切换了但家目录还是原用户的家目录,相当于在原家目录下换了一个用户。
1.2从普通用户user切换到root可以使用su -指令,相当于重新登录,家目录发生变化
2.可以使用exit或Ctrl+d来返回原用户
2.2也可使用su user直接返回普通用户,家目录不变
总结:
普通用户切换到其他用户(包括root)需要输入目标用户的密码,而root用户切换到其它用户直接切换不需要密码
当我们执行某条指令时需要提升权限怎么办?用指令 sudo command
看出我们目前用adduser新建的用户,没办法执行sudo,因为系统不信任,除非将普通用户添加到系统信任的白名单里面。
现阶段若想提升权限,还是先老实切换用户
1.2什么是权限
权限就是一件事是否允许被你做
1.权限认证的是身份(和人有关)
人(具体用户)包括:root,普通用户
权限身份 包括:拥有者,所属组,其他人为什么需要所属组?
因为需要组内协同的同时,不给其他人权限
人和权限身份的关系不是割裂冲突的,而是需要相结合的,权限身份需要一定的人来承担
2,权限也和事物的属性有关
从文件的属性出发包括
r(read):读取权限,允许用户读取文件内容或列出目录中的文件。
w(write):写入权限,允许用户修改文件内容或向目录中添加/删除文件。
x(execute):执行权限,允许用户执行文件(对于目录,表示可以进入该目录)。
-:对应的权限位置,没有权限
2.文件类型和访问权限(事物属性)
文件类型:
-:普通文件:文本,可执行程序,库基本属于普通文件
d:目录文件
b:块设备文件:磁盘文件
c:字符设备文件:键盘,显示器文件
p:管道文件:用来进行通信的
注意:Linux系统中文件名后缀没有直接意义(不代表不适用后缀),在Linux系统上运行的其他软件可能需要后缀如编译器gcc
通过ls-l查看文件详细信息,可得文件对应部分的属性
1.可以发现权限身份信息中没有其他人的信息,因为用户在访问文件前需要登录,访问时比对权限身份若既不是拥有者也不是所属组,那么就是其他人。其他人的信息太多所以没必要列举,另外root不受权限约束
2.绿色事物属性的权限部分,人的权限身份和事物的属性结合起来了,每个位置是什么含义都是确定的,第一个为读,第二个为写,第三个为可执行,每个位置只有是或否具有该权限
3.权限的设置修改
3.1chmod
使用chmod指令,全称是change mode,可对文件和目录的权限进行修改
格式:chmod [参数] 权限 文件名
-R:递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
u(user):文件或目录的所有者。
g(group):文件或目录所属组的成员。
o(others):其他用户。
a(all):所有用户
可用符号来修改:
+:添加权限。
-:移除权限。
=:设置权限(覆盖现有权限)。
注意:只有文件拥有者和root才可以改变文件的权限
将上述的参数和权限名组合起来使用指令
对单个权限身份的属性进行添加
对单个权限身份的属性进行移除
对多个权限身份的属性进行添加
三个权限身份间要用,相隔,也等价于a+rwx
同理只要把+变成-可以实现单个或多个权限身份的属性移除,同时属性±的数量也可以自己控制
3.1.2二进制与八进制的表示
由于每一个属性只存在具有或没有权限的两种状态,所以可以用二进制来表示每一属性的状态,有三个属性,三位刚好可以用8进制来表示三个属性各种状态的组合
例如全部移除
全部添加
3.2chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
作为普通用户没权限直接修改文件
需要root权限,或普通用户使用sudo提升权限执行该指令
注意:修改文件拥有者后,自己的身份权限变成所属组
3.3chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
同理可得相同操作,可在更改拥有者后更该所属组,完成后自己的身份权限变成其他人。普通用户没权限更改,需要sudo提权或使用root超级用户
可以使用chown 拥有者:所属组 文件或目录,一次性更改人的权限信息
chgrp不能进行该操作
3.4权限冲突问题
进行身份认证的时候,只能选择一个角色进行认证
文件拥有者和所属组都是ywb,所以从前往后就只认证ywb为拥有者,不再往后认证
3.5起始权限问题
知识储备:默认普通文件的起始权限是666,二进制为110 110 110;
目录是777,二进制为111 111 111
我们创建时所看到的:
普通文件是664,二进制为110 110 100
目录文件是775,二进制为111 111 101
最终权限与起始权限不同中间肯定发生了某种转化,了解权限掩码
3.5.1umask权限掩码
凡是在umask中出现的权限,不会在最终的文件权限中出现。
普通用户默认的umask为0002,第一位代表八进制数不计入计算
超级用户默认掩码值为0022
最终权限=起始权限&(~umask),还可以通过umask 0xxx来设置掩码
权限掩码的应用:重要!!!
当我们想或不想让创建的文件或目录具有某种权限,那么就更改对应的权限掩码,应为最终权限需要经过与运算所以会遵循上述所说在umask出现过的权限不会在最终文件中出现。
3.5.2file指令
功能说明:辨识文件类型。
语法:file [选项] 文件或目录…
常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容
4.目录的权限
r:读权限并不会影响我们进入目录,但限制我们查看目录下文件列表
w:是否允许我们在当前目录下进行创建、更改、删除
x:如果目录没有可执行权限, 则无法cd到目录中.
普通用户自己的家目录权限是700,在各自家目录创建的文件,别人都看不见
但是有时多个用户间需要文件数据的共享,所以这就要求所建立的共享文件,不能在任何一个人的家目录下可以在根目录下创建共享目录,作为共享用户的我们身份权限都为其他人,只需通过根目录进行其他人权限的添加即可。
这里会有一个问题?
通过测试,发现属于自己的文件在共享文件中可以被其他人删除,这说明一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定。
可以通过修改目录其他用户的写权限来禁止删除他人文件操作,但同时也禁止了在该目录下创建文件,失去了共享目录的意义。
需要我们引入一个新的权限位—粘滞位
在根目录下创建共享目录需要root用户,其他用户没有读写权限
注意:
目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(易错,认为有读权限就可以进入目录读取目录下的文件)
4.1粘滞位
t就是粘滞位,添加之后原来的x变为t,t是一种特殊的可执行权限,允许用户新建文件,但禁止互删
粘滞位意义:
一般给共享目录设置,大家可以在共享目录中进行各自文件的增删查改,只允许文件拥有者或root能删这个文件,其他人不允许,t是一种特殊的x权限
我们不一定需要自己在根目录下创建共享目录,系统中自带了一个共享目录tmp,唯一一个有粘滞位的目录并且所有权限打开,可以将临时文件存入其中