首页 > 系统相关 >Linux:权限

Linux:权限

时间:2024-06-08 13:31:54浏览次数:16  
标签:文件 用户 Linux 权限 root 目录

文章目录

shell命令以及运行原理

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

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

  1. 将使用者的命令翻译给核心(kernel)处理
  2. 同时,将核心的处理结果翻译给使用者

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

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

在Linux中:

[xxm@VM-12-11-centos ~]$     ----   bash命令行
xxm:用户名  
VM-12-11-centos:主机名
~:当前目录
$:命令行提示符(root用户为#)

我们输入的指令,本质上是是字符串,需要命令行解释器对我们的输入进行解释,然后将指令告诉操作系统,操作系统再反馈给命令行解释器,命令行解释器再将操作系统的反馈翻译给用户。

命令行解释器的作用:

  1. 进行命令行解释
  2. 保护操作系统,拦截用户的非法请求

命令行解释器包括:

  1. 命令行。bash, sh(统称为shell)等
  2. 图形化界面

Linux下用户的分类

分为两类:

  1. root:超级用户
  2. 普通用户

切换身份的指令为:su

语法:su [用户名]

从普通用户切换到root用户或其他普通用户需要提供相应的密码,而root切换到普通用户不需要密码。

如果普通用户想对一条命令进行短暂提权,可以使用 sudo 指令 :sudu command ,需要输入当前普通用户的密码,但是普通用户默认是没有颁发执行 sudo 的,因为操作系统不信任用户,除非将用户添加到系统的信任白名单(etc/sudoers)中。

Linux权限管理

Linux下权限是由两部分共同构成,一部分是访问者的身份,另一部分是文件对访问者的权限。

Linux下文件的访问者身份可分为三类:

  1. 文件和文件目录的所有者:u–user
  2. 文件和文件目录的所有者所在的组的用户:g–group
  3. 其他用户:o–others

而需要注意的是:Linux中root用户不受权限的限制!

Linux下文件的类型和访问权限属于文件的详细信息,可以用ls -l指令查看。
在这里插入图片描述

  1. 文件类型
选项含义
-普通文件
d目录文件
b块设备文件
p管道文件
c字符设备文件
  1. 基本权限

  2. 读:Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

  3. 写:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

  4. 执行:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

文件权限值的表示方法

字符表示方法

Linux表示说明Linux表示说明
r–只读-w-只写
–x只执行rw-可读可写
-wx可写可执行r-x可读可执行
rwx可读可写可执行无权限

8进制数值表示方法

权限符号二进制八进制
r–1004
-w-0102
–x0011
rw-1106
r-x1015
-wx0113
rwx1117
0000

权限的修改

仅文件的拥有者和root用户可以修改。

  1. chmod [u/g/o/a] [+/-/=] [r/w/x] , (…可重复前面,进行多种身份的权限设置) [文件]

  2. chmod 664 [文件]

除了可以修改文件对各种身份的访问者的权限,还可以修改文件的拥有者、所属组。

  1. 修改拥有者:chown [用户] [文件]
  2. 修改所属组:chgrp [用户] [文件]
  3. 修改拥有者和所属组:chown [用户]:[用户] [文件]

权限掩码

我们在Linux下创建文件和目录,为什么普通文件的默认权限是664,目录文件是775呢?
在这里插入图片描述

其实,普通文件的默认权限是666,目录是777,但存在权限掩码(umask),凡是在umask中出现的权限,不会再最终文件权限中出现。

权限掩码的默认值是0002,第一个0表示八进制,后三位表示权限。

普通文件的默认权限是666,二进制表示就是110 110 110,权限掩码是000 000 010,由于再权限掩码中出现过的权限,不会在最终文件的权限中出现,所以普通文件的最终权限是110 110 100,也就是664。

目录文件的默认权限是777,二进制表示就是111 111 111,权限掩码是000 000 010,所以目录文件的最终权限是111 111 101,也就是775。

而需要注意的是,最终权限并不等于默认权限减权限掩码,请看示例:
在这里插入图片描述

我们先将umask的值改为0001,也就是000 000 001,而我们之后创建的目录权限为111 111 110,普通文件为110 110 110。普通用户的最终权限并不是两者相减。

最终权限的计算方法为:最终权限 = 起始权限 & (~ umask)

那么umask有什么意义呢?

通过修改umask的值,我们可以设置新创建的普通文件和目录的“默认最终权限”。

修改umask:umask 0xxx(八进制)

目录文件的权限

一个文件能否被删除,并不由文件本身决定,而是由其所处的目录决定。

如果用户拥有目录的写权限,则可以删除目录中的文件。

那么如果我们需要多人协作,共同在一个目录下工作,彼此之间可以给自己的文件设置权限来设置是否允许其他人读/写/执行,但是并不能设置是否允许其他人删除。因为如果想让别人不能删除自己的文件,就要限制目录文件对他的写权限,但是这么一来,他就无法在目录下创建、修改文件,为了解决这一问题,Linux下目录可以被设置为粘滞位。

设置粘滞位的方式与设置文件权限的操作相同,只不过将最后一位的-xt来代替。

[root@VM-12-11-centos lesson_5]# chmod +t /home/  # 加上粘滞位

而当一个目录被设置为粘滞位,则该目录下的文件只能由root用户或文件的所有者删除。

关于权限的总结

  1. 目录的可执行权限是表示你可否在目录下执行命令。
  2. 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录, 即使目录仍然有-r读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
    为粘滞位,则该目录下的文件只能由root用户或文件的所有者删除。

关于权限的总结

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

标签:文件,用户,Linux,权限,root,目录
From: https://blog.csdn.net/z3256707200/article/details/139532865

相关文章

  • Linux 中date命令
     date主要用于显示日期,若是不以加号作为开头,则表示要设定时间,而时间格式为MMDDhhmm[[CC]YY][.ss],其中MM为月份,DD为日,hh为小时,mm为分钟,CC为年份前两位数字,YY为年份后两位数字,ss为秒数。001、最基本的用法[root@PC1test2]#date##输出日期SatJun812:......
  • 嵌入式Linux系统编程 — 1.5 文件描述符详解
    目录1文件描述符简介1.1文件描述符特点1.2标准文件描述符1.3文件描述符的生命周期2 fcntl()函数2.1fcntl()函数简介2.2复制文件描述符(F_DUPFD)2.3获取/设置文件状态标志(F_GETFL/F_SETFL)1文件描述符简介文件描述符(FileDescriptor)是Linux和UNIX系统编......
  • Linux(Windows)网络配置(超详细)
    Linux网络配置三种模式(以下是理论,不想看可直接跳过):        桥接模式(bridged):也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络。简而言之,这就好像在局域网中添加了一台新的、......
  • Linux下的C语言编程(指针)
    目录1一级指针1.1定义1.2指针的内存大小1.3指针的偏移1.3.1加法偏移1.3.2减法偏移2二级指针2.1定义2.2如何理解二级指针3三级指针3.1定义4数组和指针的关系4.1一维数组与指针的关系4.1.1数组名的性质4.1.2数组名与指针的地址偏移4.2二维数组与......
  • 物理机安装Linux操作系统
    1.物理机安装Linux环境这里以Ubuntu系统为例,Centos系统同理,windows同理1.1下载系统镜像官网下载速度慢的话可以直接百度各大学的镜像下载网站去下载,如下以清华镜像网站为例:https://mirrors.tuna.tsinghua.edu.cn/1.2下载工具ventoyVentoy官网:https://www.ven......
  • linux内存管理(一)物理内存的组织和内存分配
    从这一篇开始记录以下我看有关内存管理的内核代码的笔记.内容很长,很多是我自己的理解,请谨慎观看.伙伴系统的工作的基础是物理页的组织,组织结构有小到大依次为page->zone->node。下面从源码里看看各个结构是如何组织的。typedefstructpglist_data{structzonenode_z......
  • linux安装mysql8并配置主从
    服务器10.213.3.68DBmaser10.213.3.69DBslave都安装mysql8安装包,解压mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz[root@DB-mastermysql8]#lsbindocsincludelibLICENSEmanREADMEsharesupport-files优化过的配置文件[mysqld]server-id=1log-bin=mys......
  • fs.1.10 ON rockylinux8 docker镜像制作
    概述freeswitch是一款简单好用的VOIP开源软交换平台。rockylinuxdocker上编译安装fs1.10版本的流程记录。环境dockerengine:Version24.0.6rockylinuxdocker:8freeswitch:v1.10.7手动模式rockylinux准备dockerhub拉取rockylinux镜像。sudodockerpullrockylinux:8......
  • Linux 获取系统开机/启动时间
    Linux下如何查看系统启动时间和运行时间以及安装时间-努力哥-博客园(cnblogs.com)cat/proc/uptime输出:5113396.94575949.85第一数字即是系统已运行的时间5113396.94秒,运用系统工具date即可算出系统启动时间代码:[root@localhost~]#date-d"$(awk-F.'{print......
  • 操作系统发展历史与Linux
    操作系统发展历史与Linux随着计算机技术的迅猛发展,操作系统作为计算机系统的核心软件,经历了从单一到多样、从封闭到开放的演变过程。从最初的批处理系统,到分时操作系统的兴起,再到个人计算机操作系统的崛起,最后到Linux的诞生和广泛应用,每一步都见证了操作系统领域的重大变革。早......