Linux权限的概念
权限是用来限制人的,
权限=人+事物属性
权限存在的意义是便于系统安全管理的
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下几乎可以做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:
su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su
root(root可以省略),此时系统会提示输入root用户的口令
Linux权限管理
文件访问者的分类(人)
文件和文件目录的所有者:
u---User
文件和文件目录的所有者所在的组的用户:g---Group
其它用户:o---Others
文件类型和访问权限(事物属性)
文件可以有的属性是
读,写,运行
文件=内容+属性
在Linux中文件名的后缀,只是给人看的并没有去什么实质性的作用,是文件名的一部分。
而文件类型是用上面图片最前面的字符来区分
文件类型
只有前两个是我们经常看到的
- d:文件夹(目录)
- -:普通文件,文本,可执行,归档(压缩文件)等
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
超级用户和普通用户之间的切换
上面图片演示的就是将超级用户与普通用户之间切换
在这里介绍一下su
和su -
的区别,su
就是在用一个bash
下进行身份切换,su -
让我们的root
重新登录。
当我们在进行普通用户和普通用户之间互相切换时,会发现没有权限,需要知道另一个用户的密码,但是当我们有root的权限时,也就是有root的密码时,是可以切换到另一个用户的,先切换到root然后在切换到另一个普通用户。
在上面讨论文件类型的时候,看的是文本行的第一个字符,我们会发现后面还有九个字符,接下来我们就来讨论剩下的九个字符的意义。这九个字符按顺序三三为一组,前三个是拥有者的权限,中间三个是所属组的权限,后三个是other的权限。在下面介绍的也就是
r、w、x、-
的意思。
- 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
- 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
- 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
- “—”表示不具有该项权限
就例如上面图片,对dir目录的权限,对拥有者的也就是root的权限是可读、可写、可执行。对所属组的权限是可读、不可写、可执行。对other的权限是可读、不可写、可执行。
如何更改文件的权限
上面也是介绍过,权限=人+事件属性.
所以如果想要更改文件的权限,要么改变所有者要么改变文件的属性。
下面就进行修改文件权限的介绍,这只能在拥有者
和root
的情况下进行。
在文件属性的文本行第一个是文件类型,而我们就是用过后就个字符来改变文件权限,用过使用chmod、chown、chgrp。
修改拥有者的权限
chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
- R -> 递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以改变文件的权限
① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
示例如下:
修改权限不只是上面的一种写法,也可以使用八进制数值表示法,三个数为一组,我们把是-
的看作成零,不是的看做成一,就这样组成三个数的二进制,再将二进制转换为八进制,也就是我们想要的结果。
当我们想要所有的权限都关上的时候就可以使用chmod 000 [文件名]
,虽然是全部关上了,但是也就只对普通用户有作用,当我们用超级用户时还是有权限。全部打开权限chmod 777 [文件名]
chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
实例:
修改拥有者sudo chown root text.c
或者在root
下使用chown root text.c
也可以既修改拥有者又修改所属组:sudo chown root:root text.c
chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
实例:
修改所属组sudo chgrp root text.c
或者在root
下使用chgrp root text.c
chown和chgrp在直接使用时,会发现不被允许,这是就需要root介入了,使用sudo或者在root路径下。
目录权限
- 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
- 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
- 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
默认权限
首先提出的问题就是为什么创建的文件的默认权限是664,还有创建的目录时默认权限是775?
(不同的操作系统,默认的权限可能会不一样)
粘滞位
背景:在使用Linux的时候,未来可能会有一些共享目录,被所有的普通用户共享,用来保存普通用户产生的临时数据。
共享目录通常都是root提供的。
粘滞位是在为了让大家共享文件,并且不让其他人随便删除别人的文件的环境下产生的。
粘滞位是只能给目录添加,之后成为共享目录。
下面图片就是添加粘滞位的前后对比,
在特定的目录下,创建或删除文件需要有该目录的W权限决定。
所以也就是w也能保证文件不被删除,但是当我们把other当中的w去掉的话,那么共享文件也就不能在创建新的文件了,所以就必须要使用粘滞位。
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
关于权限的总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这
个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。
- 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
最后:文章有什么不对的地方或者有什么更好的写法欢迎大家在评论区指出 |