文章介绍:
本文主要介绍有关LINUX的权限及其相关知识,深入了解LINUX操作系统的管理机制。
用户分类:
一个国家,要想有好的管理和规划,必须要有贤明的领导人和勤劳肯干的群众。领导人相对于普通群众,最重要的是他拥有更高的权限以便统领全局。
为了管理好LIUNX这个“大家庭”,其内部特定划分了root用户和普通用户。
root用户: 也称超级用户,基本不受权限的限制
普通用户: 由root用户新建的用户,权限有一定限制
root切换到普通用户:
使用su 指令
su + 用户名
[root@xxx ~]# su okk
[okk@xxx root]$ whoami
okk
普通用户切换到root:
使用exit指令
有快捷键 ctrl + d
[okk@xxx root]$ exit
exit
[root@xxx ~]# whoami
root
提权操作:
特别注意的是,在本身是普通用户的情况下,如果只是想要让有限个指令能拥有root的权限,可以通过提权做到。
语法: sudo + 指令
但是普通用户不是想提权就可以做到的。
如果使用的是adduser新建的用户,没有颁发执行sudo,系统是不信任此操作的。
除非将用户加入到系统的信任白名单中。
权限:
上文由用户的分类引出分类的依据,也是引出了LINUX的核心概念之一 —— 权限。
简单地说,权限就是用户能不能干某件事。这牵扯到用户的身份和事物的属性。
从事物的属性出发,在LINUX中因为“万物都可视为文件”,着重看的是文件属性。
文件名没什么好说的,和我们熟悉的windous差不多,不过多出一些在LIUNX环境下运行的特定后缀名。
看着第一列,其可以帮我们快速判断文件的类型。
常见的文件类型如下:
-: 普通文件: 文本,可执行文件,库等
d: 目录文件
b: 块设备文件 磁盘文件
c: 字符设备文件 键盘/显示器文件
p: 管道文件 用来进行通信的
在LINUX中,文件的后缀名不是那么重要,尤其对于可执行程序而言,只要该文件有可执行的权限,通过一定的指令都可以跑起来。主要看的,还是第一列所代表的文件类型。
让我们看看具体有哪些权限。
第二列到第十列都是文件所具有的权限,三三为组,因此我们目前只需看前三列。
权限的类型分为:
r: 文件拥有读权限
w: 文件拥有写权限
x: 文件拥有可执行权限
-: 对应的权限位置没有权限
每一组中权限对应的位置是 rwx
接下来看看身份:
用户的身份分类除了有root和普通用户这一分类外,还有另外一种分类。
拥有者: 一般一个文件的创建者就是所有者
其他人: 除拥有者外都可以被广泛定义为其他人,权限有所限制
所属组: 为了弥补其他人的权限限制,又不想让无关系的用户接触文件的某些属性,特地开一个组。
在组中的成员可以使用原本不开放的权限
这两种分类方法是互补的,root和普通用户更多地是针对某一个用户,刚刚提到的分类是对这个用户的一个身份表示。
修改权限:
使用chmod 修改权限。
语法: chmod 所属身份+/-权限 文件名
原来的权限:
drwxr-xr-x 4 root root 4096 Apr 21 11:50 test
减权限:
chmod a-rwx test
d--------- 4 root root 4096 Apr 21 11:50 test
加权限:
chmod a+rx test
dr-xr-xr-x 4 root root 4096 Apr 21 11:50 test
所属身份:
u 表示拥有者 g 表示所属组 o表示其他人 a表示全部
因为是三三分组,在计算机语言中我们常用的进制有八进制,因此每一组都可以用一个八进制数来表示。
比如说rwx 其二进制表示111 ,转换成八进制就为7
因此,r-xr-xr-x 可以表示为555
chmod 333 test
d-wx-wx-wx 4 root root 4096 Apr 21 11:50 test
权限的使用:
权限的使用和用户的身份息息相关。
在LINUX中,一个用户在对文件进行操作前会看其身份。如果该用户是拥有者,那在具体操作时会看向拥有者所具有的权限。
LINUX在具体操作时只会认定三组权限中的一组进行操作。
权限组的优先级为:拥有者 > 所属组 > other。
初始权限:
有没有想过,在我们创建文件时系统就给文件加上权限了。
在LINUX中,默认给普通文件加的权限是666。
默认给目录文件加的权限是777。
但实际上:
目录文件的权限是755
mkdir okk
drwxr-xr-x 2 root root 4096 Jul 17 15:15 okk
普通文件的权限是644
-rw-r--r-- 1 root root 0 Jul 17 15:17 okk.txt
这里就涉及到了权限掩码。
通过 umask指令查询权限掩码。
[root@xxx ~]# umask
0022
不必在意第一位,只看后三位
凡是在umask中出现的权限,都不会在最终的文件权限中出现。
这是通过位运算得来的。
最终权限 = 起始权限 & (~ 权限掩码)
权限掩码可以更改:
[root@xxx ~]# umask
0022
[root@xxx ~]# umask 0001
[root@xxx ~]# umask
0001
权限的功能:
我们看到普通文件和目录文件的起始权限不同,这是与文件所需的功能相联系。
对应目录文件而言:
r: 是否允许用户查看指定目录/文件的内容
w: 是否允许用户在当前目录/文件下进行创建,删除,移动文件,或者是修改文件数据
x: 是否允许用户进入相应的目录/文件是否可执行
普通文件的权限相较于目录文件,正好少了x。
对于普通文件而言,不可能进入目录;可执行文件占比普通文件不是很大,需要时可以自己添加。
文件的共享与删除:
文件的共享和权限要受到目录权限的限制。
对于每一个普通用户,其家目录的权限都是700,这很好地保护了用户个人的相关信息。
但有些时候,普通用户之间想进行文件数据的共享,为了实现这一目的,可以在根目录下创建shared目录。
drwxrwxrwx 2 root root 4096 Jul 17 16:04 shared
但是,一个文件是否可以被删除,并不由文件本身决定,而是由文件所在的目录决定。
在shared文件中,任何用户都可以随意地删除文件。
那么将w权限去掉?不行,那样文件就无法修改了。
为了解决这一问题,LINUX有粘滞位。只允许文件拥有者和root用户删除此文件。
LIUNX也有tmp文件,其为共享目录。
chmod o+t shared
drwxrwxrwt 2 root root 4096 Jul 17 16:04 shared
注意到最后一位是t,这就是粘滞位