Linux基本权限

news2024/11/28 18:45:23

文章目录

  • 前言
  • 一、Shell命令以及运行原理
    • 1.Shell的定义
    • 2.为什么用户不能直接使用kernel?
  • 二、Linux中的权限
    • 1.权限是什么?
    • 2.如何操作权限呢?(怎么修改权限)
      • 1. 修改文件属性
      • 2. 修改文件角色
    • 3.为什么要有权限
  • 三、粘滞位
    • 1.背景
    • 2.具体操作
  • 总结


前言

本文介绍了Shell的相关概念以及Linux中的基本权限。


一、Shell命令以及运行原理

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

1.Shell的定义

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

  • 将使用者的命令翻译给内核(kernel)处理。
  • 将内核的处理结果翻译给使用者。
    对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符或者运行起来一个应用程序)。(图形化界面)
    shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。(命令行)

Shell是外壳的统称。
centos 7中的Shell是bash。
Shell是包裹在系统外的一层软件层:
在这里插入图片描述

2.为什么用户不能直接使用kernel?

  1. 用户不擅长直接与操作系统打交道(要用户直接去和硬件进行交互比较困难),所以需要一个中间介质来辅助
  2. 用户可能会发布非法任务给系统,导致内核挂掉。为了保护内核,就需要用Shell先对任务进行分辨,再将合法的任务翻译给内核(非法的任务会被拒绝)。当然Shell为了保护自己,它执行用户的任务也是将任务分配给子进程执行,即使子进程挂掉也不会影响Shell。

二、Linux中的权限

首先Linux中存在两类用户:
root用户:超级管理员。(要注意保管好root密码)
普通用户:受权限约束的用户。
从普通用户切换为root用户:su / su -(前者在当前路径下登录,后者重新在家目录进行登录)
【需要root密码】
退出root用户:exit/Ctrl + d
从root用户切换为普通用户:su (用户名)
【不需要密码】
如果是普通人需要使用root的命令但是不想将身份切换为root可以使用指令:sudo + (命令)
需要输入用户的密码(十到十五分钟内不需要再次输入密码)
作用是短暂提权。
sudo whoami得到的是root的身份(以root身份执行对应的命令)
要能使用sudo命令,前提是当前用户是受系统信任的命令,要被添加到/etc/sudoers。(相当于白名单用户)
给受信任的用户提供最少的障碍。

1.权限是什么?

权限:一件事情是否被谁(该角色是否被限制)做(是否有对应属性),即权限是约束两个东西,一个是人,一个是属性。
权限是约束人的(一个或某些群体)。
目标对象(电影网站,音乐app等),本身没有该对应的属性(业务),比如在音乐app看电影。
举个例子:某些视频软件,它的部分视频是需要视频会员才能进行观看的。
Linux中的角色:拥有者(owner,只能是具体的某个人)、所属组(grouper)、其他人(other)。
用户(具体的人)和角色(身份)之间是互补的不是冲突的,一个人可以有多种身份。
举例:
文件 = 内容 + 属性。
属性:

  1. 一个文件将用户分为三种即上面的三种角色。
  2. 文件后缀

windows下文件有后缀(例如.txt等),标识它的文件类型。
Linux下的文件的文件类型是与后缀无关的(即,可以给文件取任意的后缀,但是不影响文件内容),因此我们不能使用后缀来区分文件类型,即使使用后缀,也只是给用户提示文件类型(后缀也是文件名的一部分)。

注意:Linux本身不根据文件后缀对文件做区分,但是gcc等工具(在Linux中也是一个文件)它们对文件后缀是有要求的。
那么Linux中如何对文件类型做区分呢?
是根据文件属性。ls -l显示的文件各列属性中的第一行列用来区分文件类型:

- 普通文件(源文件、库文件、可执行程序、文档压缩包等)
d 目录文件
c 字符设备文件(键盘、显示器)
b 块设备文件(磁盘)
l 链接文件(类似windows中的快捷方式)
p 管道文件
  1. 一个文件有三种权限:读文件(r)、写文件(w)、执行文件(x)
    文件的属性信息和文件的角色(角色是由具体的人扮演)对应起来(如果没有对应的权限,就是‘-’)。
    在这里插入图片描述

2.如何操作权限呢?(怎么修改权限)

只有拥有者或者root用户可以对文件权限进行修改

1. 修改文件属性

  1. 直接给角色增删权限
chmod u-r (文件名)#给拥有者去掉读权限
chmod u+x (文件名) #给拥有者加上执行权限
chmod g-rwx (文件名) #将所属组所有权限去掉
chmod o+rwx (文件名) #将其他人加上所有权限
chmod u+r,g+rwx,o-wx (文件名) #多个操作一起也是可以的
chmod a-rwx (文件名)#将所有人的所有权限全部去掉

注意:拥有者与所属组的权限是不相关的,拥有者的权限只是自己角色的权限。

  1. 八进制方案
    文件属性是用1/0表示的(1表示有该权限,0表示没有该权限)
rwx rwx rwx
111 110 000
  7     6    0

这种方案叫做ugo±rwx方案,即八进制方案
因此我们修改属性也可以用指令:

chmod 660(八进制) (文件名)#修改属性

2. 修改文件角色

  1. 文件拥有者修改
    可以将文件给别人,但是需要用root的权限强制给别人(因此也可以将文件要回来)
sudo chown (用户名) (文件名)
  1. 文件所属组修改
sudo chgrp (用户名) (文件名)
  1. 同时修改拥有者和所属组
sudo chown (用户名):(用户名) (文件名)

3.为什么要有权限

便于系统进行安全管理。

  1. 为什么我们创造出的文件的默认权限是我们所看到这样?
    在这里插入图片描述
    首先,LInux规定:
    目录: 起始权限为777;
    普通文件: 起始权限为666.
    其次,系统还有系统掩码umask,凡是在umask中出现的权限都必须在起始权限中去掉!因为umask 为0002 =>000 000 010,所以我们创造出的文件的默认权限就是这样了。

去掉指的是什么?是做减法吗?
答:不是,最终权限 = 起始权限 & (~umask)。
umask:默认要去掉的权限位是1,要保留的位是0
~umask:要去掉的位是0,要保留的位是1,因此用它与起始权限按位与就可以了

注意:如果我们要进入一个目录我们需要什么权限?
答:x权限,即执行权限。
这就是为什么目录的默认起始权限位777。

三、粘滞位

1.背景

Linux系统中有很多用户,有时候会有一种特定情况需要我们在一个公共目录下进行临时文件的操作(增删查改)。
具体某个用户的目录是不能被别人访问的(没有权限),因此需要一个公共的目录,大家一起进行文件操作。
由于普通用户没有权限,因此一般这个目录是由root进行创建的。
刚这个目录的权限必须是777,以为目录的拥有者和所属组都是root,其他人是others,为了让其他人能在该目录下进行文件操作,必须将权限全部打卡。

2.具体操作

粘滞位是一种特殊的权限,由root用户进行设置,给others设置该权限。
在一个公共目录下,我们都有对目录的rwx权限,因此即使其他人的文件内容不对我开放,即我没有读取它的文件的权限,我们也是可以将它的文件删除的(这是创建文件和删除文件是目录的权限)。
为了禁止这种删除他人文件的行为,我们需要给该公共目录设置粘滞位

chmod +t (公共目录名)#给others设置了粘滞位(将x设置为了t)

当该目录被设置了粘滞位,则该目录的文件只能被:
1.超级管理者root删除;
2.被该目录所有者root删除;
3.被该文件的所有者删除。


总结

以上就是今天要讲的内容,本文介绍了Shell的相关概念以及Linux中的基本权限的相关概念。本文作者目前也是正在学习Linux相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。
最后,如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!

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

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

相关文章

直接插入排序(Straight Insertion Sort)

本文已收录于专栏 《算法合集》 一、简单释义 1、算法概念 对插入第i个记录时,R1、R2、…、Ri-1均已排好顺序。因此,将第i个记录Ri-1、…、R2、R1进行比较,找到合适的位置插入,他简单明了但是速度很慢。 2、算法目的 把无序数组通…

windows下免费本地部署类ChatGpt的国产ChatGLM-6B

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。 Chat…

禁止右键禁止复制禁止选择网页内容的CSS和JS代码(支持PC和移动端)

禁止右键禁止复制禁止选择网页内容的CSS和JS代码(支持PC和移动端),收藏吧,用得上。 body {-moz-user-select: none;/* Firefox私有属性 */-webkit-user-select: none;/* WebKit内核私有属性 */-ms-user-select: none;/* IE私有属…

项目1登录功能优化(中间件添加操作信息,统一日志输出)

中间件添加操作信息 context增加属性userid用于储存访问者id,便于后期使用中间件添加操作信息 type Context struct { //......,context其他属性 Userid int} 对于添加操作信息的中间件函数 // 添加用户操作中间件func Addoperationmid(db *sql.DB) gee7.HandlerFunc { retu…

SpringBoot【运维实用篇】---- 多环境开发

SpringBoot【运维实用篇】---- 多环境开发 1. 多环境开发(yaml单一文件版)2. 多环境开发(yaml多文件版)3. 多环境开发(properties多文件版)4. 多环境开发独立配置文件书写技巧5. 多环境开发控制 讲的内容距…

【LeetCode】1000题挑战(220/1000)

1000题挑战 没有废话,直接开刷! 目录 1000题挑战 没有废话,直接开刷! 第一题:119. 杨辉三角 II - 力扣(Leetcode) 题目接口 解题思路 代码: 过过过过啦!&#x…

【Python】【进阶篇】13、Django安装与配置教程

目录 Django安装与配置教程1. Windows系统安装Django1) 离线安装2) 在线安装3) 配置Django环境变量4) 检查是否安装成功 2. Linux和Mac系统安装Django1) 使用终端在线安装2) 下载安装包离线安装 Django安装与配置教程 本节主要对 Django 在各个平台上的安装方式与配置进行讲解…

Blender 插件UvSquares

目录 1. UvSquares插件1.1 解压UvSquares插件1.2 blender偏好设置1.3 打开插件1.4 安装插件1.5 勾选插件UvSquares1.6 安装UvSquares插件前1.7 安装UvSquares插件后 1. UvSquares插件 Blender 的 UV 编辑器工具,可将 UV 选择重塑为网格。 下载:https:/…

关于jsonp的理解。利用 百度“联想搜索”接口

什么是 回调函数? 在 JavaScript 中,回调函数是指将一个函数作为参数传递给另一个函数,以在某些操作完成后通知调用者。当操作完成时,被调用的函数(即回调函数)将被调用,以执行某些指定的操作或…

Ajax的简单使用

目录 1、ajax概述 2、模拟ajax 3、Jquery实现ajax (1)通用开发步骤 (2)示例 注册用户名重复性验证 (3)示例 ajax解析json数据 (4)实现细节 4、axios实现ajax 5、ajax发送PUT…

西门子安装和配置

一、已安装 V16,检查软件正常 1.判断西门子软件是否正常工作,检查软件图标,如下图。 2.如果软件图标不存在,检查Windows服务是否存在,打开方法如下图: 3.检查西门子的服务,共16个服务&#xff…

万维网服务

~ 在AppSrv上搭建网站服务器 ~ 将访问HTTP://www.chinaskills.com的http的请求重定向到https://chinaskills.com站点 ~ 网站内容设置为“该页面为www.chinaskills.com测试页” ~ 将当前web根目录设置为d:\wwwroot 目录 ~ 启用windows身份验证,只有通过身份验证的…

如何在比特币系统内创造人工生命

信息来源:coingeek.com 自2015年以来,关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是,现在存在着一种流传甚广的谬论,有人说比特币并非图灵完备的,它不能像以太坊区块链那样进行复杂…

【Node.JS 数据库篇】Sequelize 的用法与mysql的关系

文章目录 一、Sequlize是Node.JS中ORM实现二、Sequelize 执行基础的CRUD三、Sequelize 执行复杂的CRUD1. 指定字段attributes2. 触发数据库事务3. LEFT JOIN 联表关系4. INNER JOIN 联表关系5. 嵌套查询 四、Sequlize常用方法和参数1. findAll2. count3. findByPk4. findOne5. …

【策略设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 策略模式(Strategy Pattern)属于行为型设计模式。将每一个算法封装到具有共同接口的独立类中,根据需要来绑定策略,使得具体实现和策略解耦。 当你想使用对象中各种不同的算法变体,使用if...else 所带来的复杂和…

增强型PID-自适应-前馈-神经网络控制研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Linux】入门介绍

🌱博客主页:大寄一场. 🌱系列专栏:Linux 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注​ 目录 前言 Linux背景介绍 1.发展史 UNIX发展的历史 Linux发展历史 2. 开源 3. 官网 4. 企业应用现状 5. 发行版…

装饰者模式

采用组合而非继承的手法,Decorator模式实现了在运行时动态扩展对象功能的能力,可以根据需要扩展功能。 Decorator类在接口上表现为is-a Component的继承关系,即Decorator类继承了Component类的所有接口。但在实现上又表现为has-a Component的…

打印流~~

文章目录 打印流PrintStreamPrintWriter追加操作输出语句的重定向 Properties使用properties把键值对信息存入到属性文件中去使用properties在文件中取键值对信息 IO框架(了解) 打印流 作用:打印流可以实现方便、高效的打印数据到文件中去。打印流一般是指&#xff…

【Linux】2.1 环境基础开发工具使用——yum

什么是yum Linux 软件包管理器——yum yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上. yum 的使用 卸载: yum -y(直接卸载) remove [xxx] 查找: yum list | grep [xxx] 软件包名称:…