1. Linux的用户分类
Linux下,用户分为两类:
一、root用户,即超级用户,基本不受权限的约束
二、普通用户,使用 adduser 指令新建的用户,是受权限约束的
超级用户的命令提示符是 “#” ,普通用户的命令提示符是 “$” 。
1.1 用户切换
Linux中所有的用户,都要有密码,无论是root用户还是其他用户,即使有多个普通用户,也都要设置密码。
1.1.1 su [root] 指令切换 普通用户 为 root用户:
它不是以登陆的方式切换用户的,就是单纯地转换用户。
回退为之前的用户:
1.1.2 su - root 指令切换 普通用户 为 root用户:
这里的root同样可以省略
su - 指令是以登录的方式切换用户。
1.1.3 su [用户名] 指令切换 root用户 为 普通用户:
可以看到,由 root用户 切换为 普通用户时,不需要输入密码。
这也不是以登陆的方式切换用户的,就是单纯地转换用户。
1.1.4 su - [用户名] 指令切换 root用户 为 普通用户:
由 root用户 切换为 普通用户时,不需要输入密码。
1.1.5 切换 普通用户 为 另一个普通用户:
此时就要输入密码,才能成功切换:
su指令:
su - 指令:
1.2 sudo指令
想要对一条指令进行暂时的提权,要使用sudo指令。
语法:sudo command
演示:
当然这个指令可以正常使用的前提是,我们当前登陆的普通用户,被添加到了系统的白名单中。
否则,我们用adduser建立的用户,是没有办法执行sudo指令的,因为系统不信任你,该用户要在 /etc/sudoers 中。
2. 权限
什么叫做权限?通俗来讲,就是一件事是否允许被你做。
2.1权限认证的是身份,权限和 “人” 有关。
比如说能否在校长办公室办公,取决于你是不是校长。
文件访问者的分类(人):
一、文件和文件目录的所有者、拥有者:u--User
二、文件和文件目录的所有者所在的组的用户:g--Group
三、其他用户:o--Others
具体的用户,比如root和某些普通用户,来充当这些角色。
所属组存在的意义:
比如公司有两个小组A和B,小明是A组的成员,他写了一段非常漂亮的代码,小明就是这个文件的拥有者,他可以去查看、修改代码。而其他用户,尤其是B组的成员不能查看他的代码,但是小明是A组的成员,要和其他成员协作开发项目,所以它的组员不能是其他用户,此时所属组存在的意义就显现出来了,这样本组成员也可以查看代码,以便更好地协作开发项目。
2.2 权限也和事物的 “属性” 有关
就是说事物的属性决定了,该事物只能拥有某些权限。比如说文件,它的属性决定了它可以拥有比如能否可读、写、执行的权限,但不能像食物一样拥有能否可食用的权限。
2.2.1 文件类型(事物属性)
Windows下使用文件名的后缀区分文件类型。但Linux中文件名的后缀没有直接的意义,Linux系统不以文件名的后缀来区分文件类型。当然,这不代表不使用文件名的后缀。在Linux中,如何书写文件名的后缀,看用户需求即可。
分类:
d:目录文件,文件夹
- :普通文件。如文本文件、可执行程序、库文件等
b:块设备文件。如磁盘文件c:字符设备文件。如键盘、显示器文件
p:管道文件。用来进行通信I:软链接(类似Windows的快捷方式)
s:套接口文件

2.2.2 关于gcc

2.2.3 访问权限(事物属性)

可读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
可写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
可执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“-”:表示对应的权限位置,不具有该项权限
2.2.4 详解文件属性


r / - w / - x / -读权限 写权限 执行权限每个位置的含义是确定的。
每一个位置的权限只有是和否,即是否具有该项权限
2.3 chmod指令
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名常用参数:
-R:递归修改指定目录及其子目录下所有文件/目录的权限
2.3.1 文件权限值的表示方法
一、字符表示方法:u表示是拥有者的权限,r、w、x分别表示是否具有读、写、执行的权限
二、八进制数值的表示方法。下面进行解释
2.3.2 修改权限




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


2.4.1 同时修改拥有者和所属组
格式:chown 用户名:用户组名 文件名
使用root用户,同时修改文件的拥有者和所属组:
2.5 chgrp指令
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名

2.6 关于角色身份的认证
问题:

在进行认证的时候,只能选择一个角色进行认证!按照拥有者,所属组的顺序进行认证,二者都不是就认证为其他用户。
3. 权限掩码 umask
3.1 umask指令
功能:查看或修改文件掩码
格式:umask [权限值]


3.2 关于初始权限
普通文件的默认起始权限是0666
目录文件的默认起始权限是0777
验证:
可以发现,普通文件和目录的起始权限并不是666和777,这是为什么?
原因是权限掩码:umask的存在,改变了起始权限。
使用umask,可以限定新创建文件的起始权限。
凡是在umask中出现的权限,不会在最终的文件权限中出现。
最终权限 = 起始权限&(~umask)
普通文件演示:
可以使用umask指令,修改权限掩码,以此来修改文件的起始权限。
4. 关于目录的权限
各字符含义:
r:对目录来说,表示是否具有列出指定目录下的文件的权限
w:对目录来说,表示是否具有新增、删除、修改指定目录下的文件的权限
x:对目录来说,表示是否具有进入对应目录的权限
5. 共享目录
5.1 关于共享
普通用户的家目录:
可以看到,普通用户的家目录权限是700,也就是说,每个普通用户的家目录下所创建的文件,除自己外的普通用户不能进行任何操作。
但是有时候,多个用户间有进行文件数据共享的需求,为了达成共享的要求,所建立的共享文件,不能在任何一个用户的家目录下。
5.2 文件的删除
我们可以选择在/目录下,创建一个目录shared,专门用来进行文件数据的共享。
注意使用root用户创建,因为/的权限:
shared目录 在 /目录 下:
此时所有普通用户的角色都是其他用户。
jxy用户在shared目录下创建一个a.c的文件,并且设置权限为770:
那么此时,其他的普通用户对这个文件,没有可读、写、执行的权限,但是却能删除这个文件!
原因是:一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定!
而shared目录的权限是777:
想要避免这种情况,就要把shared目录的其他用户的 w 权限去掉,这样lxy用户确实不能删除jxy用户创建的文件了,但是此时,任何普通用户都不能在shared目录下创建文件了,这样所谓的共享目录就失去了意义。
5.3 粘滞位
为了解决这个问题,新增了一个权限位:粘滞位,使用 t 来表示。
粘滞位:用来给目录设置的权限位,一般是共享目录,使得每个普通用户可以在该目录下,对各自的文件进行增删改查,同时不能删除彼此的文件,t 是一种特殊的 x 权限。
当一个目录被设置为 “粘滞位” 时,则该目录下的文件只能由文件拥有者和root用户删除。
首先给shared目录的其他用户增加 t 权限:
此时,每个用户都可以在该目录下创建文件,同时该文件不能被其他普通用户删除:
实际上,这个shared目录无需创建,/目录下本就存在所谓的共享目录: