【Linux】Linux权限

时间:2024-11-04 21:09:49

本文将会围绕着下面5个问题进行讲解:

  1. 认识Linux下用户的分类
  2. 什么叫做权限
  3. 没有权限会有什么现象
  4. 如何进行权限的修改
  5. 其他与权限相关的问题

好了,本章内容就要开始了,准备你的大脑,开凿吧!!!


认识Linux下用户的分类

root用户:超级用户

普通用户:自己新建的用户

二者的差别:root用户基本不受权限的约束,普通用户是受权限约束的。

问:这俩个用户之间是如何切换的?

        Linux中所有的用户都要有密码,无论是root还是其他,即使多个普通用户,也都要设置密码。这里建议root账号的密码和其他普通用户的密码不同。

  • 普通用户切换到超级用户

su:切换到root账号,输入root密码

exit:回退到普通用户

Ctrl + D:回退到普通用户

su - :切换到root账号,输入root密码

  • root用户切换到普通用户

su 用户名:切换到普通用户,不用输入用户密码

exit:回退到普通用户

  • 普通用户切换到普通用户

su 普通用户:切换到普通用户,需要输入对应密码

Ctrl+D / exit :退回

如何只对一条指令进行提权?

        如果我们想暂时的对一条命名进行提权,可以输入指令:sudo command,这样就可以将sudo后面的指令切换成root指令了。

【注意】目前使用adduser新建的用户,没有执行sudo的能力,系统不信任你,除非未来将普通用户添加到系统信任白名单中——即诚信用户才可提高权限。

权限是什么

一件事情是否允许被你做——你的权限。

  • 权限认证的是身份,权限是和人有关系的。

即一家公司是否允许被进入,需要证明是否是这家公司的员工;或者说如果你是视频VIP会员,你将被允许看VIP视频。这就是权限,与你这个人以及身份有关。

  • 权限也和事物的“属性”有关

即你的身份是可以进入篮球场的进行观看的,但是你在篮球场却干起了炒菜,这就和球场的属性不同了。就以文件为例子,文件的属性是可读的、可写的、可以被执行的。

下面我们就看看不同用户在不同的文件上的权限?

每一个文件的属性详情的左侧都有着十个字符,下面我们来一一分解:

第一个字符——文件的类名

在Linux系统中,文件名后缀没有直接的意义,当然,这里的没有意义不代表可以没有用处,就比如说gcc,gcc是一款编译器,软件,这款软件在编译的时候会识别是否是.c或者.cpp后缀的文本文件。也就是说,不代表其他Linux系统上运行的其他软件不需要后缀。

  • - : 普通文件——文本、可执行程序、库基本都属于是普通文件。
  • d:目录文件
  • b:块设备文件——磁盘文件
  • c:字符设备文件——键盘、显示器文件
  • p:管道文件——用来进行通信的

... ...

在Linux中如何看待后缀:看用户需求。

后九个字符——文件的权限属性

在后面九个字符中,可以发现都是由四个字符组成:

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

在Linux中,“人”是如何理解的?

人可以分成:具体的用户与角色,角色或者说是一种权限身份。(就比如说教师办公室,你的身份是老师,同时你的权限身份是允许进入的人)

在Linux中,具体的用户分为俩种:root用户和普通用户

在Linux中,角色或者权限身份分为三种:拥有者、所属者、其他人

那么,角色和具体的用户是什么关系呢?

那么后面九个字符是如何归类的?

以test.c文件中的所属者rw-为例子

r 有读权限,w 有写权限, - 没有执行权限

  1. 位置的含义是确定的,
  2. 每一个位置只有是或者不是,具有指定的权限。

文件的类型

那么其他人(other)呢?

用户进行判断是否是拥有者和所属者,如果二者都不是,就是other

三种权限的存在和不存在是什么现象

指令chmod

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

格式:chmod [参数] 权限 文件名

常用选项:

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

chmod命令权限值的格式:

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

  • +:向权限范围增加权限代号所代表的权限
  • -:向权限范围取消权限代号所代表的权限
  • =:向权限范围赋予权限代号所代表的权限
  • 用户符合
  • u:拥有者
  • g:所属者
  • o:其他用户
  • a:所有用户

2.三位8进制的数字

就以test.c文件为例子,看看权限的现象。

这里基本就能明确,u(user)、g(group)、o(other)通过+\-来设置权限。

权限的更改

权限属性的更改

权限属性的更改方式有俩种:以用户表示符 +/-/= 权限字符设置,另一种是以八进制形式设置。

下面简单演示一下俩种形式的设置。

第一种:

u+w:代表拥有者+可写权限

第二种:

如果说1代表权限允许,0代表权限不允许,那么在拥有者的权限设置为111就是全都允许,把111设置成8进制就是7。

那么776就是111 110 110.

权限拥有者的更改

chown指令

功能:修改文件的拥有者

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

chgrp指令

功能:修改文件或目录的所属组

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

常用选项:-R 递归修改文件或目录的所属组

将拥有者设置成abai 

将所属者设置成abai 

将拥有者和所属者设置成dabai

【注意】必须切换到root账号才能进行设置。在进行认证的时候,只能选择其中一个角色进行权限判定(类似于if\else)

其他问题

问题一:起始权限

子问题一:为什么我们创建文件的默认权限是我们看到的固定样式?

子问题二:为什么普通文件的八进制是664

子问题三:为什么目录文件的八进制是775

操作系统默认给普通文件的起始权限其实是666,给目录的起始权限是777.

指令umask

功能:查看或者修改文件掩码

格式:umask权限值

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

umask时权限掩码:凡是在umask中出现的权限不会在最终的文件权限中出现。

虽然新建文件夹默认权限是0666,新建目录默认文件权限是0777,但是实际上所创建的文件和目录,看到的权限往往不是上面的这个值。原因就是创建文件或目录的时候,还要受到umask的影响。假设默认权限是mask,则实际创建处理的文件权限是:mask & (~umask)

问题二:目录权限

  • -r:读权限不会影响进入目录,但是不允许查看文件下面的内容
  • -w:写权限不允许在目录传教,更改,“删除”
  • -x:是否允许用户进入对应目录

问题三:共享目录

  1. 普通用户自己的家目录权限是700,也就是说我在我们家目录下面创建的文件别人是看不到的。
  2. 有时候,我们多个用户想进行文件数据之间的共享,我们所建立的共享文件,不能在任何一个人的家目录下面。
  3. 一个文件能否被删除,并不由文件本身决定,由这个文件所处的目录决定。
  4. 如果我们去掉了共享目录的权限,我们也同时无法创建文件了,共享目录的价值就无法体现。
  5. 粘滞位

粘滞位:给目录设置,一般是共享文件,大家可以进行在目录中进行各自文件的增删改查

【注意】只允许文件的拥有者/root删除此文件,其他人不允许;t是特殊的x权限。