Linux权限 - 概念与管理 | 文件权限的修改与转让 【详解】

news2024/11/23 12:27:22

 

目录

Linux权限

Linux权限的概念

 Linux权限的基础操作

(1).实现用户账号的切换 

(2).仅提升当前指令的权限

Linux权限管理

1、文件访问者的分类(人)

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

3、文件权限值的表示方法

4、文件访问\改变文件/目录的拥有者和所属组

修改文件的权限

修改文件的拥有者 

修改文件的所属组

 查看或修改文件权限掩码


Linux权限

Linux权限的概念

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

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

 添加普通用户:adduser

删除普通用户(一定要是root用户才可删除): userdel -r user

例子:

ls /home  查看所有用户

 Linux权限的基础操作

(1).实现用户账号的切换 

命令: su [用户名]

功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略), 普通用户切换成超级用户,需要输入root密码

示例:

(2).仅提升当前指令的权限

但可能某些情况下,你只想提升当前指令的权限,那么不必切换到超级用户。

语法: sudo 指令
功能: 提升当前指令的权限。
例如,我现在要以一名普通用户的身份,修改另一个普通用户的账号密码。

 

Linux权限管理

1、文件访问者的分类(人)

Linux系统中,人分三类:拥有者、所属组、其它用户

  • 文件和文件目录的拥有者: u---User
  • 文件和文件目录的拥有者所在的组的用户(所属组): g---Group
  • 其它用户: o---Others (文件拥有者和文件所属组之外的用户)

 注意 :

  1. 文件拥有者,文件所属组,其他用户是一种角色,root 用户和普通用户是具体的人,可能充当拥有者,所属组,其他用户
  2. Linux中,所有的用户都要隶属于某一个组,哪怕这个组只有你一个人(组名就是用户名)

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

 Linux系统不是以文件名后缀区分文件类型的,而是通过ll指令显示的第一个字符区分文件类型的!

文件类型: 

 十个字符表示了文件类型和访问权限,第一个字符表示文件类型,在Linux中,文件类型和后缀名无关,在Window中,是相关的。

d:目录文件
-:普通文件(文本,源代码,可执行程序,第三方动静态库)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

例子:

如图所示,第一个字符表示文件类型

基本权限:

Linux系统中,文件的权限属性分为三类:r(读)、w(写)、x(可执行)

  1. 读(r): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  2. 写(w): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  3. 可执行(x): execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  4. “—”表示不具有该项权限
     

后面九个字符,每三个字符为一组,分别表示文件拥有者,文件所属组,其他用户对文件操作的权限

r 读取权限
w 写入权限
x 可执行权限
- 无权限

例子: 

在这里插入图片描述
myproc.c 文件是一个普通文件,拥有者和所属组对应的权限是可读可写的,other对应的权限是可读的

3、文件权限值的表示方法

a)字符表示方法

r - -	仅可读
- w -	仅可写
- - x	仅可执行
r w -	可读可写
r - x	可读可执行
- w x	可写可执行
r w x	可读可写可执行
- - -	无权限

b)8进制数值表示方法

字符表示法中的每一个字符所在位置所表示的结果只有两种可能,要么为真,要么为假,而真可用1表示,假可用0表示,因此我们可以将这三个字符换为三个二进制位,进而换为一个八进制位进行表示。如下:

字符表示法	二进制	八进制数值表示法	说明
r - -		100			4			仅可读
- w -		010			2			仅可写
- - x		001			1			仅可执行
r w -		110			6			可读可写
r - x		101			5			可读可执行
- w x		011			3			可写可执行
r w x		111			7			可读可写可执行
- - -		000			0			无权限

4、文件访问\改变文件/目录的拥有者和所属组

 修改文件的权限

chmod

  • 
功能: 设置文件的访问权限
  • 格式: chmod [参数] 权限 文件名
  • 常用选项:R -> 递归修改目录文件的权限

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

法一:

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

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
  • 用户符号:
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户
     

 减去所属组和其它用户的读权限:chmod g-r,o-r file.txt

加上拥有者所属组其它人的所有权限:chmod u+rwx,g+rwx,o+rwx file.txt

 注意:root不受任何权限约束(其它用户指的是除root以外的其它普通用户)

法二:使用三位八进制数字

此法借用上文8进制数值表示权限的知识,如下:

chmod 777 file.txt         //加上所有权限

chmod 000 file.txt        //删除所有权限

修改文件的拥有者 

chown


功能:修改文件的拥有者

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

  1. 修改文件/目录的拥有者需要root用户进行操作,若是普通用户则需要进行权限提升。
  2. 可以使用chown指令同时修改文件/目录的拥有者和所属组,将拥有者和所属组的用户名用冒号隔开即可。

sudo强制将拥有者改为root

 这里并没有经过别人的同意,直接把文件给了root用户,原因就在于使用了sudo提升权限,相等于是以root的身份运行该程序,才有了强制更改的权限。不过这是针对普通用户修改文件权限需要用到sudo,如果是root用户可以直接更改不用sudo。 

使用chown可以连续修改拥有者和所属组:

修改文件的所属组

chgrp

  • 语法: chgrp 选项 用户名 文件名或目录名
  • 功能: 修改文件/目录的所属组。
  • 常用选项: -R 递归修改目录文件的所属组。

注意: 修改文件/目录的所属组也需要进行权限提升。
 

以root用户可以直接更改,以普通身份更改所属组,需要sudo提高权限;

拥有者的权限为root,想要改变所属组的可读权限需要sudo提升权限:

 查看或修改文件权限掩码

umask


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

新建文件夹默认权限=0666,新建目录默认权限=0777

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是:mask & ~umask
 

格式:umask 权限值

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

umask //查看
umask 044//设置

最终创建的目录的权限值为775,最终创建的普通文件的权限值为664(不同系统可能有差异)

此图很好的解释了为什么先前我们创建的目录权限为775,而普通文件的权限为664。 

 计算公式:最终权限 = 默认权限 & (~umask)

‘-’ 并非真正的减去,而是 “遮掩”

目录的权限:

        如果同时没有 rw 权限,允许进入,但是不允许创建和查看目录下的文件列表(注意:不是文件内容,文件的内容是否可以查看由文件自己的权限决定)

  • 说明进入文件操作的是文件的执行属性x

 粘滞位:

目录设置了粘滞位 t 后,作为 other 就无法随意地删除其他用户的文件,当然root仍然可以删除 

chmod +t [目录名]     # 添置粘滞位

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法基础(王卓)(28):排序概述(分类)、直接插入排序思路

目录 排序分类:(本章目录) 按数据存储介质:(学习内容) 内部排序: 外部排序: 按比较器个数:(学习内容) 串行排序: 并行排序&…

arduino学习笔记2

一.蜂鸣器输出实验 1.源代码 int buzzer2;//设置控制蜂鸣器的数字口对应板子上2口 void setup() { pinMode(buzzer,OUTPUT);//设置对应的输出模式 } void loop() { unsigned char i,j;//定义变量while(1) { for(i0;i<50;i)//输出一个频率的声音{ digitalWrite(buzzer,H…

2023年4月的12篇AI论文推荐

GPT-4发布仅仅三周后&#xff0c;就已经随处可见了。本月的论文推荐除了GPT-4以外还包括、语言模型的应用、扩散模型、计算机视觉、视频生成、推荐系统和神经辐射场。 1、GPT-4 Technical Report Sbastien Bubeck, Varun Chandrasekaran, Ronen Eldan, Johannes Gehrke, Eric…

密码技术知识总结

密码技术知识总结 1. 密码技术简介 对称密码&#xff1a;加密和解密时使用同一密钥的方式公钥密码&#xff1a;加密和解密时使用不同密钥&#xff0c;也称非对称密码单向散列函数&#xff1a;保证数据的完整性&#xff0c;检测数据是否被篡改过 散列值&#xff1a;又称哈希值…

k8s 控制器---Statefulset

1. Statefulset 控制器 StatefulSet 是为了管理有状态服务的问题而设计的。 1.1 什么叫有状态服务&#xff1f; StatefulSet 是有状态的集合&#xff0c;管理有状态的服务&#xff0c;它所管理的 Pod 的名称不能随意变化。数据 持久化的目录也是不一样&#xff0c;每一个 Pod …

Unity --- UGUI --- Rect Transform(矩形变换) --- 锚点及其相关应用

1.所有的UI物体都没有Transform组件&#xff0c;取而代之的是Transform组件的派生 --- Rect Transform(矩形变换) 2.Rect Transform和Transform一样都有旋转和缩放&#xff0c;它两之间的区别是&#xff1a; Rect Transform多了&#xff1a;a.Pibot轴心点&#xff1b;b.Ancho…

002 学习鸿蒙应用开发ArkTs语言

目录 一.ArkTs语言介绍 1.ArkTs语言概述 2.ArkTs语言特性 二.基本UI描述 1.基本概念 2.UI描述规范 无参数构造配置 有参数构造配置 属性配置 事件配置 子组件配置 三.状态管理 1.基本概念 2.页面级状态管理 State Prop Link Observed和ObjectLink数据管理 P…

​从底层技术分析如何调教你的ChatGPT?

相信很多人都已经在使用类ChatGPT的工具进行工作或者娱乐了&#xff0c;这里说的类ChatGPT的是指和ChatGPT相同或者相似功能的产品&#xff0c;包括国外的开源平替模型、百度的文心一言等&#xff0c;但是你真的会使用这些工具和应用吗&#xff1f;你使用的方法是正确的吗&…

Java ---内部类

&#xff08;一&#xff09;定义 将一个类 A 定义在另一个类 B 里面&#xff0c;里面的那个类 A 就称为 内部类 &#xff08; InnerClass &#xff09; &#xff0c;类 B 则称为 外部类&#xff08; OuterClass &#xff09;。广泛意义上的内部类一般来说包括这四种&#xff1…

【中级软件设计师】—(针对上午题)软件工程上(三十五)

【中级软件设计师】—&#xff08;针对上午题&#xff09;软件工程&#xff08;三十五&#xff09; 一、CMM 1 2 3 4 5 二、能力成熟度模型集成&#xff08;CMMI&#xff09; 6 7 8 9 三、软件过程模型 &#xff08;一&#xff09;、瀑布模型 &#xff08;二&#xff09;、V模…

第八章 项目进度管理

项目进度有8个过程 1、规划项目&#xff0c;进度管理&#xff08;计划&#xff09; 2、定义活动&#xff08;活动清单&#xff09; 3、排序活动 4、估算活动资源&#xff08;估算人力&#xff09; 5、估算活动时间 6、制定进度计划表 7、控制进度 规划项目进度管理 为实施项目进…

薪资17K是一个怎样的水平?来看看98年测试工程师的面试全过程…

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;本科&#xff0c;三年多测试工作经验&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;然而到今天都没有收到一份offer&#xff01;从年后就开始准备简历&#xff0c;年…

电容的基本知识

1、电容是电路中重要的元件&#xff0c;种类多、用途广&#xff0c;主要有插件类和贴片类两种。 2、电容主要特性参数:标称容量、耐压、误差、温度 2.1电容容量常用单位有微法《uF)、纳法《nF)、皮法《pF) 单位换算:1uF10^3nF10"6pF《电容的基本单位用法拉…

完成近4亿元C轮融资+自研底盘域控,本土线控制动玩家“拼”了

显然&#xff0c;线控制动赛道已经进入白热化竞争阶段。 高工智能汽车研究院监测数据显示&#xff0c;2022年中国市场&#xff08;不含进出口&#xff09;乘用车前装搭载线控制动系统&#xff08;One-Box&#xff0c;Two-Box&#xff09;上险交付合计497.39万辆&#xff0c;同…

java反序列化 cc链6 分析

前言 这里分析完cc1的两个以后&#xff0c;白日梦佬又介绍了cc6链&#xff0c;最主要的是这个链子不受jdk的版本影响&#xff0c;甚至不受cs版本的影响&#xff0c;这么说就是cs大部分都是可以使用cc链6&#xff0c;而且这个链子要简洁的很多&#xff0c;我一听这个好啊&#x…

springcloud-02

1、微服务概述 1.1 概念 1.2 架构演进 单体架构&#xff1a; 将业务的所有功能集中在一个项目中年开发&#xff0c; 打成一个jar包 优点&#xff1a;架构简单&#xff0c;部署成本低 缺点&#xff1a;耦合度高 分布式架构 按业务功能对系统进行拆分&#xff0c;每一个业务模块…

如何将项目提交到别人的仓库

大纲&#xff1a; 1、在gitee中克隆(clone)别人仓库的代码。 首先&#xff0c;进入别人的仓库&#xff0c;点击 克隆/下载 2、在你存放项目的文件夹下克隆你刚刚复制的代码 &#xff08;右键点击Git Clone即可&#xff09; 点击OK 就开始克隆了 克隆成功之后&#xff0c;文件上…

【HuggingGPT】Solving AI Tasks with ChatGPT and its Friends in Hugging Face

文章目录 所解决的问题&#xff1f;背景所采用的方法&#xff1f;取得的效果&#xff1f;问题所出版信息&#xff1f;作者信息&#xff1f;参考链接 所解决的问题&#xff1f; 当前的语言模型Large Language Models (LLMs)缺乏处理复杂信息的能力&#xff0c;像视觉&#xff0…

重学Java设计模式-行为型模式-中介者模式

重学Java设计模式-行为型模式-中介者模式 内容摘自&#xff1a;https://bugstack.cn/md/develop/design-pattern/2020-06-27-重学 Java 设计模式《实战中介者模式》.html#重学-java-设计模式-实战中介者模式「按照mybatis原理手写orm框架-给jdbc方式操作数据库增加中介者场景」…

Maven项目中出现【不再支持目标选项 1.5】的解决办法

1 快速解决【单项目】 本方法只适用于单个项目&#xff0c;新建项目使用maven还会出现问题。 在pom.xml配置&#xff1a; <properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target>&l…