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