Shell命令与Linux操作系统:深入理解其原理和功能(2/2)

发布时间:2023年12月27日

?

在当今数字化时代,操作系统的安全性和稳定性对于个人用户和企业都至关重要。Linux,作为一个广泛使用的操作系统,其强大的文件权限系统是保护系统安全的核心机制之一。无论是在服务器管理、软件开发还是日常使用中,有效地管理和理解Linux的文件权限对于保障系统的安全和性能至关重要。

Linux文件权限系统的设计思想与Windows等其他操作系统有显著不同。它基于精细的权限控制机制,允许用户对文件和目录进行详尽的访问控制。这种灵活性和精确性使得Linux系统能够在多用户环境中提供高度的安全保障。

然而,Linux文件权限的复杂性也带来了一定的学习挑战。新手用户和甚至一些经验丰富的用户也可能在理解和应用这些权限设置上遇到困难。错误的权限设置可能导致安全漏洞,或阻碍用户有效地执行日常任务。

本文旨在提供一个全面且易于理解的Linux文件权限系统指南。我们将从最基本的文件类型和权限字符讲起,详细解释权限的结构和修改方法,并探讨目录权限的特殊情况及粘滞位的概念。无论你是Linux的新手还是希望深化理解的资深用户,这篇文章都将是你宝贵的资源。

通过这篇文章,我们希望使读者能够更加自信和有效地在Linux环境下管理文件权限,从而提升整个系统的安全性和效率。

基本概念

文件类型和权限

  • 文件类型:Linux中文件类型用单个字符表示,常见的有-(普通文件)和d(目录文件)。
  • 权限字符:Linux文件权限通过r(读)、w(写)、x(执行)三种基本权限表示,这九个字符分为三组,分别代表文件的拥有者(owner)、所属组(group)和其他用户(others)。

权限的结构

例如,rw-rw-r--表示文件的拥有者和所属组用户拥有读写权限,而其他用户只有读权限。

首先我们在每个文件开头都可以看到这样的字符

drwxrwxr-x? ? 或? ? -rw-rw-r --?

?其实我们数一下就可以知道这是10个字符 而开头只会有两种类型? ?-? ?和? d

这就涉及到文件的类型? ?-? :普通文件? ?d: 目录文件

那么剩下就有就个字符? 文件的权限属性一般有三种

这九个字符分为三部分,分别是:拥有者,所属组, other

所以可以得出? 权限 = 用户角色+文件权限属性

?我们每三个一组,拿上图举例: 去掉开头的-后 还剩余九个字符 为 rw-rw-r--??

33为一组,我们先看第一组,rw-? ?

第一个字符:是否具有读权限

第二个字符:是否具有写权限

第三个字符:是否具有可执行权限

所以他代表拥有者只有读和写的功能,不包括可执行权限

接下来我们从四方面进行讲解

权限修改方法

快速掌握修改权限的方法

  1. 使用chmod命令:这是修改文件访问权限最常用的方法。
    • 基本格式:chmod [参数] 权限 文件名
    • 用户表示符:u(拥有者)、g(所属组)、o(其他用户)、a(所有用户)
    • 权限操作:+(增加权限)、-(取消权限)、=(设置特定权限)

? ? ?2.? 使用chgrp修改所属组

  • 基本格式:chgrp [参数] 用户组名 文件名

功能: 设置文件的访问权限
格式: chmod [ 参数 ] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和 root 才可以改变文件的权限
chmod
① 用户表示符 +/-= 权限字符
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限
用户符号:??
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户

一个文件的权限,谁能修改?

a:文件的拥有者

b:root

首先我们修改user的权限

经过修改后,r权限已经被移除??同理 用 + 或? - 就可以修改 所属组是? g + 或 g -??

other就是? o+? 或 o-

若要同时修改,在u-后输入,分隔即可

?给所有人加上可以用 a? 代表all

??

2.文件类型和权限区分

当我们关掉所有权限后,发现任何操作都会显示 Permission denied? 权限被拒绝

??

可如果我们切换到root,可以发现,root相对于这个文件是other的身份,但是他可以执行任何操作

所以我们可以得出:root账户不受权限约束的!

?权限存在的意义:

保证普通用户的文件的一般安全性

我们继续研究还可以发现:linux不同于windows的是linux对用户身份进行识别只识别一次,当他识别成功用户与文件拥有者时,就不会继续匹配了。所以也就是说,即使我们的user在组里有可读写权限,但user本身没有rw权限,那么最终他也不会拥有读写权限,而windows恰恰相反,win的ntfs权限是叠加的。

我们还可以通过修改拥有者和修改所属组来达到我们想要的权限预期效果

b)chown
功能 :修改文件的拥有者
格式 chown [ 参数 ] 用户名 文件名
实例:
?chown user1 f1
chown -R user1 filegroup1
c)chgrp
功能 :修改文件或目录的所属组
格式 chgrp [ 参数 ] 用户组名 文件名
常用选项 -R 递归修改文件或目录的所属组
实例chgrp users /abc/f2

3.修改权限的第二套做法

? ? ? ? ? ? ? ??

sudo提权,给别人,但我们一般运行不了 ,建议直接使用su 切换到root 再赋予权限

但为什么没有修改other的指令呢?因为不需要,因为我们将user改了 group改了 other自然而然就变了

?八进制修改法

chmod 664 /home/abc.txt? 比如批量给所有人赋予所有权限就是 chmod 777 111.txt

4.文件类型

Windows是如何区分文件类型的呢?

:通过后缀名

而linux不通过后缀区分文件类型(不是说linux不用后缀名)

当我们写了一份a,c后,我们可以发现,我们后缀无论改成什么都能运行 ,,/a/exe? ./a.txt? ?./a.c都能运行

?那我么用什么来区分呢?

:ls-l 第一个属性列

-代表普通文件,文本文件,可执行程序,库等都叫做普通文件

d:目录文件

可是如果用gcc编译发现更改后缀就无法编译 linux不区分文件类型不代表linux工具不用后缀

我们在linux对于文件后缀的态度:

可以使用!

如何理解X权限?

可执行权限 ---? ? 可执行

能执行 = 具有可执行权限+本身是一个可执行文件

所以仅仅具有可执行权限不代表能执行。

可执行不等于能执行

唐钮不等式秒了


目录的权限

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

可读权限 : 如果目录没有可读权限 , 则无法用 ls 等命令查看目录中的文件内容 .
可写权限 : 如果目录没有可写权限 , 则无法在目录中创建文件 , 也无法在目录中删除文件 .
umask:权限掩码
于是 , 问题来了 ~~
换句话来讲 , 就是只要用户具有目录的写权限 , 用户就可以删除目录中的文件 , 而不论这个用户是否有这个文件的写权限.
这好像不太科学啊 , 我张三创建的一个文件 , 凭什么被你李四可以删掉 ?
[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld 
drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--. 1 root root 0 9月 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao
-rw-r--r--. 1 root root 0 9月 19 15:59 root.c
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y
[litao@localhost ~]$ exit 
logout
为了解决这个不科学的问题 , Linux 引入了粘滞位的概念?
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作
当一个目录被设置为 " 粘滞位 "( chmod +t), 则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
关于权限的总结
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目 , 即使目录仍然有 -r 读权限(这
个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
而如果目录具有 -x 权限,但没有 -r 权限,则用户可以执行命令,可以 cd 进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls 命令,但仍然没有权限读出目录下的文档

通过本文的探讨,我们得以深入了解Linux文件权限系统的核心原理和实践应用。这一系统不仅是Linux安全架构的基石,也是其灵活性和强大功能的源泉。理解和妥善运用这些权限机制,对于确保Linux环境中的数据安全和系统稳定性至关重要。

我们探讨了从文件类型的辨识、权限的基本结构,到权限修改方法的多样性,以及目录权限和粘滞位等高级概念。这些知识的掌握,将使我们在日常的Linux使用中更加得心应手,无论是进行系统管理、软件开发还是处理日常任务。

Linux文件权限的学习和应用是一个持续的过程。本文仅仅是这一广阔领域的入门导引。随着技术的不断进步和个人经验的积累,总会有新的挑战和发现。因此,我们鼓励读者持续学习,不断探索Linux这个强大工具的更多可能。

最后,我们希望这篇文章能够成为你在Linux文件权限管理旅程中的一盏明灯,指引你顺利地驾驭Linux系统,发挥其最大的潜力。记住,掌握Linux文件权限,就是掌握了保护你的系统和数据的关键

?

文章来源:https://blog.csdn.net/2301_77754590/article/details/135250128
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。