1. Linux权限的概念
(1). root与普通用户
Linux下有两种用户:超级用户(root),普通用户
超级用户:拥有最高的权限可以在Linux系统下做任何事,不受限制
普通用户:在LInux系统下做有限的事
超级用户的命令提示符是"# ",普通用户的命令提示符是"$"
权限的本质是:能或者不能做什么事情
为什么有权限呢?
为了控制用户行为,防止错误的发生。
(2). 创建与删除普通用户
使用root账号具有一定风险,其权限太大,可能会因为误操作而造成不可挽回的结果,所以我们最好创建一个普通用户的账号平时使用。我们可以使用adduser来创建一个新的普通用户
我们需要root权限来执行这些命令。
bash
adduser godpc
上面的godpc是要创建的新用户的用户名。执行此命令后,系统将提示你输入密码然后确认新用户的密码,还有一些选择性填写的信息;例如全名,电话等,可以不填
(3). 普通用户与root的切换
我们平时推荐使用普通用户,但是有些指令需要root用户的权限,这时候我们就可以切换用户了
命令:
su 用户名
功能:
切换用户
从root用户切换到普通用户不需要密码,直接就可以切换
从普通用户切换到root用户则需要输入密码,切换到当前目录下
而使用 su -
则相当于重新登陆
切换用户后,想切回上次的用户可以按Ctrl+d实现,也可以输入指令exit
如果我们不知道root的密码但是有需要root去执行某条命令,这是就可以使用sudo指令,来临时提高我们的权限,即 让root用户执行,但是使用sudo需要root用户将我们当前的普通用户添加到可信任白名单中。
操作如下
bash
## Allow root to run any commands anywhere
root ALL=(ALL:ALL) ALL
要添加到白名单的用户名 ALL=(ALL:ALL) ALL
然后就可以啦
2. Linux的权限管理
(1). 文件访问者的分类(人)
权限限制的是人(角色)
权限要求目标必须具备对应的属性->权限=角色+目标属性
角色分为
拥有者:文件和文件目录的所有者:u---User
所属组:文件和文件目录的所有者所在的组的用户:g---Group
other:其它用户:o---Others
没有other是因为other一般都会存在多个,所有除了拥有者和所属组之外的都叫other。
(2). 文件类型和访问权限(事务属性)
开头一个字符是文件类型,文件类型如下
- :普通文件普通文件(指不包含有文件系统信息的结构信息的文件,是用户所接触到的文件,比如常见的.exe,.c,.txt等,归档文件等在Linux中统称为普通文件)。
d :目录(文件夹)。
l :软链接(类似Windows的快捷方式)文件。
b :块设备文件(例如硬盘,光驱等)。
p :管道文件。
s :套接字文件。
c :字符设备文件(例如屏幕等串口设备)。
后面九个字符三三一组
前面三个代表 文件拥有者的权限
中间三个代表 文件所属组的权限
后面三个代表 其他用户的权限
访问权限可以分为:可读(r ),可写(w ),可执行(x)
字符表示法
Linux表示 | 说明 |
---|---|
r - - | 仅可读 |
- w - | 仅可写 |
- - x | 仅可执行 |
r w - | 可读可写 |
r - x | 可读可执行 |
- w x | 可写可执行 |
r w x | 可读可写可执行 |
- - - | 无权限 |
还有八进制数值表示方法
权限符号(读,写,执行) | 八进制 | 二进制 | 说明 |
---|---|---|---|
r - - | 4 | 100 | 仅可读 |
- w - | 2 | 010 | 仅可写 |
- - x | 1 | 001 | 仅可执行 |
r w - | 6 | 110 | 可读可写 |
r - x | 5 | 101 | 可读可执行 |
- w x | 3 | 011 | 可写可执行 |
r w x | 7 | 111 | 可读可写可执行 |
- - - | 0 | 000 | 无权限 |
(3). 文件访问权限的相关设置方法
chmod
功能:设置文件的访问权限
格式:chmod 参数 权限 文件名
常用选项
- R -> 递归修改目录文件的权限
- 说明:只有文件拥有者和root才可以改变文件的权限
① 使用方法1:用户表示符+/-=权限字符
- :向权限范围增加权限代号所表示的权限
- :向权限范围取消权限代号所表示的权限
- = :向权限范围赋予权限代号所代表的权限
用户符号:
- u :拥有者
- g:所属组
- o:other其他用户
- a:所有用户
给其他用户添加权限
给其他用户删除权限
给其他用户赋予w权限
给多个用户改变权限时要用逗号隔开
②使用方法2:三位八进制数字
一个八进制数字就是三个二进制数字
chown
功能:修改文件的拥有者
格式:chown 参数 用户名 文件名
常用选项:
-R 递归修改目录文件的拥有者。
可以看到拥有者已经变成了root了
chgrp
语法:chgrp 选项 用户名 文件名或目录名
功能:修改文件的所属组。
常用选项:
-R 递归修改目录文件的所属组
可以使用chown指令来同时改变拥有者与所属组,中间用冒号隔开。
以上指令都需要root权限
(4). 文件掩码
umask
功能:
查看或修改文件掩码
新建文件夹默认权限为0666(rw- rw- rw-),新建目录的默认权限为0777(rwx rwx rwx),但实际上我们所创建的目录或文件,看到的权限往往不是上面的值,是为什么呢?
原因就是创建文件或目录的时候还要收到umask的影响。假设默认权限时mask,则实际创建出来的文件权限是:mask & ~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可立即产生建立文件时的预设权限。超级用户默认掩码值为0022,普通用户为0002。
可以通过这个指令umask 八进制数 来修改默认的掩码 umask:
新创建出来的默认权限与之前不同了
(5). 权限的作用
可执行权限:如果目录没有可执行权限,则无法cd到目录中。
可读权限:如果目录没有可读权限,则无法使用ls等命令来查看目录中的文件内容。
可写权限:如果目录中没有可写权限,则无法在目录中创建文件。也无法在目录中删除文件。
这样就引出了一个问题:只要用户具有目录的写权限,用户就可以删除目录中的文件,而这显然是不合理的,我创建的文件为什么别人想删就删呢?
为了解决这个问题Linux引入了粘滞位的概念
(6). 粘滞位
为目录添加粘滞位很简单,只需要输入指令 chmod +t 目录名 。
在为目录添加了粘滞位后,该文件就只能由 root用户或者该目录或文件的拥有者来进行删除。
这篇文章就到这里啦ヾ( ̄▽ ̄)Bye~Bye~
祝大家国庆节快乐!!!(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤