文章目录

Linux权限
1、Linux用户
- Linux下有两种用户:超级用户(root)、普通用户。
-
命令:su [用户名]
-
功能:切换用户
-
举例:
su xp
。其中,如果普通用户想切换为root用户,直接使用指令su
就行了,不用加root用户名,或者使用指令su -
,需要注意的是这个指令执行之后需要输入root用户的密码。但是如果是root用户切换为普通用户,直接输入su [用户名]
,不用输入密码。普通用户切换为普通用户也需要密码。
2、文件访问者的分类(人)
- 文件和文件目录的所有者:u — User
- 文件和文件目录的所有者所在的组的用户:g — Group
- 其它用户:o — Others
3、文件类型和访问权限(事物属性)
-
文件类型:
-
d:文件夹
-
-:普通文件
-
l:软链接(类似Windows的快捷方式)
-
b:块设备文件(例如硬盘、光驱等)
-
p:管道文件
-
c:字符设备文件(例如屏幕等串口设备)
-
s:套接口文件
-
-
基本权限:
- 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
- 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
- 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
- “-”:表示不具有该项权限
-
权限是约束人的,对应的操作对象,一定要有对应的满足人的需求的属性。如:我们只能在leetcode写算法题,不能在leetcode刷短视频;我们只能在抖音刷短视频,不能在抖音写算法题。
4、文件权限值的表示方法
-
字符表示方法:
Linux表示 说明 Linux表示 说明 r– 仅可读 -w- 仅可写 –x 仅可执行 rw- 仅可读写 -wx 仅可写和执行 r-x 仅可读和执行 rwx 可读可写可执行 — 不可读不可写不可执行 -
8
进制数值表示方法:权限符号(读写执行) 八进制 二进制 r 4 100 w 2 010 x 1 001 rw 6 110 rx 5 101 wx 3 011 rwx 7 111 — 0 000
5、文件访问权限的相关设置方法
5.1、chmod
-
格式:chmod [选项] 权限 文件名
-
功能:设置文件的访问权限
-
选项:
- R -> 递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以改变文件的权限
-
chmod命令权限值的格式:
-
用户表示符+/-=权限字符:
-
举例:
chmod -R u+rwx,g+rwx,o+rwx dirb
-
-
三位8进制数字:
-
举例:
chmod -R 750 dirb
-
-
5.2、chown
-
功能:修改文件的拥有者
-
格式:chown [选项] 用户名 文件名
-
常用选项:-R — 递归修改此目录下所有文件的拥有者
-
举例:
sudo chown -R xp test_dir
,非root用户需要sudo提升权限操作。
5.3、chgrp
-
功能:修改文件或目录的所属组
-
格式:chgrp [选项] 用户组名 文件名
-
常用选项:-R 递归修改文件或目录的所属组
-
举例:
sudo chgrp -R xp test_dir
5.4、umask
-
功能:查看或修改文件掩码。
- 新建文件默认权限 =
0666
- 新建目录默认权限 =
0777
- 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到
umask
的影响。假设默认权限是mask
,则实际创建的出来的文件权限是:mask & ~umask
。
- 新建文件默认权限 =
-
格式:
- umask:查看当前用户的权限掩码
- umask 权限码:设置当前用户的权限掩码
-
说明:将现有的存取权限减去(这里不是单纯的减法,而是对应权限位去除1。如原权限是0666,每个位转换为三位的二进制即为
000110110110
,若权限掩码为0002
,那么权限掩码转换为000000000010
,所以就是把原权限位的倒数第二个二进制位置为0,即y原权限变为000110110100
,每三位转换为8
进制即0664
。注意,如果原权限对应的权限掩码的二进制位为0
,则不进行去除,保持为0
,即不是单纯的减法。)权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022
,普通用户默认为0002
。所以普通用户默认新建文件后的权限码为0664
,新建目录后的权限码为0775
。 -
举例:
umask
和umask 003
和umask 004
6、file指令
-
功能:辨识文件类型
-
格式:file [选项] 文件或目录
-
常用选项:
- -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -z 尝试去解读压缩文件的内容。
-
举例:
file a.out
7、目录的权限
-
可执行权限:如果目录没有可执行权限, 则无法cd到目录中。
-
可读权限:如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
-
可写权限:如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
8、粘滞位
-
功能:防止其他用户删除自己的文件
-
格式:chmod +t 或者 chmod o+t
-
说明:当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
-
一、超级管理员删除
-
二、该目录的所有者删除
-
三、该文件的所有者删除
-
-
举例:
那么好,Linux权限就到这里,如果你对Linux和C++也感兴趣的话,可以看看我的主页哦。下面是我的github主页,里面记录了我的学习代码和leetcode的一些题的题解,有兴趣的可以看看。
Xpccccc的github主页