Shell的运行原理以及Linux的权限说明

目录

   shell命令以及运行原理

Linux权限的概念

用户之间的相互切换

提升普通用户的权限

普通用户添加到信任列表

Linux权限管理

文件访问者的分类(人)

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

文件类型

基本权限

文件权限值的表示方法

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

一、修改文件属性

chmod

 二、修改"人"

chown

chgrp

三、文件掩码

目录的权限

粘滞位

shell命令以及运行原理

Linux 严格意义上说的是一个操作系统,我们称之为 核心( kernel ,但我们一般用户,不能直接使用 kernel 。而是通过kernel “外壳”程序 ,也就是所谓的 shell ,来与 kernel 沟通。如何理解?为什么不能直接使用 kernel
从技术角度,Shell 的最简单定义:命令行解释器 command Interpreter )主要包含:
将使用者的命令翻译给核心( kernel )处理。同时,将核心的处理结果翻译给使用者。
对比 windows GUI ,我们操作 windows 不是直接操作 windows 内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D 盘的操作,我们通常是双击 D 盘盘符 . 或者运行起来一个应用程序)。
shell 对于 Linux ,有相同的作用,主要是对我们的指令进行解析,解析指令给 Linux 内核。反馈结果在通过内核运行出结果,通过shell 解析给用户。
注:
Shell只是所有外壳程序的统称,例如在centos 7当中的外壳程序名叫bash

Linux权限的概念

Linux 下有两种用户:超级用户( root )、普通用户。
超级用户:可以再 linux 系统下做任何事情,不受限制
普通用户:在 linux 下做有限的事情。
超级用户的命令提示符是 “#” ,普通用户的命令提示符是 “$”

用户之间的相互切换

语法: su 用户名
功能: 用户切换

a、从普通用户切换到root
b、从root切换到普通用户
c、普通用户之间的切换:su  指定用户 (需要输入指定用户密码)
注:
  • 从普通账号切换为root账号时,可直接 su (即省略root)
  • 切换用户后,若想切回上次的用户,可通过Ctrl+D实现

提升普通用户的权限

由于普通用户在使用某些操作会存在Permission denied(权限拒绝),因此我们就必须切换成root用户,有没有可以不切换root就可以执行操作呢? 

下面我介绍一种提高普通用户权限的方法:

sudo  +  需要操作的指令

一般只有root用户有权限来创建新用户,下面我们在普通用户下使用sudo来创建一个新用户

 注:

sudo能扩大普通用户权限,因此为了避免权限的泛滥,Linux下存在信用列表sudoers文件(类似白名单),只有在sudoers文件里面才能使用sudo命令

普通用户添加到信任列表

普通用户想添加到信任列表,先要切换成root用户,再进行如下操作:

[root@VM-4-14-centos ~]# vim /etc/sudoers

使用vim进入sudoers在该文本最底行找到如下内容,并进行操作(vim操作后期会详细介绍)

普通用户添加到信任列表中,就可直接使用sudo了

[xb@VM-4-14-centos home]$ ls
lighthouse  xb
[xb@VM-4-14-centos home]$ sudo adduser yc
[xb@VM-4-14-centos home]$ ls
lighthouse  xb  yc

Linux权限管理

文件访问者的分类(人)

1.文件和文件目录的拥有者 u---User
2.文件和文件目录的所属组 g---Group
3.其它用户 o---Others 
注:
  • [ root && 普通用户 ]和[拥有者、所属组、other]的区别:[ root && 普通用户 ]是具体访问者,而 [拥有者、所属组、other]是一种角色或身份,[ root && 普通用户 ]都可能是其中的某一个或多个。
  • 所属组的概念:在某一个公司中,可能会存在多个小组团队在同一个Linux服务器上进行着同一款项目的开发,而你就是A组当中的一员,为了使自己的代码能让自己团队内部的人员访问,而其余团队无法访问你的代码,就定义出所属组这一概念(即所属组内部成员可以访问自己小组内其他成员的文件)
  •  除了文件拥有者和文件所属组之外的都叫other

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

使用指令ll,可以查看文件的基本属性:文件类型和基本权限、连接数、拥有者、所属组、修改时间、文件名
文件类型和基本权限是由10个字符组成的

文件类型

这10个字符的首字符,表明该文件的文件类型

不同的字符代表不同的文件类型: 

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

注:

 在Linux当中,文件类型与文件后缀无关。  

基本权限

10个字符的后9个字符,三三为一组,表明 拥有者,所属组,other对文件的访问权限

 rwx— 就是文件基本访问权限:

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

文件权限值的表示方法

a、字符表示方法
Linux表示说明
r - -仅可读
- w -仅可写
- - x仅可执行
r w -可读可写
r - x可读可执行
- w x可写可执行
r w x可读可写可执行
- - -无权限
b、8 进制数值表示方法
权限符号(读写执行)二进制八进制数值表示法说明
r - -1004仅可读
- w -0102仅可写
- - x0011仅可执行
r w -1106可读可写
r - x1015可读可执行
- w x0113可写可执行
r w x1117可读可写可执行
- - -0000无权限

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

一、修改文件属性

chmod

语法: chmod 选项 权限 文件名或目录名
功能: 设置文件的访问权限。
常用选项: -R 递归修改目录文件的权限。
格式一: 用户符号 +/-/= 权限字符
+:向权限范围增加权限代号所表示的权限。
-:向权限范围取消权限代号所表示的权限。
=:向权限范围赋予权限代号所表示的权限。
用户符号:
u:拥有者。
g:所属组。
o:other。
a:所有用户。

注:
要同时设置不同类用户的访问权限,则需用逗号隔开。

 二、修改"人"

chown

功能 :修改文件的拥有者
格式 chown [ 参数 ] 用户名 文件名
常用选项: -R 递归修改目录文件的拥有者。

注:

修改文件的拥有者需要root用户进行操作,若是普通用户则需要进行权限提升。 

chown指令可同时修改文件的拥有者和所属组,需拥有者和所属组的用户名用冒号隔开 

chgrp

功能 :修改文件或目录的所属组
格式 chgrp [ 参数 ] 用户组名 文件名
常用选项 -R 递归修改文件或目录的所属组

 注:

修改文件的所属组也需要进行权限提升。

文件的权限只接受一个人" ,当一个文件的拥有者和所属组为同一个用户时,即默认接受拥有者

三、文件掩码

一般新建文件的默认权限=0666 (rw-rw-rw-)、新建目录的默认权限=0777(rwxrwxrwx)

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask 的影响。
假设默认权限是 mask ,则实际创建的出来的文件权限是 : mask & ~umask
格式 umask 权限值
说明 :将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022 ,普通用户默认为0 002
[xb@VM-4-14-centos lesson6]$ umask
0002

注:

umask 权限值我们只关心后三位数,即002 

我们也可以修改文件掩码

目录的权限

可执行权限: 如果用户没有该目录的可执行权限,则无法通过cd指令进入到目录当中
可读权限: 如果用户没有该目录的可读权限,则无法通过ls指令查看目录中的文件内容
可写权限:如果目录没有可写权限
, 则无法在目录中创建文件, 也无法在目录中删除文件

 一个文件能否被删除与文件本身的属性无关,是与用户是否有该文件上一级目录的可写权限下面我们思考一个问题:当多个用户共享一个目录,需要在该目录下,进行读写,创建删除文件,怎样避免被别人删除自己的文件?

可能会有人说可以将这个共享目录的可写权限去掉,下面我们尝试一下

创建的共享目录:

drwxrwxrwx    4 root root  4096 Aug 19 16:31 myfile

去掉共享目录的可写权限:

drwxrwxr-x    4 root root  4096 Aug 19 16:31 myfile

 结论:我们发现在一个共享目录中,去掉可写权限虽然其他用户无法对自己的文件进行删除,但同时自己也无法删除自己的文件和创建新文件,为了解决这个不合理的问题,Linux引入了粘滞位的概念。

粘滞位

用法: chmod + t 目录名

[root@VM-4-14-centos /]# chmod +t myfile/
[root@VM-4-14-centos /]# ll
total 1
drwxrwxrwt    4 root root  4096 Aug 19 16:31 myfile
此时我们再进入目录去删除别人的文件是无法进行的
当一个目录被设置为"粘滞位"(用 chmod +t), 则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

因此在共享目录中加上粘滞位能提高用户之间文件的保护。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值