当前位置: 首页 > news >正文

[Linux]:权限

img

✨✨ 欢迎大家来到贝蒂大讲堂✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:Linux学习

贝蒂的主页:Betty’s blog

1. Linux权限的基本概念

1.1 root与普通用户

Linux系统中,存在两种主要用户类型,即超级用户root与普通用户。超级用户拥有极高的权限,可以在 Linux 统下执行几乎任何操作,其权限几乎不受限制。相比之下,普通用户通常只能在自己的工作目录/home/xxx内进行工作,并且在整个系统上所能进行的操作也较为有限。 换句话说,Linux系统中的权限概念主要是为了对普通用户的行为进行限制,以确保系统的安全性和稳定性。而超级用户由于其强大的权限,在使用时需要格外谨慎,以免误操作对系统造成严重破坏。 在命令提示符方面,超级用户的提示符为#,普通用户的提示符为$。这一区别可以帮助用户在使用命令行时快速区分自己当前所使用的用户身份,从而更好地掌握自己的操作权限范围。

1.2 创建与删除普通用户

实际上,使用root账号是比较危险的,因为root账号的权限太大,可能会因为误操作而造成不可挽回的结果,所以我们最好创建一个普通用户的账号平时使用。接下来我们就来谈一谈如何创建一个普通账户:

  1. 首先在root用户下,输入指令<font style="color:rgb(77, 77, 77);">addser yourid</font>,其中<font style="color:rgb(77, 77, 77);">yourid</font>是你自己创建的用户名。

  1. 然后输入指令passwd yourid来设置你的密码。(其中输入密码并不会显示)

  1. 最后再次确认密码,密码设置就成功。

在知道如何创建新用户之后,我们可以通过我们创建的用户名与密码登录普通用户。

然后我们再来谈谈如何删除用户:

直接在root用户下,输入指令userdel -r yourid,即可删除。

1.3 普通用户与root的切换

虽然我们平时使用的是普通用户,但是偶尔有些指令就需要在root用户下执行。所以这时候就需要我们切换用户。

如果从普通用户切换为root用户,可以使用两种指令:su(su root)su-。其中第一个指令,仅仅是一个用户身份的切换,用户所处的路径不发生改变。而第二个指令则会更改为家目录/root下,其实就是su -就相当于重新登录。

如果是从root用户切换到普通用户,直接输入指令 su user

切换用户后,若想切回上次的用户,可按Ctrl+d实现,也可以输入指令exit

但是有时候我们并不知道root用户的密码,但是又需要root用户去执行某条指令,那么这时就需要输入指令sudo 指令,这条指令就可以提升我们要执行指令的权限,即让root用户执行。但是使用这个指令有一个条件就是root用户将此普通用户添加到可信任白名单中。

如果要将某个用户添加进入可信任白名单中,首先在root用户下,通过指令vim /etc/sudoers对应文件。

然后我们就可以使用sudo 指令来提升指令时的权限。

2. Linux权限管理

2.1 用户划分

Linux中,为了方便管理文件,还对我们的用户或者文件访问者进行了分类:

文件和文件目录的拥有者:u—User
文件和文件目录的所属组:g—Group
其它用户(即不是这个文件的拥有者):o—Others

因为other可能存在多个,所以除了文件拥有者和文件所属组之外的都叫other

2.2 文件类型与访问权限

首先是文件类型,在Linux下,可以分为以下几种文件。

  1. -:普通文件(指不包含有文件系统信息的结构信息的文件,是用户所接触到的文件,比如常见的.exe.c.txt,归档文件等在Linux中统称为普通文件)。
  2. d:目录(文件夹)。
  3. l:软链接(类似Windows的快捷方式)文件。
  4. b:块设备文件(例如硬盘、光驱等)。
  5. p:管道文件。
  6. c:字符设备文件(例如屏幕等串口设备)。
  7. s:套接字文件。

然后文件的访问权限也可以分为:可读®、可写(w)可执行(x)

如果仔细观察就可以发现,其一共有十个字符,除开第一个代表文件的类型外,后九个每三个为一组,分别代表拥有者,所属组,其他用户的可读,可写,可执行的权限。

字符表示法说明
r - -仅可读
- w -仅可写
- - x仅可执行
r w -可读可写
r - x可读可执行
- w x可写可执行
r w x可读可写可执行
- - -无权限

其实除了这种表示方法之外还有一种表示方法那就是**八进制表示法,**如下图:

字符表示法二进制八进制数值表示法说明
r - -1004仅可读
- w -0102仅可写
- - x0011仅可执行
r w -1106可读可写
r - x1015可读可执行
- w x0113可写可执行
r w x1117可读可写可执行
- - -0000无权限

2.3 权限的设置

在了解权限的分类之后,我们接下来学习如何更改文件的访问权限:

  1. 语法: chmod 选项 权限 文件名或目录名
  2. 功能: 设置文件的访问权限。
  3. 常用选项: -R 递归修改目录文件的权限。
  1. 方法一: 用户符号 +/-/= 权限字符
  1. <font style="color:rgb(77, 77, 77);">+</font>:向权限范围增加权限代号所表示的权限。
  2. <font style="color:rgb(77, 77, 77);">-</font>:向权限范围取消权限代号所表示的权限。
  3. <font style="color:rgb(77, 77, 77);">=</font>:向权限范围赋予权限代号所表示的权限。
  • **用户符号:**u:拥有者。g:所属组。o:other。a:所有用户。

值得注意的是:如果相同时改变不同种类用户的访问权限,中间需要用逗号隔开。

  1. 方法二: 八进制数字

接下来我们来讨论如何更改文件的拥有者。

  1. 语法: chown 选项 用户名 文件名或目录名
  2. 功能: 修改文件的拥有者。
  3. 常用选项: -R递归修改目录文件的拥有者。

然我们也可以通过以下命令改变文件所属组。

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

其实我们可以使用chown指令同时改变拥有者与所属组,中间用冒号隔开即可。

当然以上指令都需要在root用户下执行。

2.4 文件掩码

实际上,新建文件的默认权限为0666(rw- rw- rw-),新建目录的默认权限为0777(rwx rwx rwx),其中第一位与特殊权限相关,这里我们不需要深究。但是实际上新建文件与目录的默认权限并不如上所说,这是怎么回事呢?

其实这种情况就与我们的文件掩码umask有关,我们设默认权限为mask,实际创建出的文件或目录权限为mask&umask

我们可以通过这个指令umask 八进制数来修改默认的掩码umask

其中需要注意的是:root用户的默认掩码为0022,而普通用户为0002

2.5 权限的作用

对于普通文件来说,可读,可写,可执行这种字面含义就能帮助我们理解其权限的作用,但是对于目录来说,就有所区别了。

  1. 可读权限: 如果用户没有该目录的可读权限,则无法通过ls指令查看目录中的文件内容。
  2. 可写权限: 如果用户没有该目录的可写权限,则无法通过一系列指令在目录中创建文件或删除文件。
  3. 可执行权限: 如果用户没有该目录的可执行权限,则无法通过cd指令进入到目录当中。

但是这种情况就会导致一个非常严重的问题,那就是:拥有可读权限的人可以删除文件,这是不可取的,因为这个文件不一定是你创建的,你不可能去删除别人的文件。

所以了为了解决这个问题就引入了粘滞位的概念。

2.6. 粘滞位

为目录添加粘滞位特别简单只需要输入指令chmod+t 目录名

img

在为目录添加了粘滞位之后,该目录文件就只能由:root用户删除,该目录或文件的拥有者删除。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PostgreSQL分区表原理、案例的灵活应用
  • 【LLM】大模型基础--大规模预训练语言模型的开源教程笔记
  • JavaWeb - Vue项目
  • Qt第三课 ----------widget的控件属性及stylesheet样式(css样式)的简单介绍
  • mongodb 在 Windows 环境下迁移数据库的问题
  • Ubuntu解压7z压缩包方法
  • 开源网安引领AIGC+开发安全,智能防护铸就软件安全新高度
  • 遍历所有文件夹,并把文件里所有的csv合并为一个dataframe
  • 【计算机组成原理】你敢相信5.8+0.9=6.1这个等式居然成立!!!详细解读进制数之间的相互转换
  • GPU版pytorch安装(win/linux)
  • C++中STL之容器和迭代器
  • 计算机网络 第二章: 物理层概述
  • 移动端视频编辑SDK解决方案,AI语音识别添加字幕
  • JS设计模式之“幽灵工厂” - 抽象工厂模式
  • 驾驭Python与MySQL的桥梁:pymysql的神秘面纱
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 0x05 Python数据分析,Anaconda八斩刀
  • 5、React组件事件详解
  • Android Volley源码解析
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Fabric架构演变之路
  • IndexedDB
  • Terraform入门 - 1. 安装Terraform
  • 扑朔迷离的属性和特性【彻底弄清】
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 小程序button引导用户授权
  • 学习JavaScript数据结构与算法 — 树
  • 移动端唤起键盘时取消position:fixed定位
  • 译米田引理
  • 应用生命周期终极 DevOps 工具包
  • 【云吞铺子】性能抖动剖析(二)
  • 通过调用文摘列表API获取文摘
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​如何在iOS手机上查看应用日志
  • #Lua:Lua调用C++生成的DLL库
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $(function(){})与(function($){....})(jQuery)的区别
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (二)WCF的Binding模型
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (回溯) LeetCode 46. 全排列
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十)c52学习之旅-定时器实验
  • (十六)视图变换 正交投影 透视投影
  • (五)Python 垃圾回收机制
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)详解PHP处理密码的几种方式
  • 、写入Shellcode到注册表上线
  • .NET 2.0中新增的一些TryGet,TryParse等方法