.
专栏:数据结构|Linux|C语言
路漫漫其修远兮,吾将上下而求索
文章目录
前言1.外壳程序是什么?外壳程为什么存在?工作原理外壳程序怎么个事? 2. Linux权限的概念2.1 什么是权限2.2权限的本质2.3 Linux中的用户 3. 普通用户变成rootlinux中有三种人 4.Linux中文件的权限4.1文件的属性权限4.2 掌握修改权限的方法`chmod`4.3 对比权限的有无,表现4.4.相关权限的第二套做法权限的数字表示法 5.文件类型b:块设备文件c:字符设备文件p:管道文件l:链接文件如何理解`x`(可执行权限) 6. Linux创建文件时,为什么有默认权限结语:
前言
在这篇博客中,我们将深入探索 Linux 权限系统,这是理解和有效管理 Linux 系统的一个关键组成部分。Linux 权限系统为系统安全提供了强大的基础,它通过精确控制对文件和目录的访问来保护系统免受未授权的访问和更改。无论您是 Linux 新手还是经验丰富的系统管理员,掌握 Linux 权限的知识都是至关重要的。在这篇博客中,我们将详细介绍权限类型、特殊权限设置、权限的数字表示法,以及如何管理和应用这些权限。我们的目标是提供一个清晰、全面的指南,帮助您理解和有效地使用 Linux 权限系统。
1.外壳程序是什么?
大部分指令就是文件用户执行某种功能的时候,不是直接让操作系统执行对应的指令的,而是先交给外壳小程序
外壳程序是操作员与操作系统交互的界面,操作系统再负责完成与机器 硬件 的交互。
介于用户和操作系统之间的软件,也叫命令行解释器
外壳程为什么存在?
1.用户不善于和os(操作系统)之间交互
2.shell外壳的存在,可以对请求进行合法性检查,变相的保护os
工作原理
命令解析:Shell 首先解析命令行输入,处理特殊字符(如引号、空格)。
环境变量:Shell 使用环境变量来配置用户环境。例如,PATH 环境变量定义了 Shell 搜索可执行文件的目录。
管道和重定向:Shell 允许使用管道(|)和重定向(>、<)来连接多个命令,使得输出从一个命令流向另一个命令。
外壳程序怎么个事?
创建子进程,让子进程进行执行
一直都可以做自己的工作—不受任何失败的影响
bash基本都会给我们创建一个子进程(帮用户进行命令解释)bash只需要进行等待就行了
2. Linux权限的概念
2.1 什么是权限
通过一定的条件,拦住一部分人,给另外一部分权力,来访问某种资源
2.2权限的本质
权限和人有关
权限和事务的属性有关
权限= 人+事务的属性
2.3 Linux中的用户
超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
3. 普通用户变成root
su
+密码或者su -
+密码
区别:
su
是把普通用户身份发生变化为root
su -
相当于让root重新登陆
pwd
所处于的路径不会发生变化
建议普通用户和root不要设置成为一样的
root 账户想要变成其他账户不需要密码,直接su
+用户名
su 用户名:从root变成普通用户
按ctrl
+D
退回普通用户
linux中有三种人
分别为:拥有者.所属组.other
拥有者——文件和文件目录的所有者:u---User(中国平民 法律问题)所属组——文件和文件目录的所有者所在的组的用户:g---Group(不多说)other——其它用户:o---Others (外国人)
sudo
指令提权
普通用户以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
4.Linux中文件的权限
4.1文件的属性权限
一般三种:
r.读w.写x.可执行权限
权限=用户角色(具体的人)+文件权限属性
4.2 掌握修改权限的方法chmod
一个文件的权限,谁可以修改?
a:文件的拥有者
b:root用户
命令chmod
功能:设置文件的访问权限格式:chmod [参数] 权限 文件名
运行chmod u-r test.txt
意味着就文件test.txt的拥有者的去掉r(减去r)权限
同理:
运行chmod u-r test.txt
意味着就文件test.txt的拥有者的加上r权限
总结:
更改所属组的权限用chmod g±?(r.w.x)
更改other的权限用chmod o±?(r.w.x)
多个"人"的权限操作:
对所有人进行操作
如:chmod a+r test.txt
4.3 对比权限的有无,表现
对于普通用户,自身要受到权限的约束,即使这个文件是自己的!
root 账号不受权限的约束,
权限存在的意义是保证普通用户的文件的一般安全性!
当拥有者没有权限,而所属组拥有权限时对其进行读,写,执行,操作时,并不能执行
对用户身份进行识别时,只识别一次。匹配成功就不往后匹配,优先匹配拥有者,如果匹配不成功,则匹配所属组。
在root情况下,更改文件的拥有者:chown +用户
+文件名
比如:此时我们是whb,我们把文件的拥有者改成root,首先匹配拥有者是否是root,很显然并不是所以接下来开始匹配所属组是否是whb,是然后匹配权限,权限允许,就可以进行操作。
在root情况下,更改文件的所属组:chgrp+用户
+文件名
4.4.相关权限的第二套做法
前面说过:
权限= 用户角色(具体的人)+文件权限的属性
如果你是一个普通权限者,想要把文件拥有者或者所属组给别人,但是权限不允许,就要用sudo提权。
操作方法:
sudo
+chown
+用户
+文件名
sudo
+chown
+用户1
+用户2
+文件名
(拥有者或者所属组全部改)
sudo
+chgrp
+用户
+文件名
把文件给别人是强制的!
权限的数字表示法
八进制表示:每种权限类型(读、写、执行)分别对应一个数字(4、2、1)。通过将这些数字相加来表示不同的权限组合。例如,chmod 755 表示所有者有全部权限(7),而组用户和其他用户只有读和执行权限(5)
chmod
+八进制
+文件名
5.文件类型
windows中是通过后缀名区分文件类型的。
但是Linux不通过后缀名区分文件类型(不是说,Linux不用后缀)
在Linux中是通过ls-l
结果的第一个属性列来区分的
比如:
-:普通文件,文本文件,可执行程序,库等都叫做普通文件
d:目录文件
b:块设备文件
c:字符设备文件
p:管道文件
l:链接文件
b:块设备文件
这里表示磁盘设备
c:字符设备文件
在显示器上输出的数字是以字符的形式输出的,显示器本质就是字符设备,又因为在LInux中,一切皆是文件,所以显示器也是字符设备文件,
当我们复制渠道,相当于多打开了显示器,
这时候我们继续查看会发现多了个1
秉承着Linux中一切皆文件的原则,我们向1中重定向(写入)内容,可以发现,另外一个屏幕输出了这个内容
当前屏幕为0,对0操作也输出了
p:管道文件
进行进程间的通信
我们把hello Linux输入到管道文件pipe
中,然后在另外一个文件中进行输入重定向,可以发现hello Linux在另外一个显示器中打印了
这就叫做进程间通信
l:链接文件
首先创建一个链接文件
运行这个文件可以发现,结果是原文件的内容
注意:
如何理解x
(可执行权限)
可执行权限 vs 可执行
可执行权限≠可执行
我们给文件test.c
加上x权限,并且运行,发现运行并不成功
可以执行 = 具有可执行权限+它就是一个可执行的文件。
如果我们要进入一个目录,需要什么权限?
目录的r权限:决定用户能否查看指定目录内的文件信息
目录的w权限:决定用户能否在指定目录内新建,修改,删除文件
目录的x权限:决定用户能否进入目录
如何理解?
文件=内容+属性
6. Linux创建文件时,为什么有默认权限
创建的起始权限是:0666,去掉x的
创建的起始权限是:0777,包含x的
我们可以用umask 0000
指令把umask清零。
这时候,我们创建的文件的权限就都是起始权限了
结语:
通过本篇博客的阅读,您现在应该对 Linux 权限系统有了一个全面的了解。从基本权限的分配到特殊权限的应用,从理解权限的数字表示法到实际操作中的权限管理,我们已经覆盖了所有关键方面。掌握这些概念不仅对于保护您的系统至关重要,而且对于优化工作流程、提高生产效率也有显著的益处。希望您能将这些知识应用到日常的 Linux 使用和管理中,更加自信和高效地处理各种权限相关的任务。