自学内容网 自学内容网

【Linux】Linux 权限的理解

首先我们先介绍Linux中基本的用户认识:

Linux下有两种用户:超级用户(root)和普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限(权限较低)的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令:su [用户名]

  • 普通用户切换到 root 的命令su 需要输入root用户的密码
  • root用户切换到普通用户 不需要输入密码可以直接进行切换

什么是权限呢?

        权限是用来约束目标对象的,有可能是人也有可能是一个网站亦或是一个app。在Linux 中,权限是控制用户对文件和目录访问的一种机制。每个文件和目录都有三种基本权限:读取(r)、写入(w)执行(x)。这些权限分别适用于三类用户:文件的拥有者(u)文件所属组的用户(g)其他用户(other)权限是Linux对用户管理方面的一种手段。

Linux 和 Windows 的文件类型差别很大。Windows的文件类型是通过文件的后缀来划分的,我们用户虽然可以按照Windows的那种方式在Linux下按照后缀名来区分文件类型(用来提示用户,后缀名其实是文件名的一部分),但是Linux本身区分文件类型的方式与文件后缀无关(如下图所示)。

Linux是通过ll下的众多属性列中的第一列的第一个字符来区分文件类型的。


Linux下的文件类型:

  • - :普通文件 (源代码,库文件,可执行程序,文档压缩包等等)
  • d:目录文件
  • c:字符设备文件(硬件比如键盘,显示器)
  • b:块设备(磁盘...)
  • l:链接文件(快捷方式)
  • p:管道文件

        l即link是连接的缩写,我们Windows系统中桌面上的快捷方式即是链接文件。


文件权限值的表示方法

  • a)字符表示方法
    • ll下的第一列后9个字符用来表示该文件对于拥有者,所属者和其他用户所对应的权限。这三类用户每类用户分别对应着三个字符。

  • b)8进制数值表示方法


如何操作权限?

设置文件的属性

a)chmod

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
        R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

  • chmod 用户表示符+/-=权限字符 文件名
  • chmod 三位8进制数字 文件名
# chmod u+rw /home/test.txt
# chmod u+w,o-x,... /home/test.txt
# chmod 664 /home/test.txt
# chmod 640 /home/test.txt

设置文件所属角色

b)chown
功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名

c)chgrp

功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名
常用选项: -R 递归修改文件或目录的所属组


d)umask
功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候umask会对起始权限去做约束

假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式: umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

# umask //查看
# umask 040//设置

目录的权限

  • 可执行(x)权限: 如果目录没有可执行权限, 则无法cd到目录中

  • 可读(r)权限:如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容

  • 可写(w)权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件


普通用户如何提升权限

命令:sudo +命令

  • 受信任用户提升权限只需要输入自己用户的密码
  • 不受信任用户提升权限需要输入root用户的密码

粘滞位

Linux系统中有很多用户,可能会有以下情景,我们需要在一个公共的目录进行临时文件的操作(增删查改),希望可以通过这个公共的目录让这些用户实现消息共享,信息传递。粘滞位是在一个公共的目录下,大家一起进行文件操作。

一个文件是否可以被删除与文件本身无关系,这是目录的权限。如果有人在公共目录下创建了一个私密文件,除了拥有者以外其他人都不能读不能写不能执行,但是其他人却可以删除这个文件。为了让一个公共目录大家各自可以进行rwx操作,但是不可以互删对方的文件,怎么做呢?答案是给目录设置粘滞位(权限的一种特殊情况)。

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

  • 超级管理员删除
  • 该文件的所有者删除

为什么要将用户划分成拥有者(u)、所属组(g)和其他用户(other)呢?

        通过对用户群体进行划分,可以直接对这个群体起到管理和约束的效果。如果只有拥有者和其他用户,就没有我们所谓的中间状态,无法将本应该可以读写你文件的人(你团队的人...)与真正的其他人(other)进行有效的区分。

        拥有者(u)、所属组(g)和其他用户(other)对应的不是人,而是对于角色(身份)的划分。su-切换用户,切换的是人。角色是要由人来扮演的,角色又反向地去限制扮演他的人。


总结

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


原文地址:https://blog.csdn.net/2302_80026357/article/details/143695857

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!