【Linux】学习之shell和权限

  • Post author:
  • Post category:linux




shell命令以及运行原理

在Windows中,我们可以通过鼠标,双击一个文件夹,从而进入这个文件夹当中。

在Linux中,我们可以通过命令,通过输入命令cd + 文件名,进入到文件夹当中。

那么这个交互过程究竟是怎么完成的呢?

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。因为学习使用kernel的成本太高。

而我们是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。(在Windows中,同样道理,是通过GUI来与Windows内核沟通)

在这里插入图片描述

在Linux centos7中外壳程序名为bash,是shell的一种

从技术角度,Shell的最简单定义:

命令行解释器

(command Interpreter)主要包含:

①. 将使用者的命令翻译给核心(kernel)处理。

②. 将核心的处理结果翻译给使用者。

对比windows GUI(图形化界面),我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运

行出结果,通过shell解析给用户。



权限



概念

Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以再linux系统下做任何事情,不受限制

普通用户:在linux下做有限的事情。

超级用户的命令提示符是“#”,

普通用户的命令提示符是“$”。

在这里插入图片描述

命令:su [用户名]

功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su

root(root可以省略),此时系统会提示输入root用户密码的口令。



文件的属性

我们都知道,可以都过命令 ls -l 或者ll 来查看文件的详细信息,那么在这显示出来的信息中,都是代表什么意思呢?

在这里插入图片描述

我们已文件test_gdb来举例:

在这里插入图片描述


文件类型:

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件


基本权限


i.读(r/4)

:Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限


ii.写(w/2)

:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限


iii.执行(x/1)

:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限


iv.“—”

:表示不具有该项权限

在这里插入图片描述

权限位置是确定的

当然还有很多种情况,明白就好。

其他属性:

在这里插入图片描述



设置基本权限


a)chmod

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项:

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

说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值格式

① 用户表示符+/-=权限字符

+:向权限范围增加权限代号所表示的权限

-:向权限范围取消权限代号所表示的权限

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

用户符号:

u:拥有者

g:拥有者同组用

o:其它用户

a:所有用户

在这里插入图片描述

也可以用八进制

在这里插入图片描述


b)chown

功能:修改文件的拥有者

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

在这里插入图片描述


c)chgrp

功能:修改文件或目录的所属组

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

常用选项:-R 递归修改文件或目录的所属组

在这里插入图片描述



默认权限

新建文件夹默认权限=0666

新建目录默认权限=0777

(0与特殊权限有关,这里先不做探讨,我们直接看后三位)

在这里插入图片描述

但我们发现好像不如我们所见为

666(rw- rw- rw-)和777 (rwx rwx rwx)

实际上,你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到


umask

的影响。假设默认权限是

mask

,则实际创建的出来的文件权限是: mask & ~ umask

格式:umask 权限值

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

在这里插入图片描述

在这里插入图片描述

那么掩码过程是怎样的呢?下面用一张图概况:

在这里插入图片描述


也可以通过修改umask值来改变默认权限!


(自行尝试,格式为: umask+要修改的掩码值)



目录权限


  • 可执行

    权限: 如果目录没有可执行权限, 则无法cd到目录中.

  • 可读

    权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.

  • 可写

    权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

先补充一些知识点:

ls -ld命令 可以查看当前文件所在目录的属性信息,相当于ll -d命令

只有可读权限的话,是无法查看此目录下文件的属性信息的,只能查看到文件名:

在这里插入图片描述

在这里插入图片描述

如果目录对other

不具有w权限,则不能创建文件,更无法删除文件

在这里插入图片描述

可是,如果该目录对other具有w权限,我们发现other居然可以删除任何的该目录下的文件,

并且无视该目录下的文件是否对other具有什么权限


在这里插入图片描述

这便是一个很大的问题,一不小心你的文件就会被别人全部删掉!

这么不合理的东西,自然也会引起重视,因此也有了解决方法,使得other可以在特定的目录下创建文件并写入,但自己的文件不会被other删掉——

粘滞位

语法: chmod +t 目录名

功能: 给目录加上粘滞位。

在这里插入图片描述

在这里插入图片描述

当一个目录被设置为”粘滞位”(用chmod +t),则该目录下的文件只能由

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除



关于权限的总结

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



版权声明:本文为weixin_73178229原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。