本文将会围绕着下面5个问题进行讲解:
- 认识Linux下用户的分类
- 什么叫做权限
- 没有权限会有什么现象
- 如何进行权限的修改
- 其他与权限相关的问题
好了,本章内容就要开始了,准备你的大脑,开凿吧!!!
认识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 有写权限, - 没有执行权限
- 位置的含义是确定的,
- 每一个位置只有是或者不是,具有指定的权限。
文件的类型
那么其他人(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:是否允许用户进入对应目录
问题三:共享目录
- 普通用户自己的家目录权限是700,也就是说我在我们家目录下面创建的文件别人是看不到的。
- 有时候,我们多个用户想进行文件数据之间的共享,我们所建立的共享文件,不能在任何一个人的家目录下面。
- 一个文件能否被删除,并不由文件本身决定,由这个文件所处的目录决定。
- 如果我们去掉了共享目录的权限,我们也同时无法创建文件了,共享目录的价值就无法体现。
- 粘滞位
粘滞位:给目录设置,一般是共享文件,大家可以进行在目录中进行各自文件的增删改查
【注意】只允许文件的拥有者/root删除此文件,其他人不允许;t是特殊的x权限。