【Linux】权限的概念

1.Linux权限的概念

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

  • 超级用户:可以再linux系统下做任何事情,不受权限限制
  • 普通用户:在linux下做有限的事情,受权限设置。

windows下也有超级用户——以管理员身份运行应用即可——但是这个管理员权限不高

linux的root权限是非常高的

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

1.1.su

命令:

su [用户名]

功能:切换用户。

例如,

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

Linux所有用户,都要有密码,无论是root账号还是普通账号,都是如此 

我们的登录身份是root账号

我们先看为root用户 转换为普通用户——这个不要输入密码

再看普通用户转换为root账号——这个要输入密码 

当我们是普通用户时,我们想进入别的账号,我们就必须知道其他账户的密码

我们看看一个纯的su是什么意思 

这个password没有指明是哪个的,就是root的 

建议:root账号的密码和普通账号的密码要设置成不一致 

我们看看下面这个,发现su只是身份的改变,但是当前目录未变啊 

我们可以使用exit退出 

我们看看su -是干嘛的

我们发现啊,这个su -是用登录身份进入的root,和su的区别就明显了吧

 我们再看看sudo指令——sudo是单条指令获取root权限的指令

使用这条命令,我们需要在root账号里将普通用户添加到信任列表里,这个我们先不讲,我们等到使用vim的时候再讲,你们先自己去了解——http://t.csdnimg.cn/262DE

设置好了我们就可以使用sudo了,我们第一次使用sudo的时候需要输入root账号的密码

什么是权限?

  • 权限如权力,决定了你可以干什么,不能干什么
  • 权限如身份,有高低之分
  • 权限也和事物的“属性”相关

2.Linux权限管理

2.1.文件访问者的分类(人)

  • 文件和文件目录的所有者:u---User(中国平民 法律问题)
  • 文件和文件目录的所有者所在的组的用户:g---Group(不多说)
  • 其它用户:o---Others (外国人)

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

 我们可以看看

在windows下,文件后缀名是很重要的,比如.exe

Linux系统中文件名后缀——没有直接的意义。(当然不代表不用) 

例如:linux上面.exe改成.out类型没有任何问题,改成任何的类型都没问题

当然也有例外——gcc是一款编译器——是位于linux操作系统上面的一款软件——linux中不区别文件后缀,但是软件区分——导致使用gcc时.txt不能被编译,.c可以被编译

linux如何看待后缀:看用户需求,没太大作用啊

2.2.1.文件类型

  • d:文件夹/目录文件
  • -:普通文件(包括可执行文件,文本文件,库等常见的文件)
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如显示器,键盘等串口设备)
  • s:套接口文件

 第一个字母是d或者-,明白了吧

2.2.2.基本权限

  • 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 可执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • “-”权限只有3种,且按读写可执行权限的位置是确定的,-代表对应的权限位置不具有该项权限

第2-4个字符代表文件所有者(通过whoami指令查找 )的权限 ,前两行是rwx——代表可读可写可执行

后面两行是rw-,代表可读可写不可执行

第5-7是所属用户组的权限,在后面是其他用户的权限 

  • 文件所有者:创作者——上面的第一个的zs_108
  • 所属用户组:和创作者同一个组的权限——上面的第二个的zs_108
  • 其他用户: 不是上面两个的就是其他用户

上面这一堆用户和linux中的root,普通用户是什么关系呢?

root,普通用户相当于具体的人

而文件所有者,所属用户组,其他用户相当于一种身份

人可以有各种身份,用在这里也是一样的意思——root,普通用户可以是上面三种身份的任何一个

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

3.1.chmod

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

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

常用选项:

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

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

权限的认证只执行一次,按拥有者—>所属组-->其他成员的顺序来认证

chmod命令权限的格式

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

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户符号:  

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

我们举个例子

我们对log.txt文件进行权限修改——其他用户增加可读权限 

 很明显了啊

删除我就不提了,太简单了

还有另外一种用法

再看一个例子

 ②三位8进制数字

 我们看看几个例子便可知道怎么使用了

太简单了 

3.2.chown

功能:修改文件的拥有者——不管你同不同意,我都要修改

格式:

chown [参数] 用户名 文件名

这个是要文件所有者才可以修改的 

我们换成root账号来看看 

 

这个时候,我们root账号就不能修改这个a.c的属性了,因为root不再是文件拥有者了 

3.3.chgrp

功能:修改文件或目录的所属组

格式:

chgrp [参数] 用户组名 文件名

常用选项:

  • -R 递归修改文件或目录的所属组

 我们上面修改了文件所有者,我们现在可以修改文件所属组

3.4.umask

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

  • 新建文件夹默认权限=0666(八进制)——110 110 110(二进制)
  • 新建目录默认权限=0777(八进制)——111 111 111(二进制)

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。

  • 其实给普通文件的默认权限是664
  • 目录文件的默认权限是775

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

格式:umask 权限值

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

凡是在umask里出现的权限,不会出现在最终的文件权限里出现!

我们看个例子——全部转换为二进制

110 110 110   起始

000 000 010   umask

110 110 100   得到的默认权限——即默认权限变成了664
111 111 111  最初的默认权限

000 000 010  umask

111 111 101  最终的默认权限——775

最终权限=起始权限&(~umask)

 我们可以让所有文件都没有读和可执行的权限

对应权限是101(二进制)   也就是5(八进制)

这样子我们就可以让所有文件都没有读和可执行的权限了

linux里面很完美的一个设计

3.5.file指令:

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

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

常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。 

4.目录的权限

决定一个文件是不是可以删除,不由它自己的权限设置,而是它所处的目录的权限决定

  • 可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • 可写权限(w): 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
  • 可执行权限(x): 如果目录没有可执行权限, 则无法cd到目录中.

 补充:我们看看普通目录的家目录的默认权限,我们发现啊,所属组和其他成员都没有权限以任何形式访问到我们的家目录

有的时候,我们多个用户想进行文件数据的共享,所以我们不能在家目录里共享文件

我们应该换一个目录来共享

问题来了~~

换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写 权限. 

这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下. 

首先我们需要弄到两个普通账号来(我这里是同一个root账号里的),我这里是zs_108和lxl_113,两者都可以访问根目录

我们换root账号,在根目录里面创建一个shared目录,把它的权限全设置成rwxrwxrwx

可读可写可执行

我们回到普通用户那里去

我使用zs_108进入这个shared文件夹里创建一个文件a.txt

我们看这个a.txt的权限,对于其他用户(bcq_113)来说是只能读的

但bcq_113却直接把a.txt删了!!!!!

这个是因为shared的权限是rwxrwxrwx,有写权限,就有权删除了

但是我们把写权限去掉了,我们就不能在这个共享目录里面创建任何文件了

这一点也不合理!!!!!

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

4.1粘滞位——(chmod +t)

这个一般用于共享目录啊!!!!

这样子大家就能进行对自己文件的增删改,但是不能对别人是文件的任何修改

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

  • 一、超级管理员删除
  • 二、该目录的所有者删除
  • 三、该文件的所有者删除

我们接着回答上面那个问题

我们将shared目录设置粘滞位 (注意那个rwt)t是一种特殊的权限

回到zs_108账号,我们进入shared目录,创建一个新的b.txt

 我们换成bcq_113账号再来对它进行删除

不让你删除了

5.关于权限的总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读 权限
  • 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/666132.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车IVI中控开发入门及进阶(二十三):i.MX8

前言: IVI市场的复杂性急剧增加,而TimeToMarket在几代产品中从5年减少到2-3年。Tier1正在接近开放系统的模型(用户可以安装应用程序),从专有/关闭源代码到标准接口/开放源代码,从软件堆栈对系统体系结构/应用层/系统验证和鉴定的完全所有权,越来越依赖第三方中间件和平…

liunx文件系统与日志分析

文章目录 一、基本概念二、日志分析三、实验 一、基本概念 文件是存储在硬盘上的,硬盘上的最小存储单位是扇区每个扇区大小事512字节 inode:元信息(文件的属性 权限 创建者 创建日期) block:块 连续八个扇区组成一块…

JSON Web Token

JWT 什么是JWT JWT(JSON Web Token)是一种用于在各方之间作为JSON对象安全地传输信息的开放标准(RFC 7519)。该信息经过数字签名,因此是可验证和可信的。JWT 可以使用HMAC算法或使用RSA的公钥/私钥对进行签名 JWT的…

HackTheBox-Machines--Nineveh

Nineveh测试过程 1 信息收集 NMAP 端口扫描 80 端口 80端口是服务器的默认页面,无可利用功能点,源代码没有可利用的敏感信息 目录扫描 1.http://10.129.25.123/department 访问/department目录跳转到登录页面,尝试暴力破解,获取…

系统架构设计师【第5章】: 软件工程基础知识 (核心总结)

文章目录 5.1 软件工程5.1.1 软件工程定义5.1.2 软件过程模型5.1.3 敏捷模型5.1.4 统一过程模型(RUP)5.1.5 软件能力成熟度模型 5.2 需求工程5.2.1 需求获取5.2.2 需求变更5.2.3 需求追踪 5.3 系统分析与设计5.3.1 结构化方法5.3.2 面向对象…

stm32启动文件

启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作: 初始化堆栈指针SP_initial_sp 初始化PC指针Reset_Handler 初始化中断向量表 配置系统时钟 调用C库函数_main初始化用户堆栈,从而最终调用main函数去到C的世界 …

虚拟现实环境下的远程教育和智能评估系统(七)

在后端代码的基础上,利用vue框架设计前端界面,至此,用户界面基本成型,后续添加其他进阶功能; 另,前后端交互相关: UsersVO.java package com.roncoo.education.user.feign.interfaces.vo;impor…

【Unity Shader入门精要 第11章】让画面动起来(一)

1. Unity Shader中的时间变量 Shader控制这物体的显示,当向Shader中引入时间变量后,就可以让物体的显示效果随时间发生变化,以实现动画效果。 Unity中常见的时间变量如下表: 变量类型描述_Timefloat4(t/20, t, 2t, 3t)&#xf…

二维数组传参时不用二级指针接收

先放结论: 1. 二维数组数组名指向的类型是 int [x] 类型,int** 指针指向类型是 int* ,如果用二级指针接收会导致访问错误,因为 int [x] 类型和 int* 类型不同。 2. 指向什么类型的指针1就按照该类型的字节数1移动。 最近在学…

unity2D跑酷游戏

项目成果 项目网盘 导入资源包 放入Assets文件Assets资源文件 游戏流程分析 摄像机size调小,让图片占满屏幕 人跑本质,相对运动,图片无限向右滚动 图片720,缩小100倍第二个图片x为7.2每unit px100两张图片刚好挨着连贯 空对象Bg…

Cloudflare的增长正在放缓,股价过高,未来将进一步下跌

来源:猛兽财经 作者:猛兽财经 一、Cloudflare公司介绍 1.1、Cloudflare(NET)是一家全球性云平台,总部位于美国旧金山,在英国伦敦亦设有办事处。 Cloudflare以向客户提供网站安全管理、性能优化及相关的技术支持为主要业务。通过基…

职场中,那些35岁以上的测试猿到底去哪了?

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

收银系统源码--商超水果生鲜店收银硬件要怎么选择?

新零售时代,越来越多的商家开始明白,除了要做好店铺定位、店面装潢和商品的设定,还要选购最适合店铺运营需求的收银机和硬件,好的收银机和收银系统可以帮助商家做好收支统计、库存管理、人员配置。客户服务等工作。现在的智能收银…

解决bind error: Address already in use

是端口复用问题 产生原因 程序突然退出系统但是没有释放端口 问题解决 首先通过 //显示进程信息 ps -la //杀死相关进程 kill -9 xxxx然后添加socket设置 int on1; if(setsockopt(lfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on))<0){perror("setsockopt")…

RocketMQ学习(2) 深入学习

RokcetMQ的介绍和基础知识见这篇博客——RocketMQ学习(1) 快速入门 本篇为上一篇的深入学习&#xff0c;很多基础知识不再赘述。 目录 消息重复消费问题(去重;幂等)布隆过滤器 重试机制死信消息 SpringBoot集成RocketMQ集成SpringBoot发送不同消息模式(同步消息)异步消息单向消…

Kafka系列之高频面试题

基础 简介 特点&#xff1a; 高吞吐、低延迟&#xff1a;kafka每秒可以处理几十万条消息&#xff0c;延迟最低只有几毫秒&#xff0c;每个Topic可以分多个Partition&#xff0c;Consumer Group对Partition进行Consumer操作可扩展性&#xff1a;Kafka集群支持热扩展持久性、可…

OFA one-for-all 通用多模态预训练模型

使用简单的序列到序列的学习框架 统一模态 &#xff08;跨模态、视觉、语言等模态&#xff09;和任务&#xff08;如图片生成、视觉定位、图片描述、图片分类、文本生成等&#xff09; ICML 2022&#xff1a; 《OFA: Unifying Architectures, Tasks, and Modalities Through a…

2024最新 Jenkins + Docker 实战教程(六)- Jenkins配置邮箱接收构建通知

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

Redis常用命令大全

目录 1、五大数据类型的基本命令 1.1 字符串 1.2 列表 1.3 哈希 1.4 集合 1.5 有序集合 2、与key相关 2.1 查看redis数据的类型 2.2 查看当前redis库中的所有key命令 3、除了五大数据类型外常见命令 3.1 键操作 3.2 服务器操作 3.3 连接操作 3.4 发布/订阅 3.5 事…

vue canvas绘制信令图二、

需求:根据信令图标题的每2个区域之间有无内容来给宽度,无内容区域的间隔要小一些。有内容区域的间隔大一些。 先上效果图: 从上面的效果图可以看出无内容区域的间隔宽度变小了很多。 1、先设置一个最先间隔的宽度:minGapX: 200, 2、然后设置一个 存放有计算后的间隔数据:…