本文将在前面 Linux 基础指令的基础上,为大家讲解 Linux 权限的核心概念,以及文件与目录的权限管理相关知识。
目录
1.权限的概念
2.权限的管理
1.文件访问者的分类(人)
2.文件类型和访问权限
3.文件权限的表示方法
4.文件访问权限的相关设置方法
3.file指令
4.目录的权限
5.关于权限的总结
1.权限的概念
Linux 是多用户操作系统,不同用户对文件拥有不同访问权限,用来保证系统安全,防止普通用户随意修改系统文件。
Linux 文件权限分为三类角色:文件所有者、所属组用户、其他用户。每种角色具备读 (r)、写 (w)、执行 (x) 三种权限。
Linux下有两种用户,超级用户(root)、普通用户
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用su user。
要从普通用户user切换到root用户则使用su root(root可以省略),此时系统会提示输入root用户的密码。
命令 su [用户名] 切换用户,当前工作目录不变
命令 su - [用户名] 切换用户,重新登陆
因为普通用户切换到root用户是需要填写管理者密码,有的时候普通用户不知道管理者密码,或者只需要临时获取管理者的权限,就可以在执行的命令前加上 sudo。
命令 sudo :临时获取管理者的权限
2.权限的管理
1.文件访问者的分类(人)
- 文件和文件目录的所有者:u--User
- 文件和文件目录的所有者所在的组的用户:g--Group
- 其它用户:O---Others
2.文件类型和访问权限
文件类型:
d:文件夹
p-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件基本权限:
读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息
的权限
写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内
文件的权限
执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权
限
“-”表示不具有该项权限
3.文件权限的表示方法
1. 字符表示
r读、w写、x执行,-代表没有对应权限。例如:-rwxr-xr--
- 所有者:rwx(可读、可写、可执行)
- 所属组:r-x(可读、不可写、可执行)
- 其他用户:r--(仅可读)
2. 八进制数字表示
权限可以换算成数字:
r=4,w=2,x=1,同一类用户权限数值相加。
- rwx = 4+2+1 = 7
- rw- = 4+2+0 = 6
- r-x = 4+0+1 = 5
- r-- = 4+0+0 = 4
示例:
rwxr-xr--拆分为 7 5 4,权限数字就是754。
4.文件访问权限的相关设置方法
1.chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限文件名
常用选项:
R->递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限chmod命令权限值的格式:
用户表示符+ - = 权限字符
- +: 向权限范围增加权限代号所表示的权限
- -: 向权限范围取消权限代号所表示的权限
- =: 向权限范围赋予权限代号所表示的权限
用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
实例:
chmod u+w /home/abc.txt
chmod o-x /home/abc.txt
chmod a=x /home/abc.txt三位8进制数字
实例:
chmod 664 /home/abc.txt
chmod 640/home/abc.txt
2. chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名实例:chown user1 f1chown -R user1 filegroup1也可以同时修改所属组
chown user1:group1 test.txt将 test.txt 所有者改为 user1,所属组改为 group1
3. chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名文件名
常用选项:-R递归修改文件或目录的所属组实例:chgrp users /abc/f2
4. umask
功能:
- 查看或修改文件掩码
- 新建文件夹默认权限=0666
- 新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是:mask&~umask
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
3.file指令
file命令用来查看文件的实际类型,Linux 不依靠后缀名判断文件类型。
示例:
file test.sh可以识别普通文件、目录、可执行程序、脚本、压缩包等。
4.目录的权限
我们先通过示例来看一下目录的权限:
- 可执行权限:如果目录没有可执行权限,则无法cd到目录中
- 可读权限:如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容。
- 可写权限:如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件
通常这里会有一个问题就是,只要该目录对其他人有w权限,就可以随意的删除该目录的文件,这显然是不合理的,为解决这个问题,引出一个概念:粘滞位
粘滞位是一种特殊的目录权限,只对目录生效,对普通文件无效。当目录设置了粘滞位之后,目录内的文件,只有文件所有者、root 用户才能够删除或重命名该文件;就算其他用户对这个目录拥有 w 写权限,也不能删除别人创建的文件。
典型例子:Linux 系统的
/tmp临时目录,默认就开启粘滞位,所有用户都可以在里面创建临时文件,但每个人只能删除自己的文件,不能删掉其他人的文件。
查看粘滞位
执行ls -l,目录权限的最后一位如果是t,就代表开启了粘滞位。示例权限:drwxrwxrwt,末尾t表示粘滞位已设置。
设置 / 取消粘滞位命令
# 给目录添加粘滞位 chmod +t testdir # 移除目录粘滞位 chmod -t testdir5.关于权限的总结
- 文件权限:r 读取文件内容,w 修改文件内容,x 代表文件可以作为程序执行。
- 目录权限:r 查看目录内文件列表,w 增删 / 改名目录中的文件,x 允许进入目录。
- 权限分三类角色:所有者、所属组、其他用户,独立控制。
- root 超级用户不受文件权限约束,拥有最高权限。
- 修改权限使用
chmod;修改文件归属使用chown。
以上就是有关Linux 的权限的介绍。