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

【LINUX权限】

目录:前言一、shell二、权限(一)文件权限(二)权限相关指令chmod(修改权限࿰


目录:


  • 前言
  • 一、shell
  • 二、权限
    • (一)文件权限
    • (二)权限相关指令
      • chmod(修改权限)
      • su 、sudo(提权)
      • root提权
      • chown 、chgrp
      • umask(掩码)
      • file

    • (三)目录权限

  • 三、粘滞位
  • 总结



前言
打怪升级:第21天
在这里插入图片描述



一、shell

shell是外壳的意思,它是Linux内核的外壳,是用户和内核(kernel)进行交流的桥梁,
在Windows中我们使用鼠标双击软件图标可以打开软件,在Linux中我们也可以通过输入指令来完成一样的操作,
而不管是鼠标双击、还是输入指令我们都没有直接与内核进行交流,而是通过shell这个“中介”进行的:
Shell的最简单定义:命令行解释器(command Interpreter),在我们输入指令时,shell会接收指令并检测指令是否有误, 如果有误,就会在半路上被打回来,内核都不知道有这条指令这回事儿,
而如果指令正确,shell就会将指令做进一步的转换,变成Linux内核能够识别的指令后传达给内核,再将内核的反馈传达给用户。
注意:shell是外壳程序的统称,上面所述的图形化界面和Linux中的bash都是shell的一种。
这里举一个示例:
在这里插入图片描述




下方两者等价:
1.Windows图形化界面
在这里插入图片描述
2.Linux的shell外壳
在这里插入图片描述




由于直接和内核进行交流并不容易也无必要,因此就有了shell的存在,大大简化了使用电脑的成本,
如果有朋友对shell有兴趣,可以参看下面这篇文章:什么是shell?



二、权限

权限 = 人 + 事物属性。

在Linux中人分两种:超级用户(root) 和 普通用户。
其中root只有一个,他是Linux中的超级用户,在Linux中可以做几乎任何事情,可以不受权限的约束;
但是普通用户则不然,普通用户可以有多个,作为普通用户,在Linux中只可以做在自己权限范围内的事情;
这里就可理解为视频软件中的vip和普通用户;
超级用户的命令提示符是"#“,普通用户的命令提示符是”$"。

人如果按团体分:拥有者,所属组,其他人,下方会进行介绍。

想要对文件进行相应的操作,不仅要看自己是否具有权限,同时也要确定该文件也具有相应的属性。
举个栗子:在视频软件中,有的视频免费,有的则限定只有vip可看,那么普通人只要充了vip就具有了观看该视频的权限;
而哪怕现在已经是vip了,他也不能够在视频软件中敲代码,因为视频软件本身就不具备这样的功能(这波属于公鸡下蛋)。


(一)文件权限



在这里插入图片描述




下方示例演示文件的r、w、x权限的作用:
在这里插入图片描述
注意:在上方图片中,我们说Linux内核区分文件的依据是文件属性中第一个字符,其中 ’ - ’ 代表文件,
那么是否文件后缀在Linux中就是没有意义的呢?
下面我们通过gcc来验证一下:
gcc为C语言编译器,能够编译链接c语言文件,并生成可执行文件。
在这里插入图片描述
我们可以看到,同一个文件,只有当文件后缀名为 ’ .c '时gcc才可以通过编译,
所以,虽然内核不看文件后缀名,但是在使用一些小工具时是需要通过后缀名来判断该文件是否可以处理的;
这点上Linux就和Windows有所区别,所以,你懂的。(Windows图形化界面通过文件后缀判断文件类型)
而且使用后缀名还有一个特点就是:方便我们自己看,方便我们通过后缀名来判断文件类型。




文件中的拥有者、所属组和other我们可以如此理解:
在学校练习做项目时,老师分配4人一小组合作完成一个项目,
那么此时各个项目的拥有者为:老师;
所属组为:分到一组的4名同学;
other为:这4名同学之外的所以人。



(二)权限相关指令


chmod(修改权限)



语法:chmod u/g/o/a +/-/= 权限
功能:给用户增加或取消对应权限;
介绍:



用户: u :拥有者 。 g:所属组 。 o:其他人 。 a:所有人。
操作: +: 增加权限 。 -:取消权限 。 =:赋予权限。
权限: r:读权限 。 w:写权限 。 x:执行权限。
权限既可以使用指令操作,也可以使用八进制数据操作。
在这里插入图片描述> 只有文件的拥有者和root可以修改文件权限。
在这里插入图片描述






su 、sudo(提权)



语法: su + 用户名(默认为root)
功能:输入用户(root)密码后,仅仅切换用户身份


语法:su -
功能:输入root用户密码后,重新登录root账号


语法:sudo (需要操作提权)
功能:以其他身份来执行


在这里插入图片描述
在这里插入图片描述在这里插入图片描述





root提权



root用户给普通用户提权操作:
在这里插入图片描述


补充



root添加和删除用户:
在这里插入图片描述



chown 、chgrp



语法:chown u1 file
功能:将file文件的拥有者改为u1,换句话说就是把文件给u1
语法:chgrp g1 file
功能:将file文件的所属组改为g1。
那么问题来了:当我们要把一个东西给其他人时需不需要经过他人的同意呢?
比如有人想要送给我们一口大大的黑锅,需不需要经过我们的同意? 答案肯定是需要的。
但是root用户就不同了,“你不要?拿着吧你~。”
所以root可以将文件强制给其他人,而普通用户也可以使用sudo提权,借用root的名义把文件强制交给其他人。
在这里插入图片描述





umask(掩码)



语法1:umask
功能:查看掩码
语法2:umask 权限值
功能:修改掩码
在这里插入图片描述
在这里插入图片描述





file



语法:file 选项 file/dir
功能:辨识文件类型。
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
在这里插入图片描述





(三)目录权限



在这里插入图片描述
在这里插入图片描述





三、粘滞位

在实际开发中我们会遇到合作开发的情况,大家都在一个工作目录dir下进行操作,
将所有人都分到一个小组中,那么dir的所属组就需要具备所有权限(r:查看目录中文件信息,w:创建、删除文件,x:进入目录);
而由于大家对这个目录都具有足够的权限,那就可能会有成员A误删成员B的文件的情况出现;
此时有同学会说:那就取消掉目录的 w 权限可以吗?
首先,这么做是可以解决删除文件的问题,但是这样也同时“解决了”创建文件的问题,那么以后有成员需要增加新的东西时则只能去找来
root大哥来帮忙了;
其次,当项目需要更新,以前的数据需要删除时,大家也同样无能为力,只能请求root。


那么为了解决这个问题(什么问题,当然就是有人误删其他人文件的问题喽~。),我们引入了粘滞位的概念;



语法:chmod +t dir
功能:设置粘滞位后,除了文件拥有者和root,其他人无法删除文件。
在这里插入图片描述






总结
  1. root就是Linux中的一把手,基本上做任何事儿都不需要与人打招呼,想干嘛就干嘛,权限也约束不住它。
  2. 使用sudo提权时需要输入的是自己的密码而不是root的,这并不表示任何人普通用户使用sudo后都可以“变成”root,因为在使用sudo之前你需要先被root加入“信任列表”。
  3. 文件的权限和目录的权限注意区分。
  4. 只能给目录设置粘滞位,因为创建和删除文件的权限是由目录的 w 权限决定的,但是设置了粘滞位后,表现则是:最后一个位置为T。






推荐阅读
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • Linux下C语言的几道经典面试题小结(分享)
    本篇文章整理了几道Linux下C语言的经典面试题,相信对大家更好的理解Linux下的C语言会有很大的帮助,欢迎大家探讨指正。1、如果在Linux下使用GCC ... [详细]
  • Howtobuilda./configure&&make&&makeins ... [详细]
  • linux下编译安装lnmp
    2019独角兽企业重金招聘Python工程师标准#######################安装依赖#####################安装必要的包:y ... [详细]
  • 之前项目在windows2003服务器上设置定时任务,每天执行。现在把项目移植到linux系统。也要在linux系统上设置计划任务。但是之前我从来没有做过。所以多得不 ... [详细]
author-avatar
星寴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有