Linux权限

2023-11-16

一、Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

1.1 用户间的切换
命令: su [用户名]
功能: 切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
从root用户切换到普通用户是不需要输入密码的。

1.2 使用sudo指令提升用户权限
sudo指令可以使普通用户短暂提升权限,执行一些需要root用户才能执行的命令。
语法为:sudo 要执行的命令。

如果普通用户想要使用这条指令,需要先将普通用户添加到信任列表。
使用root用户用vim打开文件/etc/sudoers进行添加:


在root后面添加一个你的用户名,后面照写即可

wq保存后,在信任列表中的普通用户就可以使用su命令短暂提升权限了。
也可以等学会使用vim再来添加,可以直接切换到roor用户进行相关操作。

二、Linux权限管理
2.1 文件访问者的分类(人)
文件和文件目录的所有者:u—User(文件拥有者)
文件和文件目录的所有者所在的组的用户:g—Group(文件所属组)
其它用户:o—Others

一般情况下,用户新建一个文件,文件的拥有者和所属组默认是这个用户自己。

2.2 文件类型和访问权限(事物属性)
通过ll可以查看详细的文件信息

2.2.1 文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

2.2.2 基本权限
读(r/4):Read对文件而言,具有读取文件内容的权限;
对目录来说,具有浏览该目录信息的权限
写(w/2):Write对文件而言,具有修改文件内容的权限;
对目录来说具有删除移动目录内文件的权限
执行(x/1):execute对文件而言,具有执行文件的权限;
对目录来说,具有进入目录的权限
“-”表示不具有该项权限
2.2.3 连接数
连接数对于目录文件,表示它的第一级子目录的个数。每个目录的默认连接数是2,因为每个目录下都有两个隐藏目录.和…分别表示当前目录和上一级目录,父目录里创建一个子目录,父目录的连接数增加1。
对于其他文件,表示指向它的链接文件的个数。

2.2.4 block块
在Linux系统中,文件由元数据和数据块组成。 数据块就是多个连续性的扇区(sector),扇区是文件存储的最小单位(每个512字节)。 块(block)的大小,最常见的是4KB,也就是连续8个sector组成,存储文件数据和目录数据。

所以,“total”的值,是指该目录下所有文件及其子目录所占用块数的总和。

2.3 文件权限值的表示方法
2.3.1 字符和八进制表示方法
字符表示方法    说明    八进制表示方法    二进制
r- -    只读    4    100
-w-    仅可写    2    010
- -x    仅可指向    1    001
rw-    可读可写    6    110
r-x    可读可执行    5    101
-wx    可写可执行    3    011
rwx    可读可写可执行    7    111
- - -    无权限    0    000
2.4.设置文件访问权限的方法
2.4.1 chmod
功能: 设置文件的访问权限
格式: chmod [参数] 权限 文件名
常用选项:

-R 递归修改目录文件的权限
说明: 只有文件的拥有者和root才可以改变文件的权限

chmod命令修改权限的两种方式

用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:

u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
如果要同时设置不同类用户的访问权限,则用户和用户之间要用逗号隔开。

2. 三位8进制数字
第一个8进制数字代表修改拥有者的权限,第二个代表所属组的,第三个代表其他用户的权限。
例如:


2.4.2 chown
功能: 修改文件的拥有者
格式: chown [参数] 用户名 文件名
常用选项:

-R 递归修改目录文件的权限
注意:
修改文件的拥有者需要root用户进行操作,若是普通用户则需要sudo进行权限提升。使用chown指令同时修改文件的拥有者和所属组,将拥有者和所属组的用户名用冒号隔开即可。

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

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


2.5 file指令
功能说明: 辨识文件类型。
语法: file [选项] 文件或目录…
常用选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容
2.6 目录的权限
目录的可读可写可执行代表的含义与文件是不同的:

读权限(r)表示具有读取目录结构列表的权限,可以看到目录中有哪些文件和子目录。一旦对目录拥有读权限,就可以在此目录下执行 ls 命令,查看目录中的内容。

写权限(w)对于目录来说,w 权限是最高权限。对目录拥有 w 权限,表示可以对目录做以下操作:

在此目录中建立新的文件或子目录;
删除已存在的文件和目录(无论子文件或子目录的权限是怎样的);
对已存在的文件或目录做更名操作;
移动此目录下的文件和目录的位置。
一旦对目录拥有 w 权限,就可以在目录下执行 touch、rm、cp、mv 等命令。
执行权限(x)目录是不能直接运行的,对目录赋予 x 权限,代表用户可以进入目录,也就是说,赋予 x 权限的用户或群组可以使用 cd 命令。

无论是r还是w,都得先进入目录,所以如果没有x权限,rw会报错:

2.7 粘滞位
一个用户拥有某目录的可写权限,就可以删除该目录当中的文件
而不论这个用户是否有这个文件的写权限.
这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉?


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

粘滞位解决了这个不合理的问题:

语法: chmod +t 目录名
功能: 给目录加上粘滞位。

加上粘滞位以后,目录的其他用户的可执行权限就由x变成了t

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

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

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

2.8 umask权限掩码
每个用户创建文件时,都有一个默认属性,这个属性由文件的原始属性减去权限掩码而生成。

新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。

功能: 查看或修改文件掩码
使用umask指令可以查看权限掩码:

超级用户默认掩码值为0022,普通用户默认为0002。
第一位代表特殊权限(suid:4、sgid:2、sbit:1),不是八进制的意思。一般将其设置为0,即系统默认。
可以看到umask后三位为002,转化成二进制位也就是000 000 010,这个1代表其他用户的可读权限,而凡事在umask中出现的权限,就要在默认权限中去掉。那是怎么减去的呢?

假设默认权限是default,则实际创建的出来的文件权限是: default & ~umask

同理可值,目录的初始创建权限为:775

权限掩码是可以被设置的,指令为 umask 权限的八进制表示


可以看到,将权限掩码设置为0777后,新创建的普通文件和目录文件就要去掉全部的权限。
权限掩码设置只在本次登录有效

2.9 关于权限的总结
超级用户(root用户)是不受权限限制的,权限是用来限制普通用户的。
粘滞位只针对目录设置,一般是限制others权限
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即- 使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
————————————————
版权声明:本文为CSDN博主「qq_52145272」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_52145272/article/details/123078415

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux权限 的相关文章

随机推荐

  • platform下的js分析_3

    目录 主要包含 CCSAXParser js CCSAXParser js preprocess class js CCClass js CCClass js中 使用较多的函数 主要包含 CCSAXParser js CCSAXParser
  • 开中断和关中断

    关中断和开中断其实就是像我们生活中的开关一样 关中断是为了保护一些不能中途停止执行的程序而设计的 计算机的CPU进行的是时分复用 即每个时钟周期内 CPU只能执行一条指令 在多道程序设计的环境下 就是我们通常所说的多个程序同时运行时 CPU
  • 如何在 Windows Server 上搭建 Git Repository Server?

    Git 作为开发工具之一 主要用于辅助团队开发的版本控制等 相似的工具大家也或许接触过 CVS 和 SVN 等 最为大家耳熟能详的或许就是 Github 和中国的 Gitee 了 但是网上的资料都围绕着 Linux 的环境 而没有过多考虑过
  • SVF——C/C++指针分析/(数据)依赖分析框架

    这篇文章包括 SVF介绍 SVF源码解读 SVF优势与不足 如何扩展改进 文章包括一些个人观点 若觉得有误请留言纠正 感谢 在这篇文章之前强烈推荐看我公众号之前推的一篇文章 CG0 2011 Flow sensitive pointer a
  • 虚拟机配置时间同步-ntp

    安装ntp yum y install ntp 验证是否安装成功 ntpd version 依次执行以下命令即可 ntpdate u ntp sjtu edu cn cp usr share zoneinfo Asia Shanghai e
  • 7 款炫酷的 VSCode 主题扩展

    关注后回复 进群 拉你进程序员交流群 作者丨小集 来源丨小集 ID zsxjtip 在 VSCode 中 安装自定义主题和图标包可以彻底改变 VSCode 的外观 VSCode 有数千种不同的包可用 在这里 我们推荐几个不错的主题扩展 Gi
  • 这是啥SQL,室友看了人傻了

    文章目录 SQLite适应常规基本应用场景 SQLite面对复杂场景尚有不足 SPL全面支持各种数据源 SPL的计算能力更强大 优化体系结构 SPL资料 可以在Java应用中嵌入的数据引擎看起来比较丰富 但其实并不容易选择 Redis计算能
  • 【数据结构】五种用于查询的数据结构 性能测试

    github项目地址 1 总体说明 本报告一共实现了五种用于查询的数据结构 二叉搜索树 二叉平衡树 二叉伸展树 跳表 数组 在完成各种数据的增删查功能的基础上 对于不同数据结构的查询效率进行了评测与对比 对空间性能进行了理论的分析 大致实验
  • AngularJS UI Router(ui.router)嵌套视图(Nested Views)

    1 dom结构 index html
  • UE_移动端测试使用

    教程流程 参照官方文档 android篇 https docs unrealengine com 5 1 zh CN android development requirements for unreal engine https docs
  • 电巢携手陕西理工大学“硬件研发岗位岗前项目实训”顺利开班!

    为深化校企合作 产教融合助力新工科建设 提升学生工程实践能力 电巢工程能力实训班按照不同岗位类别 匹配对应的企业岗位任职能力要求对学生开展分级培养 以产业需求为导向 培养创新型 应用型人才 7月27日下午3时 深圳电巢联合陕西理工大学物理与
  • dc-3 靶机渗透学习

    靶机修复 dc 3靶机可能会存在扫不到靶机ip的问题 可以参考下面这篇博客解决 编辑网卡配置文件时命令有点错误 vim etc network interfacers 改成 vim etc network interfaces Vulnhu
  • 【SpringCloudAlibaba】Nacos服务注册和配置中心配合nginx负载

    文章目录 概述 注册中心 POM YML 启动类 CAP 配置中心 POM YML 启动类 ConfigClientController Nacos中的匹配规则 三种方案加载配置 示例 集群部署 概述 部署模式 修改derby为mysql
  • Fiddler抓包工具配置+Jmeter基本使用

    目录 一 Fiddler抓包工具的配置和使用 局域网络配置 Fiddler配置 Fiddler抓包实例 二 Jmeter的基本使用 Jmeter的安装配置 第一个Jmeter脚本 一 Fiddler抓包工具的配置和使用 在编写网关自动化脚本
  • GCC入门详解

    一 基本概念 gcc编译源程序分为4个阶段 预处理 编译 汇编 链接 1 预处理阶段 将头文件的内容插入到源代码中 替换宏定义 去掉注释等 预处理后的文件后缀名为 i 2 编译阶段 编译器将预处理后的文件翻译成汇编代码文件 后缀名为 s 3
  • uni-app 连接逍遥模拟器 安卓模拟器 不显示 找不到 端口映射

    最近公司为了让我全面发展 给了一个小活练练手 由于Android和ios开发的小伙伴比较忙 我被拉来开发一个App 由于需要多端使用 最后选择使用uni app 来开发 刚开始都是在h5页面来调试 最后测试App的时候需要使用安卓模拟器来调
  • GameMode问题

    GameMode问题 1 缘由 初始化了两个关卡 一个登录关卡 一个内容关卡 配置了两个GameMode 分别在关卡中设置好了GameMode 通过调用OpenLevel实现关卡跳转 如下图 然 运行过程中 关卡完成了跳转 进入内容关卡后G
  • MusicGen一键音乐风格迁移

    想象一下 您可以随心所欲地创作轻快的乡村曲风 缠绵的蓝调 史诗般的管弦乐 视频BGM创作之路上 再也不会有任何阻碍 01 什么是MusicGen Meta MusicGen建立在强大的Transformer模型的基础上 追随ChatGPT等
  • Pcshare远控源码偏重分析(一)

    0x00背景 PcShare是一款功能强大的远程管理软件 可以在内网 外网任意位置随意管理需要的远程主机 该软件是由国内安全爱好者无可非议开发 在当时这款远控在大家应该比较熟悉了 VC编译器调出来的的小体积全功能木马 相比Delphi的灰鸽
  • Linux权限

    一 Linux权限的概念 Linux下有两种用户 超级用户 root 普通用户 超级用户 可以再linux系统下做任何事情 不受限制 普通用户 在linux下做有限的事情 超级用户的命令提示符是 普通用户的命令提示符是 1 1 用户间的切换