热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文件权限的理解

shell命令以及运行原理和Linux权限详解入门小站 入门小站 2022-11-1521:50 发表于湖北收录于合集#Linux632个入门小站分享运维技巧及10k+Stars的

shell命令以及运行原理和Linux权限详解

入门小站 入门小站 2022-11-15 21:50 发表于湖北

入门小站

分享运维技巧及10k+Stars的开源项目

210篇原创内容

公众号


【Linux250个常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。




  1. shell 命令以及运行原理


Linux 严格意义上说的是一个操作系统,我们称之为 “核心(kernel)“ ,但我们一般用户,不能直接使用 kernel。而是通过 kernel 的“外壳” 程序,也就是所谓的 shell,来与 kernel 沟通。


如何理解?为什么不能直接使用 kernel?


从技术角度,Shell 的最简单定义:命令行解释器(command Interpreter)主要包含:


将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。

图片


注意:shell 是所有外壳程序的统称,bash 是一种具体的 shell。例如:centos 7 外壳程序 :bash




  • 对比 windows GUI,我们操作 windows 不是直接操作 windows 内核,而是通过图形接口,点击,从而完成我们的操作(比如进入 D 盘的操作,我们通常是双击 D 盘盘符. 或者运行起来一个应用程序)。

  • shell 对于 Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给 Linux 内核。反馈结果在通过内核运行出结果,通过 shell 解析给用户。

  • shell 运行原理

shell是做命令行解释的
对系统有危害性的命令会被阻止从而保护操作系统
其好处为子进程出现任何问题都不会影响父进程shell


  • 帮助理解:

  • 如果说你是一个闷骚且害羞的程序员,那 shell 就像媒婆

  • 操作系统内核就是你们村头漂亮的且有让你心动的 MM 小花。

  • 你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲

  • 所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花

  • 而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的 bash。



  1. Linux 权限

2.1 权限的概念



  • Linux 下有两种用户:超级用户(root)、普通用户。

  • 超级用户:可以再 linux 系统下做任何事情,不受限制

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

  • 超级用户的命令提示符是 “#”,普通用户的命令提示符是 “$”。

图片



  • 用户切换的命令

命令:su [用户名]

功能:切换用户。


例如,要从 root 用户切换到普通用户 user,则使用 su user。要从普通用户 user 切换到 root 用户则使用 suroot(root 可以省略),此时系统会提示输入 root 用户的口令。


图片



  • 切换到 root:用 su -,我们可以切换到 root 用户(此时输入 root 账号密码,密码是不会回显在屏幕上的)

  • 切换回普通用户:用 su - 用户名 切回普通用户,(此时不用输入密码,但是我们不建议这样切回,因为使用 su - 命令时,会创建更多的 bash 进程)

  • 推荐的切换回普通用户:输入 exit 或者敲击 Ctrl+d,回退到普通用户

2.2 权限管理



  • 什么是权限


权限本质上是决定某件事情,某人能否做。




  • 针对人:例如我是这间房子的主人所以我可以自由进出这个房子

  • 针对事物:我想去吃一台电脑、我想在面包上玩英雄联盟、看电影。面包能吃,但是电脑不能吃、你可以吃面包,但是不能吃电脑;这里面包括了两个属性。


文件受人的影响和文件受本身自身特点 (事物属性) 的影响 所以文件权限 = 人 + 事物属性


文件权限属性:r(读)、w(写)、x(执行权限)

人 (不是特定具体的人,而是一种角色):拥有者、所属组、other (其它)



  • 文件访问者的分类(人)

  • 文件和文件目录的所有者:u—User(中国平民 法律问题)

  • 文件和文件目录的所有者所在的组的用户:g—Group(不多说)

  • 其它用户:o—Others (外国人)

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

图片


使用命令 ls -l (ll) 显示的多列属性的第一列对应的字符来区分它的文件类型。


图片


不需要列出 other,因为不是拥有者和所属组的就是 other 了


帮助理解 - 拥有者和所属组


我们举个简单的例子,在一家公司内部,两个项目组,要完成同样的代码任务,他们之间彼此是互相竞争的关系,但是公司给他们提供的服务器只有一个,他们完成的代码要提交上去,这是你写的代码,肯定只是想让你和你的组员组长能看到,不想你的竞争对手组看到,这就产生了所属组的概念。


图片

文件类型



  • d:文件夹

  • -:普通文件

  • l:软链接(类似 Windows 的快捷方式)

  • b:块设备文件(例如硬盘、光驱等)

  • p:管道文件

  • c:字符设备文件(例如屏幕等串口设备)

  • s:套接口文件

图片



  • 基本权限

i. 读(r/4):Read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

ii. 写(w/2):Write 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

iii. 执行(x/1):execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

iv.“—” 表示不具有该项权限

图片

2.3 文件权限值的表示方法

字符表示方法








































Linux 表示说明Linux说明
r - -只读- w -仅可写
- - x仅可执行r w -可读可写
- w x可写可执行r - x可读可执行
r w x可读可写可执行- - -无权限

八进制数值表示方法






















































权限符号 (读写执行)八进制二进制
r41 0 0
w20 1 0
x10 0 1
r w61 1 0
r x51 0 1
w x30 1 1
r w x71 1 1
- - -00 0 0

图片

权限更改

$ chmod 777 text.c
$ chmod 000 text.c
$ chmod 640 text.c

图片

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

chmod



  • 功能:设置文件的访问权限

  • 格式:chmod [参数] 权限 文件名

  • 常用选项:

R -> 递归修改目录文件的权限

说明:只有文件的拥有者和 root 才可以改变文件的权限



  • chmod 命令权限值得格式

① 用户表示符 +/-= 权限字符



  • +: 向权限范围增加权限代号所表示的权限

  • -: 向权限范围取消权限代号所表示的权限

  • =: 向权限范围赋予权限代号所表示的权限
    用户符号:

  • u:拥有者

  • g:拥有者同组用

  • o:其它用户

  • a:所有用户

示例:

图片


注意:chmod 可以给拥有者,所属组,其他用户同时修改权限,中间用逗号隔开



如果要修改不是自己的文件的时候需要 sudo 临时权限提升或者直接切成 root 身份




  • sudo chmod 用户表示符 +/-= 权限字符 文件名

chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

实例:

$ sudo chown root test.c// 修改拥有者
$ sudo chown lighthouse test.c// 修改拥有者
$ sudo chown :lighthouse test.c// 修改所属组
$ sudo chown lighthouse:lighthouse test.c// 可以将拥有者、所属组同时修改
$ sudo chown root:root test.c// 可以将拥有者、所属组同时修改

图片

chgrp

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

实例:

$ sudo chgrp root text.c
$ sudo chgrp lighthouse text.c

图片

2.4 修改文件的掩码

umask

功能:查看或修改文件掩码

语法:umask 权限值

图片

新建文件夹默认权限 = 0666

新建目录默认权限 = 0777

图片


但是我们观察到,新建的文件和目录并不是默认的起始权限,这里是什么原因呢?



原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是 mask,则实际创建的出来的文件权限是:umask & ~umask


图片



  • 我们也可以通过修改文件的 umask 码值来修改文件的权限:

图片

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022,普通用户默认为 0002。

2.5 file 指令

file

功能说明:辨识文件类型。

语法:file [选项] 文件或目录…

常用选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。

-z 尝试去解读压缩文件的内容。

图片



  1. 目录权限

面试题:进入一个目录要什么权限?



  • 可读权限: 如果目录没有可读权限,则无法用 ls 等命令查看目录中的文件内容.

  • 可写权限: 如果目录没有可写权限,则无法在目录中创建文件, 也无法在目录中删除文件.

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

x
r
w


  1. 粘滞位

新发现:


就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.我创建的一个文件, 凭什么被你一个外人可以删掉


图片

结论

如果目录本身对 other 具有 w 权限,other 可以删掉任何目录下的东西
如果目录本身对 other 没有 w 权限,other 则不可以删除


我们的需求:other 可以在特定的目录下创建文件并写入,但是不想让任何人删除掉自己的文件


这里为了解决这个不科学的问题,Linux 引入了粘滞位的概念

粘滞位

语法:chmod +t 目录名

功能:给目录加上粘滞位

注意


只能对目录设置,一般是限制 other权限的,对设置粘滞位的目录,在该目录下,只能有文件的拥有者和 root 用户可以删除,其他人不能删除


示例:

图片


有多个人或者系统会有很多的临时数据,所有的临时文件都放在系统的 /tmp 目录下。所有的权限需要放开,但是只想让文件的拥有者删除自己的文件,这需要设置粘滞位




  1. 总结



  • 目录的可执行权限是表示你可否在目录下执行命令。

  • 如果目录没有 - x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目, 即使目录仍然有 - r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

  • 而如果目录具有 - x 权限,但没有 - r 权限,则用户可以执行命令,可以 cd 进入目录。但由于没有目录的读权限

  • 所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文档。


【Linux250个常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。


LinuxIO

5/()

(Win + Linux)

linux15pwd()

A、B、C、D、E类IP地址划分依据

图片

入门小站

分享运维技巧及10k+Stars的开源项目

210篇原创内容

公众号

收录于合集 #Linux

 632

上一篇哪款Linux才是更好的CentOS替代品下一篇A、B、C、D、E类IP地址划分依据

阅读 1000





 

 

 

写下你的留言

 

 

 



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Linux批量复制并重命名和批量复制文件到多个文件夹的方法
    本文介绍了在Linux系统下批量复制并重命名文件以及批量复制文件到多个文件夹的方法。通过使用模式匹配功能,可以方便地实现文件的批量操作。同时,还提供了有关shell语法中的()和{}的参考资料。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 树莓派Linux基础(一):查看文件系统的命令行操作
    本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
author-avatar
守护雪天_使0062_423
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有