Liunx——权限

目录

shell命令以及运行原理

Linux权限的概念

Linux权限管理

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

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

a) 文件类型

b)基本权限

03.文件权限值的表示方法

a)字符表示方法

b)8进制数值表示方法

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

a)chmod

b)chown

c)chgrp

d)umask

e)file指令

目录的权限

粘滞位

关于权限的总结


shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。
  • 它可以在一定程度起到保护操作系统得作用

对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

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

帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。

Linux权限的概念

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

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

Switch user

命令:su [用户名]

功能:切换用户。

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

Linux权限管理

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

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

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

  1. ll显示的第一列的第一个字符,表明该文件的文件类型
  2. Linux下,不以文件后缀来区分文件类型(并不代表不可以使用,在系统层面没意义,给自己看的)
  3. Linux环境下的一些软件,是以后缀来区分文件类型的

 

a) 文件类型

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件,终端设备(例如屏幕等串口设备)

s:套接口文件

b)基本权限

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

03.文件权限值的表示方法

a)字符表示方法

b)8进制数值表示方法

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

a)chmod

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

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

常用选项:

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

chmod命令权限值得格式

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

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

用户符号:  

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

# chmod u+w /home/abc.txt

# chmod o-x /home/abc.txt

chmod a=x /home/abc.txt

②三位8进制数字

实例:

# chmod 664 /home/abc.txt

# chmod 640 /home/abc.txt


b)chown

功能:修改文件的拥有者

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

实例:

# chown user1 f1

# chown -R user1 filegroup1


c)chgrp

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

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

常用选项:-R 递归修改文件或目录的所属组

实例:

chgrp users /abc/f2

sudo chown user:group 文件名 ——直接更改文件拥有者和所属组


d)umask

功能:

查看或修改文件掩码

新建文件夹默认权限=0666

新建目录默认权限=0777

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

格式:umask 权限值

说明:超级用户默认掩码值为0022,普通用 户默认为0002。

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

实例:

# umask 755

# umask //查看

# umask 044//设置


e)file指令

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

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

常用选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。

-z 尝试去解读压缩文件的内容。

使用 sudo分配权限

(1)修改/etc/sudoers 文件分配文件

# chmod 740 /etc/sudoers

# vi /etc/sudoer

格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令

(2)使用 sudo 调用授权的命令

$ sudo –u 用户名 命令

实例:

$sudo -u root /usr/sbin/useradd u2

目录的权限

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

于是, 问题来了~~

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

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

[root@localhost ~]# chmod 0777 /home/

[root@localhost ~]# ls /home/ -ld

drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/

[root@localhost ~]# touch /home/root.c

[root@localhost ~]# ls -l /home/

总用量 4

-rw-r--r--. 1 root root 0 9月 19 15:58 abc.c

drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao

-rw-r--r--. 1 root root 0 9月 19 15:59 root.c

[root@localhost ~]# su - litao

[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件

rm:是否删除有写保护的普通空文件 "/home/root.c"?y

[litao@localhost ~]$ exit

logout

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

粘滞位

[root@localhost ~]# chmod +t /home/ # 加上粘滞位

[root@localhost ~]# ls -ld /home/

drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/

[root@localhost ~]# su - litao

[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件

rm:是否删除有写保护的普通空文件 "/home/abc.c"?y

rm: 无法删除"/home/abc.c": 不允许的操作

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

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

关于权限的总结

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

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

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

相关文章

蚂蚁面试题详细总结集锦

jdk1.7到jdk1.8 Map发生了什么变化(底层)? 1.8之后hashMap的数据结构发生了变化,从之前的单纯的数组链表结构变成数组链表红黑树。也就是说在JVM存 jdk1.7到jdk1.8 Map发生了什么变化(底层)? 1.8之后hashMap的数据结构发生了变化,从之前的单纯的数组链…

Redis分布式锁、Redisson原理

文章目录简单的分布式锁实现流程Lua脚本介绍Redisson实现分布式锁原理基本使用原理首先是lock加锁逻辑锁续命逻辑自旋重试逻辑释放锁唤醒其他阻塞线程逻辑RedLock红锁介绍与基本使用问题分布式锁性能提升简单的分布式锁实现流程 最初的版本,使用setnx命令加锁&…

python+appium+pytest自动化测试-参数化设置

来自APP Android端自动化测试初学者的笔记,写的不对的地方大家多多指教哦。(所有内容均以微博V10.11.2版本作为例子)在自动化测试用例执行过程中,经常出现执行相同的用例,但传入不同的参数,导致我们需要重复…

腾讯后端开发实习一面(24届)

毫无准备的腾讯一面,最近都在忙比赛去了,突然收到腾讯一面的邮件,直接没准备。。。 总结,除了Vue其他的都挺好,但是腾讯hr为啥Vue面我四个问题,不是面的后端开发吗,好难呀,都只能随…

java基础知识——12.小练习

这篇文章就是主要做一些算法小练习用的 1.求机票价格 题目如下: 需求:机票价格按照淡旺季,头等舱经济舱来收费。输入机票原价,淡旺季,头等舱或经济舱来获取机票价格 规则如下:旺季(5-10&…

【 Bean 作⽤域和⽣命周期 】

文章目录引用一、认识 Bean的作用域二、作⽤域定义三、Bean 的 6 种作⽤域四、Bean 原理分析4.1 Bean 执行流程4.2 Bean ⽣命周期引用 从前⾯的课程我们可以看出 Spring 是⽤来读取和存储 Bean,因此在 Spring 中 Bean 是最核⼼的操作资源,所以接下来我们…

你真的会写 git commit message 吗?

作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

用GPT-4写代码不用翻墙了?Cursor告诉你:可以~~

目录 一、介绍 二、使用方法 三、其他实例 1.正则表达式 2.自动化测试脚本 3.聊聊技术 一、介绍 Cursor主要功能是根据用户的描述写代码或者进行对话,对话的范围仅限技术方面。优点是不用翻墙、不需要账号。Cursor基于GPT模型,具体什么版本不祥&#…

Powershell脚本自动化登录网站的简单实例,命令行方式实现Http(s)的GET、POST请求

自动化登录网站的流程比较简单,如果不懂 Python、JavaScript、C 等编程语言,又没有安装这些编程语言环境软件,我们还要新的点子:用Windows系统自带的 Powershell 运行自编的脚本来实现。 PowerShell 是一种功能强大的自动化工具&…

大型软件外包项目的开发流程

与中小型软件项目相比,大型软件项目的管理和开发难度更大,需要在开发过程中严格执行软件的项目管理流程,不能有比较明显的问题,有问题也要及时解决。软件项目的开发过程环环相扣,如果在前流程中有明显问题,…

【fluent UDF】保留UDM变量Reserving UDM Variables Using Reserve_User_Memory_Vars-测试分析篇

一、问题背景 因为对Reserve_User_Memory_Vars这个函数比较陌生,在学习官方文档过程中发现难以理解,于是只好亲手在fluent 2022上测试一番。 直接上结论: 此保留函数运行一次后(设置GUI界面中的UDM数目第一次加载共享库成功&…

【从零开始学习 UVM】3.8、UVM TestBench架构 —— UVM Agent [uvm_agent]

文章目录 什么是 UVM Agent?所有的Agent Type是什么?如何确定UVM Agent是主动还是被动的?创建UVM代理的步骤一个UVM代理做什么?如何将UVM代理配置为主动或被动?一个UVM Agent例子推荐做法什么是 UVM Agent? 一个 Agent 将Sequencer、Driver和Monitor封装成一个单一实体,…

图像分类的划分数据,dataset和dataloader的实现

目录 1. 介绍 2. 主函数代码 2. utils 模块代码 2.1 划分数据集 2.2 可视化数据集 3. dataset 数据处理 4. collate_fn 5. other 1. 介绍 图像分类一般来说不需要自定义的dataSet,因为pytorch自定义好的ImageFolder可以解决大部分的需求,更多的…

springBoot --- mybatisPlus自动生成代码

mybatisPlus自动生成代码mybatisPlus自动生成代码pom.xmlapplication.yml自动生成代码测试主启动类生成目录结果使用插件 --- 版本要求:3.4.0 版本以上pom.xml更新mybatisplus插件版本mp报错‘AutoGenerator()‘ has private access in ‘com.baomidou.mybatisplus.…

Linux系统中使任务后台挂起不停止的命令

在使用远程SSH连接工具时,退出工具时任务也停止,相当于远程连接工具在系统开启了一个Terminal终端,服务也会随着终端的中断而停止。Linux系统也提供了服务基于后台运行的命令,是独立于终端的进程。 nohup Linux nohup Linux no…

【Python】仅7行代码实现自动化天气报时

文章目录前言一、实现步骤二、请求天气接口1.引入库2.读入数据3.钉钉通知天气预报总结前言 早上出门上班前,我总是忘记查看天气预报,以至于通勤路上下雨来了个措手不及。 回想起来,大部分人早上出门前的行为模式是固定的,那么有…

一个基于stream的EPICS IOC应用程序

本文将介绍如何开发一个基于stream的EPICS IOC应用程序,其将作为一个简单的基于消息的设备(用于EPICS stream练习的设备模拟程序_yuyuyuliang00的博客-CSDN博客中最后一个python程序模拟的设备)的IOC控制程序。 1) 按如下步骤建立这个IOC程序…

vb+access大气污染模型系统

数据模型就是按专业的要求,用数字方式描述自然界的事物或现象以及他们的关系。 我们通过对地区的具体数值和情况的观察,对大气质量状况做出分析,建立一个符合当地情况的大气污染模型,用来测量大气污染浓度,并根据污染…

在公司兢兢业业5年,被新来的自动化测试倒挂了薪资…

去年年中朋友左思右想从工作了 5 年的企业离职,离职原因很简单,待疲了,薪资也没咋涨过,新来的自动化测试钱比 Ta 高一倍。但离职 Ta 还是很忐忑的,在这个公司待得久了,自己会的东西一直是那些,业…

Python3爬虫图片抓取

在上一章中,我们已经学会了如何使用Python3爬虫抓取文字,那么在本章教程中,将通过实例来教大家如何使用Python3爬虫批量抓取图片。注:该网站目前已经更换了图片的请求方式,以下爬虫方法只能作为思路参考,已…