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

【Linux】Linux的权限问题

 

1. 整体学习思维导图

 

2. 用户权限问题

2.1 权限的理解

  • 权限是什么?权限决定我们能否去做一件事。

  • 为什么要有权限?权限可以约束我们的行为,规范我们做事的范围,减少我们错误的操作行为。

权限 = 角色 + 属性

  • 什么是角色,如admin(root)用户/ouyang用户/等等...

[root@iZ2ze0j6dd76e0o9qypo2rZ ~]# ls /home
admin  lgw  ouyang
  • 什么是属性,如一个文件的读/写/执行/权限

 

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

总的理解:

角色分为:拥有者/所属组/other

属性分为:r/w/x

2.2 指令的短暂提权sudo

平时我们安装程序/软件需要在root权限下进行安装,这是因为只需要安装一份程序,该程序属于文件(Linux下一切皆文件)可以给其他用户开放权限进行使用!

但避免不有我们需要有时执行某些命令或者安装某些程序需要短暂的提权,这需要使用命令sudo,但是需要使用该命令的普通用户存在在白名单中。

/* 白名单路径 */
/etc/sudoers

2.3 用户之间的切换

  • 普通->超级

su(不做路径的变化) / su-(路径会变化)
  • 超级->普通

su 用户名

3. 文件权限问题

3.1 chmod 更改权限指令

  • 拥有者:u 所属组:g 其他:o

  • 读:r 写:w 可执行:x

chmod (角色) +/- (属性) 文件名
-rw-r--r-- 1 root root    0 Dec  2 19:28 Textfile.txt
/* 将上述文件权限做以下修改 */
[root@iZ2ze0j6dd76e0o9qypo2rZ code]# chmod u-rw Textfile.txt 
[root@iZ2ze0j6dd76e0o9qypo2rZ code]# ll
total 0
----r--r-- 1 root root    0 Dec  2 19:28 Textfile.txt

[root@iZ2ze0j6dd76e0o9qypo2rZ code]# chmod g+w Textfile.txt 
[root@iZ2ze0j6dd76e0o9qypo2rZ code]# ll
total 0
-rw-rw-r-- 1 root root    0 Dec  2 19:28 Textfile.txt
/* 给所有人 + x权限 */
[root@iZ2ze0j6dd76e0o9qypo2rZ code]# chmod a+x Textfile.txt 
[root@iZ2ze0j6dd76e0o9qypo2rZ code]# ll Textfile.txt 
-rwxrwxr-x 1 root root 0 Dec  2 19:28 Textfile.txt

3.2 如何理解可执行

  • 在上述的Textfile.txt中我们赋予了其可执行的权限,那么该文件可执行吗?

[root@iZ2ze0j6dd76e0o9qypo2rZ code]# ./Textfile.txt 
[root@iZ2ze0j6dd76e0o9qypo2rZ code]# 

很明显不可以执行,那么我们编辑一段简单的可执行程序来观察一下,打开可执行权限和关闭可执行权限。 

[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# cat Linux.c
#include <stdio.h>
int main()
{
        printf("Hello Linux!\n");
        return 0;
}

/* 打开可执行权限 */
[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# gcc Linux.c -o Linux
[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# ll
total 16
-rwxr-xr-x 1 root root 8440 Dec  2 19:40 Linux
-rw-r--r-- 1 root root   72 Dec  2 19:37 Linux.c
-rwxrwxr-x 1 root root    0 Dec  2 19:28 Textfile.txt
[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# ./Linux 
Hello Linux!

/* 关闭可执行权限 */
[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# chmod a-x Linux
[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# ll
total 16
-rw-r--r-- 1 root root 8440 Dec  2 19:40 Linux
-rw-r--r-- 1 root root   72 Dec  2 19:37 Linux.c
-rwxrwxr-x 1 root root    0 Dec  2 19:28 Textfile.txt
[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# ./Linux
-bash: ./Linux: Permission denied

通过上述可知:可执行权限 != 文件可执行,但是文件可执行却不可缺少可执行权限。

3.3 chown 指令

  • chown可以更改文件的所属人/所属组,但是前提条件是想给别人必须是高权限!

  • 绿色是所属人/蓝色是所属组

[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# whoami root [root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# chown ouyang:ouyang Linux [root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# ll total 12 -rw-r--r-- 1 ouyang ouyang 8440 Dec 2 19:40 Linux

3.4 修改文件权限的第二种方法

我们可以看到一个文件的权限是rwxrw-rw-,我们可以将存在相应权限看做为1,没有相应权限为0,以上的权限就可以看作为111 110 110,再通过这些二进制变成八进制7 6 6,我们可以通过八进制去设定一个文件的权限!

[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# ll
total 12
-rw-r--r-- 1 ouyang ouyang 8440 Dec  2 19:40 Linux
-rwxrwxr-x 1 root   root      0 Dec  2 19:28 Textfile.txt
[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# chmod 766 Linux 
[root@iZ2ze0j6dd76e0o9qypo2rZ dir_2024_12_2]# ll
total 12
-rwxrw-rw- 1 ouyang ouyang 8440 Dec  2 19:40 Linux
-rwxrwxr-x 1 root   root      0 Dec  2 19:28 Textfile.txt

4. 目录权限问题

对于一个目录,我们对其权限的理解:

  • 进入一个目录需要x权限,可执行权限

  • 查看目录的内容我们需要r权限,读权限

  • 增删改目录的文件我们需要w权限,写权限

也就是说一个文件是否能被删除与其本身的权限无关,与该文件所处目录的权限有关。

5. 多用户之间的隔离

多用户之间的隔离是通过目录权限实现的,任何用户都不可以进入其他用户的家目录,root超级管理员除外。

[root@iZ2ze0j6dd76e0o9qypo2rZ home]# ll
total 12
drwx------  3 admin  admin  4096 Jun 17 10:31 admin
drwx------  2 lgw    lgw    4096 Oct 21 20:37 lgw
drwx------ 10 ouyang ouyang 4096 Oct 23 15:15 ouyang

6. 缺省权限

我们平时创建文件和目录时,并不需要设置权限,直接就有了固定权限的设定,这是默认权限。

  • 普通文件:起始权限 666

  • 目录文件:起始权限 777

这种起始权限由系统OS决定,但是我们有时又有需求更改默认权限怎么搞?这时候就需要权限掩码:umask

/* 只看后三位即可 */ 
[root@iZ2ze0j6dd76e0o9qypo2rZ home]# umask
0022
[root@iZ2ze0j6dd76e0o9qypo2rZ home]# umask 0002 /* 可以更改,但是是临时性的 */
[root@iZ2ze0j6dd76e0o9qypo2rZ home]# umask
0002

最终权限 = 起始权限 & (~umask),umask的存在提供了权限的灵活性。 

7. 黏滞位 t

我们可能存在一下场景:在某公司一个项目组的a和b需要合作完成文件的交互编写,他们需要可以相互访问各自的文件,但是我们知道在各自的家目录下我们任何用户都不可以访问其他人的家目录,那我们就需要在根目录下创建一个临时性的目录:tmp_backup

drwxrwxrwx   2 root root  4096 Dec  2 20:07 tmp_backup

让用户lgw,ouyang在其中创建属于自己的文档,我们会发现一个问题,在该目录下由于other拥有rwx所有权限,那么lgw自然也可以删除ouyang创建的文档,这是不合理的!为了解决这种问题,保证自己创建的文档只能由自己删除我们需要给tmp_backup目录添加黏滞位 t 进行保护!黏滞位 t 只适用于共享类目录 

drwxrwxrwt   2 root root  4096 Dec  2 20:07 tmp_backup

http://www.kler.cn/a/471858.html

相关文章:

  • 关于Mac使用VSCode连接虚拟机
  • 解决HBuilderX报错:未安装内置终端插件,是否下载?或使用外部命令行打开。
  • 从零开始开发纯血鸿蒙应用之实现起始页
  • Python爬虫基础——BeaytifulSoup模块
  • 性能测试01|性能测试理论
  • Excel 做数据分析的好与不好
  • 李正国教授、张钊博士到访美尔斯通,共绘心磁图技术新蓝图
  • jenkins入门10--自动化构建
  • 嵌入式驱动开发详解11(INPUT子系统)
  • 基于Spring Boot的社区老人健康信息管理系统的设计与实现(LW+源码+讲解)
  • 加速科技荣获“浙江省企业研究院”认定
  • with as提高sql的执行效率
  • 细说STM32F407单片机以轮询方式读写外部SRAM的方法
  • vue.js 插槽-作用域插槽
  • TDesign组件-1
  • Bash语言的编程范式
  • api接口对体育直播的重要性
  • spark——DAG专题
  • 万界星空科技电机行业MES系统解决方案
  • C++头文件map
  • 电子图纸怎么保障安全?
  • Linux的proc目录与什么有关?【以及它里面的文件各自记录着什么信息】
  • 单片机控制
  • shell基础使用及vim的常用快捷键
  • 来说数据库
  • 【AI-21】深度学习框架中的神经网络