前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell的介绍以及Linux权限的讲解

shell的介绍以及Linux权限的讲解

作者头像
ahao
发布2024-03-24 11:05:52
930
发布2024-03-24 11:05:52
举报
文章被收录于专栏:学习学习

1 shell命令以及运行原理

1.1 shell命令行的概念

大家在以前的学习中可能会有一个固态的印象: 一台计算机的大概分层为下图 也就是说人可以直接调用计算机的操作系统,但真的是这样吗? 答案是否定的!

其实操作系统还有一个“外壳”: Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通

我们举一个例子: 其实用户就是一个大龄未婚的小伙子,他现在看上了一个如花似玉的姑娘(也就是操作系统),想找他做老婆(用户的需求),但是不好意思去找姑娘,于是就到村里找了个王阿姨(shell)去说媒,这就很好理解了吧

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含: 1 将使用者的命令翻译给核心(kernel)处理 2 同时,将核心的处理结果翻译给使用者

window系统中的图形界面就是一个shell程序,我们点击图标从而完成相应的需求,但是Linux中,shell主要是对指令进行解析,然后交给kernal,反馈的结果通过kernal运行出结果,通过shell解析给用户

1.2 shell外壳程序的意义

那么问题来了,为什么不直接让用户使用我们的操作系统呢?这样不是更方便吗?

这是因为如果让用户直接访问操作系统,它的成本是很高的,并且犯错率也很高,容易出现很多差错,还不如让shell在中间进行传递,降低成本的同时提高系统的准确率

1 是用户和操作系统交互中间的软件层 2 一定程度上可以保护操作系统

2 Linux权限

2.1 Linux权限的概念

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

这也从侧面反映了Linux操作系统是多用户操作系统,windows也是

从名字上就能看出来哪个用户的权限大,root在Linux系统中只能用无所不能来形容,就这么说吧,root就像是一个古代的皇帝,其他普通用户就是各个地方的亲王,每年都要上贡,但是在自己管辖的区域有一定的权力

我们可以用指令su来切换用户: 但是需要密码

代码语言:javascript
复制
su 【用户名】

例如:

指令exit可以用来切换到上一次所使用的用户:

2.2 Linux权限管理
2.2.1 文件访问者的分类(人)

文件的访问者一共可以分为三种:

代码语言:javascript
复制
文件和文件目录的拥有者:u---User
文件和文件目录的所有者所在的组的用户(所属组):g---Group
其它用户:o---Others 

例如: 下图中的文件的拥有者和所属组都是root 而其他用户就是说操作系统内其他的普通用户

2.2.2 文件权限值的表示方法

r代表可读,w代表可写,x代表可执行

代码语言:javascript
复制
读r:Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写w:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行x:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“—”表示不具有该项权限

文件的权限是用来限制访问的,权限值可以分为两种方法: 字符表示法:

八进制表示法:

2.2.3 文件类型和访问权限(事物属性)

其实每个文件访问者对于各个文件其实都有一定的访问权限

我们先来了解一下文件类型

代码语言:javascript
复制
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

为了大家更好地理解上图,请看具体的例子:

2.2.4 文件访问权限的相关设置方法

chmod 功能: 设置文件的访问权限 格式: chmod [用户] +/- 权限 文件名

这里大家要注意一个点: 只有文件的拥有者和root才可以改变文件的权限!

各个字符表示的意思如下:

代码语言:javascript
复制
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:   
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

例如: 下图中的文件:

我需要给mytest2改权限:

代码语言:javascript
复制
chmod u+x mytest2  给拥有者加上可执行权限
chmod g+x mytest2 给mytest2文件所属组用户加上可执行权限
chmod o+x mytest2 给其他用户加上可执行权限
chmod a+x mytest2 给所有用户加上可执行权限

此外还有一种八进制的方式: 例如:

代码语言:javascript
复制
chmod 664 mytest2  
chmod 640 mytest2

chown 功能: 修改文件的拥有者 格式: chown [参数] 用户名 文件名

例如:

代码语言:javascript
复制
chown root mytest2   将mytest2的拥有者改为root

可以看到,改变拥有者后jh变成了 root

chgrp 功能: 修改文件或目录的所属组 格式: chgrp [参数] 用户组名 文件名

例如:

代码语言:javascript
复制
chgrp root mytest2  将mytest2的所属组改为root

但是大家有没有发现: chown和chgrp我在这两个指令之前加入了一个sudo,这是为什么呢? 实际上也可以切换为root来执行这个指令,但是为了方便,我将jh这个普通用户放入了我的信任列表里,至于怎么放,稍后解答!

umask

功能: 查看或修改文件掩码 新建文件默认权限=0666 新建目录默认权限=0777

前面的0不用管,默认第一位都是0,文件夹666就是都没有执行权限,目录777就是三个所有权限都有,我们来验证一下啊: 我们新建了一个文件夹3_20,一个文件3_20_test,这么他们的访问权限和我们默认生成制定的规则不一样呢?

**原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: **

代码语言:javascript
复制
mask & ~umask

umask我们可以叫它权限掩码

那么我们可以查看我们当前系统的umask,也可以设置:

代码语言:javascript
复制
umask  查看系统的权限掩码值
代码语言:javascript
复制
umask 0003  修改权限掩码值
2.3 file指令

功能说明: 辨识文件类型。 语法: file [选项] 文件或目录…

常用选项:

代码语言:javascript
复制
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。

例如:

代码语言:javascript
复制
file 3_20  

使用 sudo分配权限 想使用sudo指令,我们首先要将当前的用户加入信任列表: 我们需要用vim指令打开一个文件进行修改:

代码语言:javascript
复制
vim /etc/sudoers

至于如何修改,我们下篇博文在做讲解,因为本篇博文还有未涉及到的知识

然后我们就可以调用sudo分配权限了

2.4 目录的权限

在目录中各种权限的解释如下: 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

那么我们就有一个问题出现了: 我们有一个需要注意的点: 一个文件是否能被删除取决于这个文件所在的目录

那么也就是说,只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限,但是这明显有问题啊 我创建的文件,这么情敌还能删除掉我的文件呢?

为了解决这个问题: 就引出了粘滞位!

2.5 粘滞位

当一个目录被设置为**“粘滞位”(用chmod +t)**,则该目录下的文件只能由: 一、超级管理员删除 二、该目录的所有者删除 三、该文件的所有者删除

例如:

代码语言:javascript
复制
chmod o+t yw_test  

可以看到other用户的可执行权限变成了t,不能删除它

此外,粘滞位大家要注意啊: 1 粘滞位只能给目录设置,文件不能 2 粘滞位设置后一般不能被取消

2.6 权限的总结

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

好了,今天的分享到这里就结束了,感谢大家的支持!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 shell命令以及运行原理
    • 1.1 shell命令行的概念
      • 1.2 shell外壳程序的意义
      • 2 Linux权限
        • 2.1 Linux权限的概念
          • 2.2 Linux权限管理
            • 2.2.1 文件访问者的分类(人)
            • 2.2.2 文件权限值的表示方法
            • 2.2.3 文件类型和访问权限(事物属性)
            • 2.2.4 文件访问权限的相关设置方法
          • 2.3 file指令
            • 2.4 目录的权限
              • 2.5 粘滞位
                • 2.6 权限的总结
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档