当前位置: 首页 > news >正文

Linux权限

目录 

shell命令以及运行原理
Linux权限的概念
权限的管理
粘滞位
默认权限

shell命令以及运行原理

下图中的被叫作命令行,而后面则可以输入的则是命令+选项

广义上,Linux发行版 = Linux内核 + 外壳程序

狭义上,Linux = Linux内核

外壳程序相等于Windows中的gui,即窗口图形

bash是外壳程序的名称,而shell则是它所扮演的角色,比如李明是一名老师,bash相当于李明这个名字,而shell则相当于老师这个职业

如下图,shell有两个作用

传递请求指令,让OS去执行

保护内核

另外,shell也能创建子进程来进行执行具有风险的事情,程序运行起来就是一个进程,而shell本身也是一个进程

Linux权限的概念

Linux下的两种用户:超级用户(root)和普通用户

超级用户:具有非常高的权限
普通用户:具有一般权限,需要受权限的约束,比如创建用户就不能做,需要超级用户才行
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
su - :切换至root用户
su name:切换至普通用户
注意:最好不要将root用户和普通用户的密码设成一致,否则可能会造成对权限界限不清楚以及其它问题
如果要回到原来的用户,用su指令则会增加bash,
直接输入exit或Ctrl+D也能返回,且比su指令更好一些

权限:一件事情是否允许被特定的人做

权限 = 人+ 事物的属性

权限约束的是人,文件本身具有的天然的权限属性:r(读) + w(写) + x(可执行)

权限的管理

权限的操作则是修改人或者修改属性

Linux中的用户类型

拥有者:owner;所属组:group;其它:other

而之所以有所属组,则是为了方便组内协同,比如两组进行竞争,其中一组的一个人写了一段好的代码,希望组内的人来找bug,这时他就需要开放权限让别人看到,而又不能让另一组的人看到,这时就只需开放所属组的权限即可

用户的区别

拥有者,所属组,other:指的是一种角色的身份

root和普通用户:指的是具体的一个人,他能是拥有者,所属组或other

第一个字符标识文件的类型 ,Linux中,不以文件后缀作为区分文件类型的方式

文件分类

-:普通文件(文本、各种动静态库,可执行程序,源程序)

d:目录文件

c:字符设备文件:键盘与显示器

b:块设备文件:磁盘

p:管道文件:通信

l:链接文件:软连接

Linux下一切皆文件

如下图,有r则有读权限,为-则没有读权限,有w则有写权限,为-则没有读权限,为x则有可执行权限,为-则没有可执行权限 

注意:rwx的顺序是不能被改变的

修改权限

需要用到的指令是chmod,格式chmod  所属  +/-某权限  文件,所属就有拥有者,所属组和other,缩写为u、g、o,+/-表示添加权限或去除权限,文件就是要改变权限的文件,例子如下:

如下图,就是去除拥有者的读权限,然后就不能读取文件内容了

如下图,就是去除拥有者的写权限,可以继续写入,但是保存不了,所以只能不写退出

如下图,就是去除的所属组的权限 

如下图,a是all的缩写,能同时对三个所属进行修改

权限的另一种修改格式(数字)

比如是r和是-就表示有读权限和没有读权限,所以也可以用1/0来表示有无权限,而每个所属都有3个权限,这里就能用一个8进制数字表示,比如rw-变成r--,用数字就是100,即4,让rw-rw-r--变成r--rw-r--,则是464,如下图

权限对root用户的限制几乎无效,如下图,other无读和写权限,但root依然可以读和写

 

修改文件所属

改变拥有者是chown,改变所属组则是chgrp,而other则随着前两者变化,无需手动修改

将文件给别人,需要得到对方的同意,所以这里可以在前面加个sudo强制给别人,但暂时无法演示,这里直接将用户切换为root来做 

如下图,将文件的拥有者进行了改变

root则可以直接拿和给,不受此约束 

如下图,将文件的拥有者和所属组同时改变

进入目录需要的权限是可执行权限(x)

如下图,lesson目录没有了可执行权限,则无法进入目录,而ls因为有读权限,却可以查看目录内容,就看似显得很矛盾,但只能看到文件/目录名,属性看不到,这样看,就不觉得矛盾了 

粘滞位
如果目录本身对other本身具有w权限,那other可以删除任何的目录下的文件,否则,other不可以删除任何文件,这里因为sudo暂时无法使用,所以直接用root执行
这时就有一种需求:other可以在特定的目录下创建文件,并写入但是不想让任何人删掉自己的文件,这就看起来很矛盾,因为让你创建文件,就需要有w权限,而不让你删除文件,就不能有w权限,所以就有了粘滞位t权限,能满足上述情况,它可以理解为一种特殊的x
添加粘滞位,用root创建文件,因为暂时无法使用sudo,所以只能用root去做,同时无法删除文件,因为root权限太高,粘滞位对它无影响,所以还是可以删除文件,就无法演示

默认权限

新创建的普通文件或目录的权限是我们所看到的样子的原因
如下图,目录p1的权限是775,文件test.c的权限是664,首先普通文件的起始权限是666,而目录
文件的起始权限是777,而下方的0002则是权限掩码,凡是在umask中出现的,都应在起始权限中
去掉,002则是000 000 010,而777则是111 111 111,所以从右往左第二个1要变为0,方法则是
将002按位取反,再按位与777就得到了775,同理,普通文件就从666变为了664
同时权限掩码还能更改,如下图,不过只在本次登录有效 

相关文章:

  • 【深度学习】6-卷积过程中数据的结构变化
  • 牛客刷SQL
  • 如何高效的实现大型设备中卫星信号的传输和分配?
  • C语言描述数据结构 —— 二叉树(3)普通二叉树
  • Nginx rewrite
  • 【基于Arduino的垃圾分类装置开发教程一】
  • Synchronized 与 Lock 卖票问题、区别
  • 多疑型性格的危害,如何改变多疑型性格?
  • javaweb教师人事管理系统的设计
  • 【Swift 60秒】01 - Variables - 变量
  • 图像处理:单通道转为3通道
  • impala sql语法
  • 牛视系统源码定制,抖音矩阵系统定制开发。come here
  • 16 C++设计模式之职责链(Chain of Responsibility)模式
  • Kubernetes inotify watch 耗尽
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • chrome扩展demo1-小时钟
  • extjs4学习之配置
  • Javascript编码规范
  • LeetCode29.两数相除 JavaScript
  • Logstash 参考指南(目录)
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • uni-app项目数字滚动
  • 多线程事务回滚
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 三分钟教你同步 Visual Studio Code 设置
  • 数据结构java版之冒泡排序及优化
  • 一些关于Rust在2019年的思考
  • 由插件封装引出的一丢丢思考
  • mysql面试题分组并合并列
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #laravel 通过手动安装依赖PHPExcel#
  • #QT(智能家居界面-界面切换)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (蓝桥杯每日一题)love
  • (十三)Maven插件解析运行机制
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)SpringBoot3---尚硅谷总结
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Framework 服务实现监控可观测性最佳实践
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET简谈设计模式之(单件模式)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .Net语言中的StringBuilder:入门到精通
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • /*在DataTable中更新、删除数据*/
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [Angular] 笔记 18:Angular Router
  • [C#][DevPress]事件委托的使用