Linux 入门:权限的认识和学习

目录

一.shell命令以及运行原理

二.Linux权限的概念

1.Linux下两种用户

cannot open directory '.': Permission denied 问题

2.Linux权限管理

1).是什么

2).为什么(权限=角色+目标权限属性)

3).文件访问者的分类(角色)

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

5).怎么做

(1)chmod (设置文件的访问权限)

(2)用户只能更改自己的文件权限

(3)没有权限系统会拒绝访问

(4)确定权限信息的时候,系统会先确定用户是谁?拥有者,所属组还是other

(5)root不受权限约束

 (6)chown(修改文件的拥有者)

(7)umask(查看或修改文件掩码)

6).目录的权限

(1)粘滞位

三.关于权限的总结


一.shell命令以及运行原理


Linux严格意义上说的是⼀个操作系统,我们称之为“核心(kernel)“ ,但我们⼀般用户,不能直接使⽤kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

• 将使用者的命令翻译给核心(kernel)处理。

• 同时,将核心的处理结果翻译给使用者

shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果再通过内核运行出结果,通过shell解析给用户

二.Linux权限的概念


1.Linux下两种用户

超级用户(root)、普通用户

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

命令:su [用户名]

功能:切换用户。

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


cannot open directory '.': Permission denied 问题

若切换用户出现 cannot open directory '.': Permission denied的情况

命令:    su   -l    用户名

 若没有设置普通用户密码切换root账号设置一下

命令:     passwd  用户名 

2.Linux权限管理

1).是什么

权限本质是能或者不能做什么事

2).为什么(权限=角色+目标权限属性)

  • 控制用户的行为,防止错误发生
  • 权限首先限制的是角色
  • 权限要求目标必须具备对应的属性(比如:我不能在LeetCode上看电影)

3).文件访问者的分类(角色)

 • 文件和文件目录的所有者:u---User(中国平民 法律问题)

• 文件和文件目录的所有者所在的组的用户,所属组:g---Group(不多说)

• 其它用户other:o---Others (外国人)

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

文件类型:

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

基本权限:

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

5).怎么做

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

(1)chmod (设置文件的访问权限)

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

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

常用选项:

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

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

chmod命令权限值的格式:

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

用户符号:

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

(2)用户只能更改自己的文件权限

(3)没有权限系统会拒绝访问

(4)确定权限信息的时候,系统会先确定用户是谁?拥有者,所属组还是other

用户角色只确定一次,顺序是拥有者,所属组,other

(5)root不受权限约束

 (6)chown(修改文件的拥有者)

功能:修改⽂件的拥有者

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

(7)umask(查看或修改文件掩码)

功能:

  • 查看或修改文件掩码
  • 新建文件夹默认权限=0666
  • 新建目录默认权限=0777
  • 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建⽂件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的⽂件权限是: mask &(~umask)

格式:umask 权限值

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

  • 默认权限,有OS自主决定,无法在创建前进行修改----系统可配置,可以灵活满足需要的一种表现
  • 特殊情况下,配置umask,可以控制文件的默认权限,让我们的代码是可控的

6).目录的权限

可执行权限x,可读权限r,可写权限w

可执行权限x: 如果目录没有可权限, 则无法cd到目录中.

可读权限r: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.

可写权限w: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

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

这好像不太科学啊, 我张三创建的⼀个文件, 凭什么被你李四可以删掉?

一个文件是否能被删除,与文件本身无关,与文件所处的目录权限w有关 

(1)粘滞位

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

任何一个人都能在共享目录下创建,但是不能让非拥有者删除

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

  1.  超级管理员删除
  2.  该目录的所有者删除
  3.  该文件的所有者删除

三.关于权限的总结


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

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

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

相关文章

【笔记】计算机网络——数据链路层

概述 链路是从一个结点到相邻结点的物理路线,数据链路则是在链路的基础上增加了一些必要的硬件和软件实现 数据链路层位于物理层和网络层之间,它的核心任务是在直接相连的节点(如相邻的交换机,路由器)之间提供可靠且…

ngx_url_t

定义在 src/core/ngx_inet.h typedef struct {ngx_str_t url;ngx_str_t host;ngx_str_t port_text;ngx_str_t uri;in_port_t port;in_port_t default_port;in_port_t …

搜广推校招面经五十四

美团推荐算法 一、手撕Transformer的位置编码 1.1. 位置编码的作用 Transformer 模型没有显式的序列信息(如 RNN 的循环结构),因此需要通过位置编码(Positional Encoding)为输入序列中的每个位置添加位置信息。位置…

网络爬虫【爬虫库urllib】

我叫不三不四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲爬虫 urllib介绍 Urllib是Python自带的标准库,无须安装,直接引用即可。 Urllib是一个收集几个模块来使用URL的软件包,大致具备以下功能。 ● urlli…

LabVIEW棉花穴播器排种自动监测系统

一、项目背景与行业痛点 1. 农业需求驱动 我国棉花主产区,种植面积常年超250万公顷,传统人工播种存在两大核心问题: 效率瓶颈:人均日播种面积不足0.5公顷,难以匹配规模化种植需求; 精度缺陷:人…

解决diffusers加载stablediffusion模型,输入prompt总是报错token数超出clip最大长度限制

1. StableDiffusion1.5 在加载huggingface中的扩散模型时,输入prompt总是会被报错超过clip的最大长度限制。 解决方案:使用compel库 from diffusers import AutoPipelineForText2Image import torch import pdb from compel import Compeldevice torc…

jmeter配件元素

jmeter配件元素 CSV Data Set Config名词解释测试场景Recycle on EOF:False配置测试结果 Recycle on EOF:True配置测试结果 Sharing mode:All Threads配置测试结果 Sharing mode:Current thread group配置测试结果 Sharing mode:Current thread配置测试结果 HTTP Header Manage…

Navicat SqlServer 设置自增主键

Navicat是一款优秀的数据库管理工具&#xff0c;可以连接很多类型的数据库。使用它可以极大的提高工作效率。 Navicat 不能设置SqlServer自增字段&#xff0c;只能通过sql语句来实现 建表时设置 create table <表名> ( <字段1-主键> int identity (1,1) primar…

Elasticsearch搜索引擎 3(DSL)

Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;语句来定义查询条件&#xff0c;其JavaAPI就是在组织DSL条件。 1.DSL查询 叶子查询&#xff08;Leaf query clauses&#xff09;&#xff1a;在特定的字段里查询特定值&#xff0c;属于简单…

final 在 java 中有什么作用?

final 在 java 中有什么作用&#xff1f; 修饰变量 修饰基本数据类型变量&#xff1a; 当用final修饰基本数据类型变量时&#xff0c;该变量就变成了常量&#xff0c;其值在初始化后不能被改变。 final int num 10; // num 20; // 这行代码会导致编译错误&#xff0c;因…

Dubbo/Hession2序列化Immutable类型的集合异常问题

问题排查 根据堆栈信息可见&#xff0c;dubbo使用默认的hession2进行序列化时出现了异常&#xff0c;异常堆栈根原因为&#xff1a;null array 位于java.util.CollSer#readResolve方法中&#xff0c;即在序列化集合时&#xff0c;集合数组为空。 向上追溯jdk.internal.ref…

目标检测任务,如何区分两个相近似的目标

首先&#xff0c;要了解清楚检测的场景下&#xff0c;肉眼能否区分出目标的差异性。 如果可以区分&#xff0c;那观察数据周围背景的差异是否较大&#xff0c;可以先通过添加样本来提升模型的检测精度。添加样本时一定要注意&#xff0c;样本标注的准确性&#xff0c;样本的丰…

Java面试黄金宝典1

1. 8 种基本数据类型 整数类型 byte&#xff1a; 它是最小的整数类型&#xff0c;占用 1 个字节&#xff08;8 位&#xff09;。在一些对内存使用要求极高的场景&#xff0c;比如嵌入式系统开发、数据传输时对数据量有严格限制的情况&#xff0c;会使用 byte 类型。例如&#x…

OSGEarth

OSGEarth 基于 OpenSceneGraph 构建的一个扩展库&#xff0c;专门用于地球科学和地理信息系统&#xff08;GIS&#xff09;数据的可视化。它允许开发者创建逼真的三维地球模型&#xff0c;并在其上展示各种地理空间数据。 高端一点的表述 基于三维引擎osg开发的三维数字地球…

Word 小黑第34套

对应大猫34 设置第二页水印&#xff0c;取消第一页的&#xff1a;取消第二页页眉链接&#xff0c;删除第一张水印图片&#xff08;delete&#xff09; 调整水印图片&#xff1a;点开页眉页脚 双击图片 可以调整 邮件合并 -创建标签 横标签数3 竖标签5 表布局 -查看网格线 插…

2.5.1 io_uring

文章目录 2.5.1 io_uring1. 对比1. select、poll、epoll 对比表格2. 关键特性说明&#xff1a;3. 应用场景 2. 异步io1. 频繁copy2. 如何做到线程安全 3. io_uring1. 实现2. 关键点&#xff1a;3. 问题1. Reactor 与 Proactor 的三点不同2. epoll 与 io_uring 的区别 2.5.1 io_…

K8S学习之基础三十六:node-exporter部署

Prometheus v2.2.1 ​ 编写yaml文件&#xff0c;包含创建ns、configmap、deployment、service # 创建monitoring空间 vi prometheus-ns.yaml apiVersion: v1 kind: Namespace metadata:name: monitoring# 创建SA并绑定权限 kubectl create serviceaccount monitor -n monito…

为什么“连接断开可能导致锁未释放”

目录 两种典型场景可能导致锁未及时释放1. **数据库未及时检测到连接断开**2. **应用程序未正确处理事务** 为什么说“可能因连接断开导致死锁”&#xff1f;如何避免此类问题&#xff1f;总结 在大多数数据库实现中&#xff0c;如果持有锁的连接&#xff08;或会话&#xff09…

【实战指南】基于DevExpress轻量化主题实现WPF应用性能升级

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

【C++多线程】C++异步线程池提交任务的写法和解释

// 提交任务到线程池 template<class F, class... Args> auto ThreadPool::enqueue(F&& f, Args&&... args) -> std::future<typename std::result_of<F(Args...)>::type> {using return_type typename std::result_of<F(Args...)>…