0


Linux权限

一、Linux权限的概念

1.1 什么是权限

    在现实生活中,我们随处可见权限的影子,比如:你最近想看一部电影,但是却需要vip;你要进入小区的大门就需要刷门禁等等。总结起来就是通过一定的条件,拦住一部分人,给另一部分人权力,来访问某种资源。

    权限就像一把钥匙,不同的钥匙可以打开不同的门。在计算机里,权限就是确定谁能做什么的规则。比如,有些人可以读取文件但不能修改,有些人可以修改文件但不能删除。通过权限设置,可以控制谁可以进入哪些房间,谁可以做什么事情,从而保护系统的安全和隐私。

1.2 权限的本质

    通过权限的概念我们知道了权限一定和**人**有关。

    那我今天想去爱奇艺上刷会儿题,还想去LeetCode上看会儿电影,却发现既刷不了题也看不了电影,你很不理解,我可是超级vip啊,为什么干不了这些事。这时爱奇艺和LeetCode也懵了,爱奇艺说我只有看电影的功能,没有刷题的功能;LeetCode也说我只有刷题的功能,没有看电影的功能,你小子不会是走错片场了吧。所以说,权限还和**事物的属性**有关。

    我们在仔细想一下,你能去爱奇艺上看电影,是因为你叫小明还是因为你是vip用户啊;你能进去一家公司,是因为你叫小李吗?当然不是,是因为你是这家公司的员工你才能进去啊。所以,在“**人**”这个概念中我们又可以提出**角色**的概念。

    总结起来就是,权限 = 人(角色) + 事物的属性。

1.3 Linux中的用户

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

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

  • 功能:切换用户。

      **例如,要从root用户切换到普通用户user,则使用 su user 或 su - user。**
    

    **要从普通用户user切换到root用户则使用 su root(root可以省略)或 su -,此时系统会提示输入root用户的口令。**


  • susu命令用于切换到其他用户的身份,但不改变环境变量。当使用su命令时,只切换用户身份,当前用户的环境变量、工作目录等信息都会保持不变。
  • **su -**:su -命令也用于切换到其他用户的身份,但会同时切换到目标用户的环境变量。使用su -命令时,会将目标用户的环境变量、工作目录等信息全部加载,使得当前用户完全切换到目标用户的环境中。

二、Linux权限管理

2.1 文件访问者的分类(人)

  • 文件和文件目录的拥有者:** u---User**
  • 文件和文件目录的拥有者所在的组的用户:** g---Group**
  • 其它用户: **o---Others **

Linux中具有组的概念,主要是在多人协作的时候更好的进行权限管理。

2.2 文件类型和访问权限(事物属性)

  • 权限的前3位:文件拥有者的权限。
  • 权限的中间3位:文件所属组的权限。
  • 权限的后3位:其他用户的权限。

2.2.1 文件类型

  • d:目录文件
  • -:普通文件(文本文件、可执行程序、库等)
  • l:链接文件(类似Windows的快捷方式)
  • s:套接口文件
  • b:块设备文件(例如硬盘、光驱等)

  • p:管道文件

  • c:字符设备文件(例如屏幕等串口设备)

2.2.2 基本权限

  1. 读(r): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
  2. 写(w): Write对文件而言,具有修改文件内容的权限;对目录来说,具有删除移动目录内文件的权限。
  3. 执行(x): execute对文件而言,具有执行文件的权限(能执行 = 具有可执行权限 + 本身就是一个可执行文件);对目录来说,具有进入目录的权限。
  4. ”:表示不具有该项权限。

2.3 文件权限值的表示方法、

2.3.1 字符表示方法

2.3.2 8进制数值表示方法

2.4 文件访问权限的相关设置方法

2.4.1 chmod

功能: 设置文件的访问权限

格式: chmod [参数] 权限 文件名(chmod u+-rwx,g+-rwx,o+-rwx,a+-rwx filename

常用选项:

  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式:

🌴用户表示符 +/-/= 权限字符

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户符号:

  • u:拥有者
  • g:所属组
  • o:其它用户
  • a:所有用户

实例:

🌴三位8进制数字

实例:

2.4.2 chown

功能:修改文件的拥有者

格式: chown [参数] 用户名 文件名

实例:

2.4.3 chgrp

功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名

常用选项:

  • -R 递归修改文件或目录的所属组

实例:


🌵如果想同时修改文件或目录的拥有者与所属组:****chown name1:name2 filename

2.4.4 umask

功能:

  • 查看或修改文件掩码。
  • 创建的普通文件,起始权限是:0666,去掉x的。
  • 创建的目录文件,起始权限是:0777,包含x的。
  • 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: *mask & ~umask(***最终权限 = 起始权限 & (~umask)**

格式: umask 权限值

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002

实例:

2.4.5 file指令

功能:辨识文件类型。

语法: file [选项] 文件或目录...

常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容。

使用 sudo分配权限

  • 修改/etc/sudoers 文件分配文件
# chmod 740 /etc/sudoers
# vi /etc/sudoer

格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令


  • 使用 sudo 调用授权的命令
$ sudo –u 用户名 命令

例:

$ sudo -u root /usr/sbin/useradd u2

2.5 对比权限的有无表现

🌻对于普通用户,自身要受到对应权限的约束,即便这个文件是自己的。

🌻对于root,不受权限的约束。

总结:

  1. 权限存在的意义:保证普通用户文件的安全性。
  2. Linux进行权限匹配时,对用户身份进行识别 ,只识别一次。

三、目录的权限

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

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

  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件,、修改文件,也无法在目录中删除文件。

于是, 问题来了~~

换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。

这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下:

为了解决这个不科学的问题, Linux引入了粘滞位的概念:

粘滞位

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

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除

四、权限总结

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

本文转载自: https://blog.csdn.net/weixin_65931202/article/details/139006118
版权归原作者 南风与鱼 所有, 如有侵权,请联系我们删除。

“Linux权限”的评论:

还没有评论