Linux---(四)权限

简介: Linux---(四)权限

一、shell命令及运行原理

1.什么是操作系统?

Linux操作系统

🎐狭义上就是指Linux内核

🎐广义上指Linux内核+LInux外壳和对应的配套程序

Windows操作系统

🎐狭义上就是指Windows内核

🎐广义上指Windows内核+Windows对应的整个图形化界面+预装的各种各样的应用软件

2.外壳程序

LInux外壳程序----命令行解释器Shell

外壳程序的作用是:

(1)将用户输入的指令解释传递给内核

(2)内核执行命令,得到结果,奖结果通过外壳传递给用户

外壳程序负责信息的传递,称为命令行解释器

在Linux中,命令行解释器称为shell

shell : 命令行解释器 (和用户直接打交道)

Windows下外壳程序—最典型的一种就是图形化界面

🎐在windows中的图形化界面本质是其中一种外壳程序

🎐在windows下拿鼠标双击一个图标时,就会被图形化界面的外壳解释成要把程序加载到内存,程序就可以运行了。当出现结果时,结果会以图形化界面的形式呈现出来。

3.用户为什么不直接访问操作系统内核?

因为用户不擅于和操作系统打交道,操作系统使用时成本太高,有很多的系统级接口,系统级参数,小白用户根本不会用。

4.操作系统内核为什么不直接把结果显示出来?非要加外壳程序?

shell外壳作用

🎐命令解释

🎐保护内核(拦截不合法请求的指令,不让指令交给操作系统,从而变相保护内核)

生动理解

要相亲的程序员(相当于用户),不擅长与女孩交流,通过媒婆(媒婆相当于外壳程序shell)介绍,认识相亲对象小花(小花相当于内核)。

再发展:

shell(相当于媒婆婚介所):

(1)一旦用户输入,有新的任务时,shell会创建子进程,让子进程执行命令(子进程相当于参加工作的大学生)

(2)父进程(相当于媒婆),继续进行命令行获取

5.shell理解重点总结

(1)shell是什么?

是包裹在操作系统外部的一层软件层,为用户进行命令行解释

(2)为什么要有shell?

因为用户不擅于和内核打交道,所以在用户和内核之间添加一层软件层,方便用户和图形化界面之间的输入,再把指令翻译给操作系统,操作系统执行,把结果再交给用户。

(3)shell具体是怎么做的?

shell 父进程+子进程

(4)bash、sh是什么?

shell是对所有命令行解释器的统称,而具体的一款shell是有bash、sh、windows图形化界面…

(5)安卓智能手机

底层是Linux内核

安卓是GUI(Shell外壳)

二、Linux权限的概念

1.Linux下有两种用户:

🎐root – 超级管理员:可以在linux系统下做任何事情,无权限限制

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

2.切换用户的指令

(1)普通用户切换到root

🎐指令:su 或者 su -

🎐随后输入root用户的密码

🎐区别:

su:单纯的账号切换

su -:让root账号重新登录

🎐退出时按热键ctrl+D

(2)普通用户之间切换

🎐指令:su [普通用户名]

🎐普通用户之间切换,必须知道对方的密码

3.不切换到root用户,如何用root权限执行一条命令?

🎐指令:sudo 要执行的指令

🎐用sudo指令进行提权

🎐例如: sudo ls

🎐此时需要输入普通用户的密码

🎐sudo认证后在一定时间内再次使用sudo不用输密码

🎐安装卸载软件或者部署服务时需要把我们的文件拷贝在系统路径下时,必须使用sudo

🎐管理员只有将普通用户添加到/etc/sudoers文件中,普通用户才可以使用sudo指令,新建的普通用户无法使用sudo指令(sudoers文件会保存Linux受信任的用户,相当于白名单)

三、Linux权限管理

1.权限伴生文件!

(1)权限本质:

是一件事情是否允许被你做。

(2)权限与什么有关?

🎐人–角色

Linux中的角色划分:

🥑拥有者:文件和文件目录的所有者

🥑所属组:文件和文件目录的所有者所在的组的用户

🥑other:其他用户

🎐事物属性

也就是文件天然具备的属性

🥑r 被读取

🥑w 被写入

🥑x 被执行

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

(1)ll查看文件的属性

(2)用户和角色对应的关系

Linux具体的用户(root、普通用户)

Linux角色(拥有者,所属组,other)

二者之间关系:用户在一定程度上承担这些角色,二者是相互补充的关系。

(3)所属组是什么意思

🎐Linux帐号下任何一个文件一定隶属于一个所属组。

🎐所属组:一批用户的集合。

🎐一个组里可以有一个人

🎐一个组里可以有很多人,用组长的名字来对组命名

(4)为什么要有所属组?

更好地实现同一组的权限管理,保证不同用户可访问不同文件,同一组内可实现共享

(5)为什么没有看到other是谁?

拥有者和所属组是确定的,other有很多,是谁并不清楚。

只要判定一个不是拥有者,也不是所属组,那么就是other.

(6)Linux文件类型的分类:

🎐Linux区分文件类型与后缀无关

🎐那和什么有关?

和文件是否具有可执行权限有关

🎐后缀的意义?

给人看的,用来做一定程度上的用户级别的区分

🎐Linux系统并对文件用后缀作区分,但不代表gcc以及Linux中其他的软件不区分

🎐Linux文件类型的分类:用第一列的的第一个字符进行区分

🥑- :普通文件(包括源代码,可执行程序,库等)

🥑d:目录文件(也就是文件夹)

🥑c:字符设备文件(显示器文件。键盘文件)

🥑b:块设备文件(磁盘、分区)

🥑l:链接文件

🥑p:管道文件

理解字符设备文件

int a=123;

printf(“%d”,a);

🎐printf是格式化输出,printf底层把数字123转换成1字符、2字符、3字符,然后把1、2、4这三个字符显示到显示器上,所以打印整数时要进行格式化输出

🎐往显示器这样的设备打消息,是以字符为单位打印的,所以显示器叫字符设备。

int a;

scanf(“%d”,&a);

🎐从键盘上输入123,实际上输入了一个字符1、字符2、字符3,然后以格式控制把3个字符组合起来转成整数,放到a变量里

🎐所以键盘操作时的单位也是字符

理念:Linux下一切皆文件!

🎐显示器和键盘是文件吗?

是!叫做字符设备文件。

🎐每打开一个终端,相当于在linux中开辟一个字符设备文件,所以每次所写的消息最终就可以按照重定向的方式把内容向其他文件写入

✨理解块设备文件

🎐块设备文件:对数据以块为单位进行处理

🎐典型的块设备:磁盘、硬盘所对应的分区

🎐ls /dev/vda* -l 可查看云服务器上磁盘这样的设备

🎐dev是linux下设备目录

✨理解链接文件

🎐windows下的快捷方式就是链接文件

🎐linux下:

./lesson4/a.out

建立一个软链接 ln -s ./lesson4/a.out exe

在之后运行这个文件 ./exe 就能跑

✨管道文件

🎐主要用来进程间通信

🎐管道可以把一条指令交给另一条指令

3.权限符号

剩下的9个字符3个一组,每一组对应rwx权限,有相应权限就写相应字母,没有就写-

4.如何更改文件权限

🎐chmod 用户表示符±权限字符

🥑+:增加权限

🥑-:减少权限

🥑u:拥有者

🥑g:所属组

🥑o:其他用户

🥑a:所有用户

🎐一个人增加或减少文件权限

例如: chmod u-r test.txt

🎐如何一次性多处更改文件权限

注意用逗号隔开

例如: chmod u-r,g+wx,o+rwx test.txt

🎐想去掉所有人的写权限

例如: chmod a-w test.txt

🎐一般用户,不是文件的拥有者,不能更改文件权限。

🎐root账号不受权限约束,可以更改文件权限

🎐针对一个人既是拥有者又是所属组的情况:

权限,一个用户在匹配身份的时候,只能匹配一次。如果是拥有者,则只看拥有者权限,在的所属组权限不看了;不是拥有者,才看所属组权限,以此类推。

🎗️更改拥有者:普通用户将文件拥有者改为root或者其他普通用户

法一:sudo chown root/普通用户名 文件名

法二:

su (这一步将账号切换成root,输入root账号密码)

chown root/普通用户名 文件名

🎗️更改所属组:

例如将所属组修改为root

法一:sudo chgrp root 文件名

法二:

su

chgrp root 文件名

🎗️更改other:注意拥有者和所属组修改了,对应的other范围也自动修改了,所以不需要为修改other提供具体指令,也做不到

🎗️如何同时对拥有者和所属组进行修改

sudo chown 拥有者名:所属组名 文件名

5.研究默认权限

(1)起始权限

从上图可看出:

目录起始权限 775

普通文件起始权限 664

(2)权限掩码

Linux中存在权限掩码,通过umask查看或修改权限掩码

权限掩码是四位数字,可看作 0+三位八进制数字

(第一个0可看作8进制数字前缀,后面三位数字分别对应拥有者权限,所属组权限,other权限)

root默认掩码值是0022

普通用户掩码值是0002

🥑umask

作用:查看掩码值

验证如下:

🥑umask 权限值

作用:修改权限值

说明:将现有的存取权限去掉权限掩码后,即可产生建立文件时预设权限

我们研究权限掩码的后三位数字

002 也就是 000 000 010

🎗️注意:凡是在权限掩码中出现的权限,最终都要在起始权限中去掉

🎗️去掉不是指简单的加减法

🎗️最终权限=起始权限 去掉 权限掩码中出现的权限

🎗️去掉 :意思是清零指定的比特位。在umask中出现的比特位为1,最终权限的位置上必须被清零,无论起始是0还是1

🎗️0&1=0

🎗️1&1=1

🎐任何数和1按位与 结果是他本身

🎗️1&0=0

🎗️0&0=0

🎐任何数和0按位与 结果是0

🧨结论:最终权限 =起始权限 & (~umask)

~mask意思是:对umask按位取反(包括符号位)

🎃举例:

比如003按位取反

原来 000 000 011

之后 111 111 100

目录起始权限666(110 110 110)

(~umask)003 (111 111 100)

二者进行按位与&

结果 110 110 100 (也就是664)

所以该目录最终的权限是664,即拥有者有rw权限,所属组有rw权限,other有r权限。

(3)总结

起始权限是为了让文件或者目录在最开始有起始的权限

权限掩码让用户去控制文件或目录起始权限是什么,给用户更多选择性

6.文件权限与目录权限

(1)目录权限

进入一个目录,需要 x 权限

是否允许一个指定用户查看目录的文件列表,需要 r 权限

是否允许一个指定用户在当前目录下新建文件,需要 w 权限

(2)文件权限

一个文件一定是属于一个目录的。

一个文件属性能不能查看,是由目录的权限决定的!

一个文件能不能被删除,这个文件本身不能决定,要看所属的目录与对应账户是否有w权限。

(如果所属目录的一个other具有w权限,就可以删除该目录下的文件。)

(所以普通用户的默认掩码是002,000 000 010去掉的就是other中的写权限,默认这个值的本质是为了防止other用户的随意更改)

一般而言,不同的账号,是不会在同一个目录下的。

特殊情况,比如多个账号在同一个root创建的共享目录中相互协同、共享数据。

(由root账号创建一个目录,将这个目录的other权限设为有w权限时,一个账号就可以删除另一个账号的文件;若设为无w权限时,多个账号都不能在此目录下新建文件)

(当目录的other权限有w,如果其他账号想读、写、执行别的账号创建的文件,得看这个文件的other权限是否允许)

🎗️如何解决这种特殊情况呢?使得在共享目录下可以写文件但是不能让别人删除我的文件。

设置粘滞位。

(3)粘滞位

chmod +t 目录名

🎐作用:对目录设置粘滞位,在该目录的内部只有文件的拥有者能够删除自己的文件,其他人不能删除。

🎐应用场景:多用户实现文件共享

🎐注意:

不在一个人的家目录下共享

在根目录或非家目录下共享

7.file指令

file 文件或目录

功能:辨识文件类型


总结

Linux的权限部分内容就到这里啦~想要了解更多内容,记得关注后续哦👻

相关文章
|
1月前
|
Linux Shell
Linux系统文件默认权限
Linux系统文件默认权限
|
14天前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
31 1
linux特殊权限!!
|
1月前
|
运维 监控 安全
Linux_权限理解(详细PLUS)
【10月更文挑战第3天】本文介绍了Linux系统中的权限管理基础,包括文件系统对象与权限关联、权限的继承性、字符与数字表示法的解读,以及用户、组与权限的动态交互。详细解析了`chmod`命令的高级用法和权限修改的风险,探讨了SUID、SGID和Sticky Bit等特殊权限的作用机制,并提出了基于角色的权限分配和定期权限审计的最佳实践。
60 11
|
1月前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
1月前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
1月前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
1月前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
26 0
|
3月前
|
存储 安全 Linux
Linux权限之谜:一步步教你如何解锁sudo权限并窥视/etc/shadow的神秘面纱!
【8月更文挑战第22天】在Linux中,`sudo`命令让授权用户能以其他用户(通常是root)身份运行命令。关键的安全文件`/etc/shadow`存储用户密码哈希,仅root可读。要使用`sudo`,需确保账户被列入`sudoers`文件中。系统管理员可通过`visudo`编辑此文件来赋予用户权限,例如添加`username ALL=(ALL) NOPASSWD: ALL`行。获得`sudo`权限后,可运行`sudo cat /etc/shadow`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
87 2
|
3月前
|
Linux 数据安全/隐私保护
在Linux中,什么是文件权限?什么是rwx权限模型?
在Linux中,什么是文件权限?什么是rwx权限模型?
|
3月前
|
Unix Linux Shell
Linux 权限简介
Linux 权限简介
45 1