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

【Linux】权限管理

目录

一. Linux 用户

二. 权限概念

三. 权限修改

1. 权限属性 chmod

用户标识符 +-= 权限字符

3位八进制数字

2. 没有权限的现象

3. 拥有者 chown

4. 所属组 chgrp

四. 起始、最终权限问题

五. 目录权限

六. 粘滞位


一. Linux 用户

root:超级用户。命令行提示符 '#'。基本不受权限约束
普通用户:我们新建的用户 adduser。命令行提示符 '$'。受权限约束

Linux 所有用户,都要有密码


如何登录 root 账号?

1. ssh root@公网IP

2. 普通用户切换 root:
        (1) su 指令

只是做了身份变化,身份变成 root;但路径不变,仍处于上一个目录
退回普通用户:输入 exit Ctrl + D

        (2) su -  指令(下面也通用)

路径也变了

3. root 切换普通用户
 不用输入密码

4. 普通用户切换普通用户
 要输入想切换用户的密码


想暂时对一条命令进行提权:sudo  指令

sudo:让后面的指令以 root 的身份执行
要输入当前用户的密码。输入后,一段时间内不用再次输入

想执行高权限的操作的2种方法:1. 切换 root 身份 2. sudo 提权

eg:Linux 安装软件用 yum
        安装:把文件拷贝到系统的某些路径下。普通用户不允许

问:切换 root 身份要输入 root 密码;sudo 提权却只输自己的密码,不荒谬吗?
目前我们adduser新建的用户,无法执行sudo,系统不信任你。除非将普通用户添加到系统的新人白名单里
        你不在 /etc/sudoers

二. 权限概念

一件事情是否允许被你做

1. 权限认证的是身份(权限和“人”有关)
2. 权限也和事物的“属性”有关

文件类型         权限属性         连接数         拥有者         所属组          所占字节大小         最近创建/修改时间         文件名


文件类型

-:普通文件 文本、可执行程序、基本库都属于普通文件
d:目录文件
b:块设备文件
磁盘文件
c:字符设备文件 键盘、显示器文件等
p:管道文件 用来进行通讯的
l:软连接 类似Windows的快捷方式
s:套接口文件

Windows 根据文件名后缀区分类型
Linux 文件名后缀没有直接意义(不代表不用)Linux系统上运行的其他软件要识别后缀
        Linux中如何看待后缀?看用户需求

 gcc 是一款编译器,软件


权限属性

r:可读
w:可写
x:可执行
-:对应位置没有的权限

除了文件类型,剩下的9个符号,33为一组,分别对应
拥有者权限         所属组权限         other权限

每组的3个位置,什么含义是确定的;每一位置只有是或否,具有指定的权限

所属组:

由于刺激战场和全军出击是竞争关系,所以qtw的代码不能给gyl看,但要给主管看
就把主管、组友放在所属组,只给读的权限;不把gyl放在所属组,gyl就看不了qtw的代码

其他人:
任何用户访问 Linux中 文件要先登录,登录就有用户名。想访问某个文件时,和文件属性中的拥有者和所属组对比:发现既不是拥有者,也不是所属组,就只能是其他人(if         else if         else的逻辑)
所以不用将其他人写到文件属性中


在进行身份认证时,只能被认定为一种身份


qtw优先被认定为拥有者,没有写权限。即使 qtw 作为所属组有写权限,但系统只认 qtw 为拥有者,不认 qtw 为所属组

三. 权限修改

1. 权限属性 chmod

用户标识符 +-= 权限字符

chmod  选项  权限  文件名
只有文件的 拥有者和root 才能改权限属性

选项:
        -R:修改目录的访问权限

用户标识符:
        u:拥有者         g:所属组         o:其他人         a:所有人

此时,test.txt 虽然被改成可执行属性,但事实上能不能执行是另外一回事

3位八进制数字

三个位置分别表示 读、写、执行。1表示是;0表示否
二进制111 = 7:rwx
二进制110 = 6:rw-
二进制000 = 0:---

八进制的数字范围是0-7,所以可以用3位八进制数字分别表示拥有者、所属组、其他人的权限

2. 没有权限的现象

Permission denied:权限被拒绝

root 不受权限限制
制定规则的人不受规则限制

3. 拥有者 chown

chown  选项  想改成的用户名  文件

选项:
        -R:修改目录的拥有者

把拥有者从 qtw 改成 gyl:
操作不被允许
可以 sudo 提权:sudo chown gyl test.txt(这里就不展示了)

也可以在 root 下

此时 qtw 对这个文件来说,就变成所属组了
qtw 就不能改权限属性了,得在 root 或 gyl 那里改

4. 所属组 chgrp

chgrp  选项  想改成的用户名  文件

选项:
        -R:修改目录的拥有者

把所属组从 qtw 改成 gyl:
        在 qtw 下同上要 sudo 提权,不展示了。在 root 下进行

此时, qtw 对这个文件来说,就变成 other 了

所属组可以添加用户,addgrp 把某个用户添加到某个组里
所属组用的并不多,就不展示了


一次把 拥有者、所属组 都改成 qtw:
        root 账号下:

四. 起始、最终权限问题

创建2个普通文件(- 开头)和2个目录(d 开头)
问: 为什么普通文件默认权限是 rw-rw-r--(664)?
        为什么目录文件默认权限是 rwxrwxr-x(775)?
        为什么我们创建的文件默认权限是我们看到的样子?

其实:
        默认给普通文件的起始权限是666
        默认给目录文件的起始权限是777(为什么是777后面说)

这个问题的根本原因是:Linux 中存在权限掩码 umask
权限掩码 umask 概念:凡是在 umask 中出现的权限,不会在最终文件权限中出现

查看文件权限掩码输入 umask

八进制的权限掩码是3位,查出来是4位:第一个0不看

umask 像漏斗,我们把起始权限给 umask 通过某种计算,把 umask 中出现的权限,从起始权限中去掉才是最终权限。

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


可以用 umask 限制创建出文件的最终权限

eg:创建的文件、目录:只给拥有者、所属组读权限;给其他人读写权限
只读权限 r--:100;umask 出现的权限最终权限不会出现,所以 umask:011:3
读写权限 rw-:110;所以 umask:001:1
所以要把 umask 改为:0331 修改 umask:umask 想改成的内容

五. 目录权限

目录文件的
r :是否允许我们查看指定目录下的文件内容                 ls
w:是否允许我们在当前目录下创建、更改、删除         mkdir、mv、rm
x :是否允许用户进入对应的目录                                  cd

现在就能解释:
普通文件起始权限666(没有x):普通文件不需要可执行,也不能给系统中植入大量可执行文件。想让他可执行,自己 chmod
目录文件起始权限777(umask 后光其他人没有 w):所有目录基本都要能进入,必须要有 x

六. 粘滞位

普通用户自己的家目录权限是700,别人看不到自己家目录下的文件
但有时多个用户想进行文件数据共享,就要创建共享文件

共享文件显然不能创建在任何一个人的家目录( /home/XXX/ )下
以 root根目录 下创建的共享文件演示:

 一些代码没截
创建出来的 shared 共享目录,任何一个普通用户可以以 other 的身份访问
把 shared 对 other 的权限打开


qtw 在共享目录下创建了 test.txt,qtw 可读可写


gyl 作为 other 对这个文件可读不可写

如果有一天,qtw 把 test.txt 的 other 权限全关了

一个文件能否被删除,并不是由这个文件决定,而是由文件所处目录的权限决定
刚才在 root 下把 shared 的 other 所有权限都打开了

gyl 生气了,你 qtw 不让我看?那你也别看了。gyl 就把 qtw创建的test.txt 删了


这显然不合理,怎么规避?
在 root 下把 shared共享目录的 other 的 w 权限关掉。gyl 就无法删除 qtw创建的文件了

但此时,用户也无法在 shared 里创建新文件了!共享目录的意义何在呢?不能这么干

想要的效果:
        任意用户在共享目录下能 创建、删除自己的、修改自己,大家都能看所有人写入的文件。受 共享目other权限的约束,也受目录内文件权限的约束
任意用户在共享目录下不能删除别人的文件

        粘滞位:目录设置,一般是共享目录。用户可以在共享目录下进行各自文件的增删查改,只允许文件拥有者、root 能删、改这个文件,其他人一概不允许,t 是一种特殊的 x 权限!


qtw 再在共享目录里创建了 test.txt

root 在此不受任何权限约束!即使 root 把 share 目录自己的权限全关了,仍不受权限约束


根目录是 root 创建的。用户是 other,没有 w 权限,无法在根目录下创建文件
根目录下所有文件都是 root 创建的。尽管根目录权限里 root 没有 w 权限

未来想创建共享文件只能以 root 身份在根目录下创建

Linux 下不用自己创建共享文件,有 tmp:唯一一个带粘滞位的

tmp 是装机时自己创建好的,未来所有用户想通信时可以把文件临时放在 tmp 目录下

本篇的分享就到这里了,感谢观看,如果对你有帮助,别忘了点赞+收藏+关注
小编会以自己学习过程中遇到的问题为素材,持续为您推送文章

http://www.dtcms.com/a/392815.html

相关文章:

  • C++哈希进阶:位图与布隆过滤器+海量信息处理
  • 林曦词典|无痛学习法
  • 树莓派CM4显示测序合集
  • python创建虚拟环境相关命令
  • 如何用AI把博客文章,“洗”成一篇学术论文?
  • 应用密码学课程复习汇总2——古典密码学
  • 应用密码学课程复习汇总1——课程导入
  • PyTorch 中 AlexNet 的构建与核心技术解析
  • 一文读懂:三防手机的定义、特性与使用场景
  • EG800G-CN不联网不定位
  • sqzb_alldsd——板子
  • Windows 快速检测 Docker / WSL2 安装环境脚本(附 GUI 版本)
  • Redis最佳实践——电商应用的性能监控与告警体系设计详解
  • 【C++】C++11(二)
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘selenium’ 问题
  • 实测美团LongCat-Flash:当大模型装上“速度引擎”,能否改写智能体战局?
  • unicode ascii utf-8的区别
  • Rust_2025:阶段1:day6.1 collect补充 ,迭代器补充 ,闭包,Hashmap搜索指定值的个数,合并迭代器
  • ESP32- 项目应用2 音乐播放器之音响驱动 #2
  • Datawhale25年9月组队学习:llm-preview+Task2:大模型使用
  • Agent记忆:Memvid、Memary、MemoryOS
  • 《主流PLC品牌型号大全解析》,电气设计时PLC应该怎么选
  • 从92到102,一建实务突破之路:坚持与自我超越
  • 探索C语言中字符串长度的计算方法
  • 使用node框架 Express开发仓库管理系统练习项目
  • 网络系统管理
  • 【Vue3 ✨】Vue3 入门之旅 · 第四篇:组件的创建与传递数据
  • PHP魔法函数和超全局数组介绍——第一阶段
  • 深入剖析“惊群效应”:从Java的notifyAll到epoll的解决方案
  • 鸿蒙应用统一埋点体系设计