文章目录
前言引入
当我们在命令行输入ls - l
这样的指令的时候,系统会出现这样的信息
而这些信息中就包含这这个文件权限概念,这些权限有什么用处呢?以及权限的是否可以设置,怎么设置?如果想要了解一下Linux的权限就继续往下探索吧。
一、Linux权限的概念
在Linux系统有着严谨的规则,什么人对什么文件做了什么事情都是有记录的。在这样一个共享的平台上,对于保护自己的目的就出现了权限的概念。
Ⅰ.用户
在Linux上人与人之间称之为用户之间。而用户有两种:超级用户(root),普通用户。
超级用户: 可以在Linux系统下做任何事情,不收限制。命令提示符为"#"。
普通用户: 在Linux是受限制的,命令提示符为"$"。
所以可以看出权限的概念只是针对普通用户来说的,root可以“无法无天”。
那普通用户能不能有朝一日可以成为root,或者短暂的提升自己的地位和root有一样的权限呢?
普通用户切换为root
指令: su -
注意:记得要输入root的登录密码
root切换为普通用户
指令: su - [用户名]
注意:这里不用输入密码了
普通用户短暂的提升自己的权限,可以使用sudo
命令,但是普通用户可以使用sudo
指令必须要通过root将普通用户放在信任列表中才可以使用
首先su -
切换为root用户,然后vim /etc/sudoers
,翻到最下面的这个位置
在下面的列表中添加普通用户的账号即可。
二、Linux权限的管理
简介:
Linux下一切皆文件,所以权限就是对普通用户的操作文件进行限制。
- Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
- Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置- 不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
- Linux上通常使用chmod命令对文件的权限进行设置和更改。
前言中的图:
Ⅰ、文件的权限
Ⅰ.1.文件访问者的分类
- 文件和文件目录的所有者:u - User(拥有者)
- 文件和文件目录的所有者所在的组的用户:g - Group(群组)
- 其他用户:o - Other(其他人)
对应着前言中的图片:
黄色方框(第一个zhy):u - 拥有者
绿色方框(第二个zhy):g - 所属群组
除了拥有者和所属的群组中的人,其他的人都是other。
Ⅰ.2.文件类型和访问的权限
文件类型和文件的访问权限体现在前10个字符中。
文件类型:
第一个字符表示:文件的类型,说明在Linux中一个文件的类型不是像在windows中是由文件的后缀决定的,而是由这里第一个字符决定的。
常见的文件类型的汇总:
- d:目录(文件夹)
- -:普通文件
- l:软链接(类似windows中的快捷方式)
- b:块设备(例如硬盘、光驱)
- p:管道文件
- c:字符设备文件(例如屏幕)
- s:套接口文件
文件的权限分类:
1)读(r/4):r对普通文件而言,具有读取文件内容的权限;对于目录而言,具有浏览该目录的权限。
2)写(w/2):w对普通文件而言,具有修改文件内容的权限;对于目录而言,具有在目录下删除移动和创建文件的权限。
3)可执行(x/1):x对普通文件而言,具有执行文件内容的权限;对于目录而言,具有进入该目录的权限。
4)"-"表示不具有对应位置上的权限。(对应位置的意思:rwx都是有固定位置的,在每3个字符的组中第一个字符一定表示是否具有r权限,第二个字符一定表示是否具有w权限,第三个字符一定表示是否具有x权限)
总结:
Ⅰ.3.文件权限值的表示方法
文件权限值的表示方法有两个:1.字符表示法 2.8进制数值表示法
Ⅰ.3.1.字符表示
Linux字符表示 | 说明 | Linux字符表示 | 说明 |
---|---|---|---|
- - - | 无权限 | r - - | 只读 |
- w - | 只写 | - - x | 可执行 |
r w - | 可读可写 | r - x | 可读可执行 |
- w x | 可写可执行 | r w x | 可读可写可执行 |
Ⅰ.3.2.八进制表示表示
将每3个字符分成有一组,正好可以用三个比特位来表示权限状态。
权限符号 | 八进制 | 二进制 |
---|---|---|
- - - | 0 | 0 |
r - - | 1 | 100 |
- w - | 2 | 010 |
- - x | 3 | 001 |
r w - | 4 | 110 |
r - x | 5 | 101 |
- w x | 6 | 011 |
r w x | 7 | 111 |
Ⅰ.4. 设置文件访问权限的指令
Ⅰ.4. 1 chmod指令
指令介绍: 设置文件的访问权限
语法: chmod 权限 文件
注意: 只有文件的所有者和root才可以改变文件的权限。
chmod +r 或者 chmod a + r :都表示提升所有的人的读权限
因为权限值有两种表示方法,所以设置权限值就也有两种设置方法。
第一种设置法:字符设置
单人权限的提升
chmod u+rwx test.cpp:给拥有者提升可读可写可执行权限
多人权限的提升
chmod u-x,g-w,o-r test.cpp:给拥有者去掉可执行权限,群组去掉可写权限,其他人去掉可读权限
第二种设置法:八进制数字表示
权限符号 | 八进制 | 二进制 |
---|---|---|
- - - | 0 | 0 |
r - - | 1 | 100 |
- w - | 2 | 010 |
- - x | 3 | 001 |
r w - | 4 | 110 |
r - x | 5 | 101 |
- w x | 6 | 011 |
r w x | 7 | 111 |
chmod 664 test.cpp:u具有可读可写,g具有可读可写,o具有可读可执行
Ⅰ.4. 2 chown指令
指令介绍: 修改文件的拥有者
语法: chown 用户名 文件名
注意: 如果需要修改为root用户名,需要短暂的提升自己的权限,使用sudo
指令。
sudo chown root test.cpp:将文件拥有者改为root
Ⅰ.4. 3 chgrp指令
指令介绍: 修改文件或者目录的所属组
语法: chgrp 群组名 文件名
注意: 如果需要修改为root用户名,需要短暂的提升自己的权限,使用sudo
指令。
sudo chgrp root test.cpp:将文件所属组改为root
Ⅰ.4. 4 umask指令
知识铺垫: 当一个文件或者目录被创建的时候,有默认权限。文件的默认权限是0666(-rw-rw-rw-),目录的默认权限是0777(drwxrwxrwx)。
但是实际上的权限却好像在o
的权限中少了一个w
权限。这就是因为有umask的存在。
指令介绍: 查看或修改文件掩码
语法: umask 或者 umask 权限值
注意: 将现有的存取权限去掉权限掩码中的权限值后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
umask :查看当前的权限掩码
解释普通文件最终权限是(-rw-rw-r–,即664)
总结: 最终权限 = 文件的默认权限 & (~umask)
umask 004:设置权限掩码值为004
Ⅰ.4. 5 补充:file指令
指令介绍: 辨识文件类型。
语法: file 文件或者或者其他类型的文件
file dir:查看dir的文件类型
常用选项:
- -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -z 尝试去解读压缩文件的内容。
Ⅱ、目录的权限
普通文件的权限rwx代表读,写,执行。那目录的rwx代表这什么呢?
- r : 可以浏览该目录的详细信息
- w : 可以在该目录下创建、删除、移动文件
- x : 可以进入该目录
目录的权限修改同文件的权限修改。
四、粘滞位
在Linux中虽然读、写、执行都有权限,但是删除似乎权限的限制就不那么明显了。
一种制止方法是:将保护的文件放在一个其他人不可以进入(没有x权限)的目录中,如此就不可以删除目录中的文件了。
另一种方法就是:粘滞位。
语法: chmod +t