用户的分类
root: 超级用户(基本不受权限的限制)
普通用户:我们新建的用户
如果我们想暂时的对一条指令进行提权:sudo command
权限的概念(linux)
大白话就是一件事是否允许被你做,但是这里有一个疑问,比如现在有个祁厅长,我有进入厅长办公室的权限,但是我这个权限是因为他有厅长这个身份还是因为他姓祁,当然是身份。
结论1:是否具有权限要看身份
对于不同的文件或者说是不同的东西,都有这不同的属性,根据这些不同的属性也确定了,该文件是否能够被操作(权限),打个比喻:我们不能拿只读文件去写入数据吧。
结论2:权限与事物的属性有关。
文件属性
在输入指令ll后,会显示出该目录中的文件和文件属性,而这里文件属性也对应我们对该文件的操作权限。
在一个空格前的那些字符中,第一个字符用于表示该文件是一个什么样的文件,第二个直到第一个空格的9个字符三个为一组用于表示用户不同身份时操作该文件的不同权限, 分别是拥有者、所属组(所属组就相当于工作小组,这里的的第二段的rw-就是这个小组操作这个文件时的对应权限)和其他用户。而这个的rw-分别代表:
这里就表明了一个论点:在linux中我们通过文件的属性来区分类型,而不是文件的后缀操作系统区分文件类型不看文件后缀。但是对于linux中某些软件他是会看文件名后缀,比如:gcc只会编译.c文件
文件权限的修改
chmod指令
用法:
chomd u(表示文件拥有者)/g(文件所属组)/o(其他用户)/a(所有用户) -/+(+为增加权限,-为减少权限) -/+ 权限 文件名
这里值得注意的是表示权限的位置是确定的。例如:第一个位置是r 或者是 - 第二个是w,第三个是x,都是有或无的关系,在计算机中表示这样的关系通常都是用 0 和 1 来表示,这就是表示了这里rwx可以用111~000表达,所以这里的9个字母对应的二进制是000 000 000 ~ 111 111 111,一般只能使用8进制表达这九位000 ~ 777
示例:
这里可以看到我把这个文件的权限改成了000 就是所有人都无法操作这个文件(除了root)
测试:
但是root可以,因为root几乎不用受到权限的限制
可以看到我用root用户清空b文件并且写入了hello并且输入
chown指令
作用:更改文件的拥有者
使用:chown 用户 文件
chgrp指令
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
问题1:当拥有者和所属组为同一个用户时,但是权限不一致会怎么样?
在这里可以看到 cmd.txt文件的拥有者和所属组都是Jaxsen,在更改拥有者权限之后,Jaxsen就不能读写了,是因为在进行权限认证的时候,只能选择一个身份去认证。
问题2:默认权限是怎么产生的?
在我们新建一个目录或者文件的时候,初始权限为什么会是这样子的,是怎么导致的?
其实,默认给普通文件的起始权限是666,默认给目录文件的起始权限是777,就是普通文件是rw-rw-rw-,目录文件是rwxrwxrwx,但是这里显示出来的是664和775是因为有权限掩码的存在
权限掩码
作用:由于控制新建文件的权限
如何控制: 最终权限 = 起始权限 &(~umask)
在我linux机器上 root的权限掩码是0022, 普通用户是0002
目录权限限制了什么操作
r:是否允许我们查看指定目录下的文件内容
w: 是否允许我们在当前目录下进行创建,更改, 删除
x: 是否允许用户进入对应目录
粘滞位
我在根目录下建立了一个权限为777的文件夹实现了共享。
并用Jaxsen用户新建来了一个权限为664的文件
为什么一个664的文件可以被其他用户删除呢?
答案是一个文件能否被删除,并不由文件本身决定,由这个文件所处的目录决定。
但是如何实现安全的共享呢(里面的文件不能被没有权限的用户删除)
这时候只需要增加权限即可
这就是粘滞位:给目录设置,一般是共享目录,大家可以进行在目录进行各自文件的增剔改查,只允许文件拥有者或者root能删这个文件,其他人一概不允许,t是一种特殊的x权限!