假设我现在是root用户,我想切换到普通用户怎么办?
普通用户切换到root用户
举几个生活中的例子
那么Linux系统的文件权限也是如此,权限主要就是“用户角色” + 文件属性。
Linux中用户角色分为三种。
如何查看一个文件的用户角色呢?下面是示例:
其中文件属性里面可以查看用户角色。
为什么Linux会有所属组这种用户角色呢?用个例子来阐述下:
有这么一家公司,它允许一个项目可以被2个组同时去做(赛马机制),但是只有1台Linux机器。如果没有所属组的用户角色,那么A组可以看B组的代码,B组可以看A组的代码,这样就会很乱。有了所属组,A组只能看A组的代码,B组只能看B组的代码,防止了恶意抄袭等情况的发生。
下面通过一条指令来看看文件的属性:
下面来看前10个字符的具体代表意义:
drwxrwxr-x
Linux中文件类型分别有如下几种:
其中可以通过file命令来查看文件类型!
**在Linux系统中是不以文件命名的后缀来表示文件的!**也就是说即使你是txt的后缀,在Linux系统中也是可以直接像exe文件那样执行的。但是,只是Linux系统是这样,对于Linux系统中的工具,例如gcc也还是认文件的后缀的。
先来说一下Linux中文件的权限,Linux中的文件共有三个权限
为了方便记忆,r就是read,w就是write,x就是execute
其中 - 代表的就是没有,其他相应字符都对应上面的权限。
对于上面的指令来说,我现在的这个文件
上面说了在Linux中,文件权限就是 用户角色 + 文件属性。
那么操作权限的方向自然就是两个方向了,一个是用户角色,一个是文件属性。
命令:chmod _ 用户角色_(+/-)_文件权限 _ 文件名(这里的下划线代表的是空格)
其中用户角色用的是简称:
其中 + 符号代表的是加权限, - 符号代表的是减权限。
文件权限也是用的简称:
功能:使用命令后可以增加或者减少相应的权限。
示范:
可以一次更改单个用户角色的单个权限,多个权限,也可以更改多个用户角色的单个权限,多个权限。
示范:
这里就不展示权限的示范了,有兴趣可以按照上面的叙述自行操作。下面介绍一种操作所有用户角色的命令。
这里会有一个疑问,下面直接看例子
其中在文件权限中,root是不受权限的约束的,即使一个文件的拥有者不是root,root也可以读写执行。即使一个文件没有读写执行权限,root照样可以读写执行。下面来看示例:
命令:chown/chgrp_你想要变更的用户名_文件名(下划线代表空格)
功能:chown 可以 将拥有者改为你想要变更的用户,chgrp 可以将所属组改为你想要变更的用户。
示范:
我想拥有者和所属组一起更改怎么操作?下面看示范:
我这里使用的是root角色,如果是普通用户想把文件给其他用户,要用到sudo指令。
在文件权限中,拥有者肯定是一个具体的人,所属组也是一个具体的人,如果你的用户角色都匹配不上拥有者和所属组,那么就说明你是其他人(other)。那这样其他人的数量是很大,这样的情况没必要更改了。
除了上面的ugo±rwx方案,这里介绍一种更简单的八进制方案。这里的八进制方案需要对进制有一定的了解,如果读者没有这方面的知识,可以先去了解进制。
其实一张图就能明白:
指令的示范:
一个刚被创建的文件的文件权限原来的样子是什么样的呢?
提问:为什么文件权限的起始模样会这样的呢?
在Linux中规定,目录文件的起始权限是777,普通文件的其实权限是666。也就是说
但我们新建的文件中的文件权限根本不是上面规定的样子,而是下面这个样子。
原来在Linux中,有个权限掩码umask,它帮我们规定了一个文件的起始权限。
umask的初始值是0002,第一位可以不用管,后面三位对应的是八进制方案。umask规定:凡是在umask中出现的权限,都必须在起始权限中去掉!!!
0 000 000 010 这个初始值,对应的就是去掉其他人的写权限。可以通过修改umask的值来确定你新建的文件的起始权限。
例如:我把umask设置为 0000
那么最终权限是怎么确定的呢?
答案是: 最终权限 = 起始权限 & (~umask)
例如:我把umask设置为 0032
通过结果比对上面显示的文件权限,确实如此。
那么为什么要把umask取反呢? 是因为umask有的权限,在文件权限上都不要,那么取反之后,再和文件权限相与自然就是把不要的权限剔除了。
试想一下,如果要进入一个目录需要什么权限呢? 读权限? 写权限? 还是执行权限?
直接更改权限看一下:
所以进入一个目录文件,需要的权限就是执行权限。
这个问题,一句话就是便于我们系统的安全管理。
粘滞位是目录权限的一种特殊情况。简单来说就是在一个公共目录下,防止其他用户之间的相互删除。
root的根目录下有一个目录就是带有粘滞位的。
具体是什么个情况呢? 下面听我娓娓道来。
同样的道理,如果切换用户pdx2,对于pdx1的文件也是如此。
那么这个公共目录就很危险了。假如pdx1不爽pdx2,但是两个人又是同事,有些文件就是要放在公共目录下,两人互相之间是看不了文件的,却可以互相删除…
命令 : chmod_+t_目录名
功能:给该目录加上粘滞位
示范:
注意,mytmp文件的拥有者是谁就由谁来执行这个命令,否则会被拒绝!
总结:粘滞位其实就是目录权限的一种特殊情况,是为了防止用户之间的误操作或者恶意操作。