《Linux-权限的理解、shell的理解和粘滞位》

       

目录

       

一、shell的理解

二、Linux权限

一、用户的引入

二、权限管理

一、什么是权限

二、Linux下的权限

三、视图展示

 四、文件类型

五、为什么gcc编译器编译.txt后缀的文件有问题?

六、修改权限

        一、chmod设置文件的访问权限

                一、基本使用

                二、八进制方案(访问所有人的权限)

        二、chown修改文件拥有者

        三、sudo对指令做提权操作

                为什么提权了还要输入密码?

        四、chgrp修改文件所属组

七、Linux规定下的目录和普通文件的起始权限以及umask修改默认权限掩码

八、为什么目录起始权限是777呐(答案在最后)?

九、file指令查看文件类型

三、粘滞位

一、背景

二、使用

三、作用

四、关于权限的总结?


一、shell的理解

        Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel) “ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
        从技术角度, Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
将使用者的命令翻译给核心(kernel)处理。同时,将核心的处理结果翻译给使用者。

        shell变相的保护操作系统,比如张三是用户、王婆是shell、操作系统是美女。张三不怎么会说话,想跟美女处对象,王婆作为媒人帮助张三,张三把自己要说的传递给王婆,王婆再传递给美女,映照了人不能直接和操作系统对话,也就是在Linux使用中我们常见权限不够、不允许、是否确认访问等情况。

        二、Linux权限

一、用户的引入

        Linux下的用户分超级用户(root)、普通用户,超级用户可以在Linux系统下做任何事情不受约束,普通用户则受约束,超级用户的命令提示符是#,普通用户是$

        切换方式

普通用户:su 用户名

超级用户:su root(root可以省略)

扩展:su -        切换到root用户,且目录改为root的家目录

           su          切换到root用户,且目录仍然是当前目录

二、权限管理

一、什么是权限

        权限可以理解为文件本身的权限和文件对角色的限制(例如腾讯视频不是用来做OJ的,腾讯视频给VIP用户提供观看VIP电影的权限)

        文件是由文件属性和文件内容构成的,属性包含文件对角色的限制,文件本身的属性(类型、大小等)

二、Linux下的权限

        我的一篇《Linux-常见指令详解》一文中提到过Linux文件后缀与Windows不同,Liunx当中区分文件类型和文件后缀是没有关系的,仅仅是给用户做一个提示,后缀本质其实就是文件名的一部分,这正与文件的属性相对应,在shell里面可以输入ll 文件名,查看文件详细信息,前面会有一些字母,包含rwx-,r表示读,w表示写,x表示执行,-表示无(即顺序应当是rwx,但显示rw-,则表示没有x权限),ll详细信息前的2-10位的字符是三三为一组,第一个字符是文件类型

        从左往右,第一个表示文件的属性,后9个表示文件对角色的访问限制,而不是具体的人,角色从左往右分为文件的拥有者、所属组、其他人

三、视图展示

《Linux-权限的理解、shell的理解和粘滞位》_第1张图片

 四、文件类型

d:目录文件
-:普通文件(源代码、库文件、可执行程序、文档压缩包等等)
l:链接文件(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口(socket)文件

        其中前两个必须掌握。

五、为什么gcc编译器编译.txt后缀的文件有问题?

因为gcc等工具,对文件后缀可能有要求,跟Linux没有关系。

六、修改权限

一、chmod设置文件的访问权限

一、基本使用

        1.+增加权限 -去除权限

eg:chmod o-w 文件名

意为去除其他人写的权限

        2.也可以用逗号分隔继续

eg:chmod u-rwx,g-rwx,o-rwx 文件名

意为去除拥有者rwx权限,去除用户组rwx权限,去除其他人rwx权限

        3.=:向权限范围赋予权限代号所表示的权限

eg:chmod a=x /home/abc.txt

意为给所有人赋予x权限
        4.a:所有用户

        5.R -> 递归修改目录文件的权限

二、八进制方案(访问所有人的权限)

        理解为二进制的1为存在,二进制的0为没有,比如修改文件权限:

rwx rw- r--

111 110 100

7 6 4

chmod 764 文件名/目录名

二、chown修改文件拥有者

        chown [参数] 用户名 文件名

eg:chown 用户名 文件名

     chown -R 用户名 目录名

当然所有跨界操作都应当是文件的拥有者、所属组、超级用户可以执行命令,也可以使用sudo。

三、sudo对指令做提权操作

        在root用户下的/etc/sudoers可以编辑白名单列表,就是添加信任用户,sudo指令指不切换用户,使普通用户以root用户的身份执行对应的指令,短暂的提权。

为什么提权了还要输入密码?

        给受信任的用户,提供最少的执行障碍。

四、chgrp修改文件所属组

        与chmod、chown一样有-R选项,递归修改文件或目录的所属组。

        格式:chgrp [参数] 用户组名 文件名

七、Linux规定下的目录和普通文件的起始权限以及umask修改默认权限掩码

        目录:0777,文件:0666(这里是八进制表示形式,以0开头)

        可以通过umask修改起始权限

        umask可以查看或修改文件掩码 #umask     #umask 0000

        当然有时候创建文件和目录的起始权限不是上面那样,因为受到umask的影响,假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

即:最终权限=起始权限&(~umask)

        那么特殊情况会出起始权限-权限掩码就是最终权限,其实并不这样。

逻辑规则是:umask,默认去掉的位是1,要保留的位是0

                     ~umask,要去掉的位是0,要保留的位是1

八、为什么目录起始权限是777呐(答案在最后)?

一个问题,如果我们进入一个目录需要什么权限?

        r权限是查看目录里的文件,w是在目录里创建文件,x是进入目录,所以所有的目录被创建出来一般都需要x权限进入,如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容,如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

九、file指令查看文件类型

语法: file [选项] 文件或目录...
常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容

三、粘滞位

一、背景

        搞一块公共的目录,方便所有人访问,进行读写执行,但是有个缺陷。

由于目录的权限w写入权限导致其中文件可以被删除,这是不科学的,可恶的目录,不让其他人看读写,其他人就有可能删除这个文件,受害人就是拥有者。

        所以粘滞位就担任了给目录设置防止互删文件的权限

二、使用

所以使用root用户:chmod +t 目录名

sudo chmod +t 目录名

注意:sudo提权操作是需要输入当前用户密码的

测试样例:使用root用户在根目录下创建一个目录,公共目录的属性值应当是777,即所有人都是rwx,chmod 777 目录名,使用普通用户1创建文件,设置other权限为0,使用普通用户2访问这个文件是不被允许的,但是可以删掉这个文件。

三、作用

该目录被设置成粘滞位,只能被root用户、文件的拥有者、目录的拥有者可以删除

四、关于权限的总结?

目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
 

你可能感兴趣的:(Linux,linux)