一.Linux中的用户
Linux中分为两种用户,分别为:
1.root 用户,也叫超级用户,它的权限非常高,不受其他权限的约束,也就是可以为所欲为;
2.普通用户:除了root用户外,都是普通用户,受权限的约束。
我们可以输入命令:ls /home 查看当前根目录下有多少普通用户:
当然也可以添加一些选项,来显示更详细的内容。
提权命令:sudo
可以让一条指令暂时拥有root的权限,但是新建的用户,sudo没有颁发实行,系统并不信任你;
除非加入到信任白名单内。
二.什么是权限
1.权限和人有关;
Lniux中,这里的“人”指的是:
a,所有者
b,所属组
c,其他
2.权限和事物的属性有关
Linux下一切皆文件,而文件具有可读,可写,可执行的属性。
三.文件类型和文件权限
如上图所示,这前面的10个字符,第一个字符表示文件类型,后面的9个字符表示文件属性;
文件类型
文件类型一般有:
d:目录文件
-:普通文件(文本,可执行程序,库都属于普通文件)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件(用来进行通信的)
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件最常见的就是目录文件和普通文件了。
文件属性
这里的文件属性包括:可读(r),可写(w),可执行(x),- 表示无任何权限
这里的9个字符是3个为一组的,按照前后顺序表示:所有者,所属组,其他的权限,且每组内rwx的顺序是严格不变的,即:
1.位置是什么含义是确定的,第一个位置只有 r/- ,以此类推;
2.每一个位置只有是或者否,具有指定的权限。
所以就可以用二进制的0和1表示。
四.文件权限值的表示方法
字符表示法
8进制和2进制表示法
有了这些权限值的表示方法,我们就可以修改一个文件的权限了。
五.文件权限的修改
chmod
字符修改:
所有者,所属组,其它分别用这些字母表示:u,g,o
增加权限 chmod [u/g/o] + [r/w/x] 文件
例:给文件n1加上可执行权限
去除权限也是一样的道理,只需把+换成-即可;
八进制修改
一个八进制数字代表一组,所以一共有三个数字,八进制换算成二进制后,就能知道有哪些权限。
实例:
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt
chown 修改所有者
举个例子,生活中,你把东西给别人,是不是得经过别人得同意啊,别人从你那里拿东西也得经过你的同意。
所以,普通用户是不能自己修改所有者,所属组的,但是root可以,它不受权限的约束。
chown 用户名 文件
例:
chgrp 修改所属组
这个用法和chown一致,只不过他修改的是文件所属组。
总结
当然也可以使用chown指令同时修改所有者和所属组,格式为
chown 用户名:用户名 文件
例:
chown和chgrp后都可以接选项: -R 表示递归修改文件或目录的所有者或所属组。
六.为什么创建文件时的默认权限是这样
我们在创建文件时,默认:
目录文件权限是775
普通文件权限是664
这是为什么呢?
这就要说明 umask 文件掩码了。
umask
umask :查看文件掩码(八进制形式显示)
umask xxx :修改文件掩码
文件掩码作用:凡是在umask中出现的权限都不会在最终权限中出现。
其实,预备:
目录文件权限777
普通文件权限666
在经过文件掩码修饰后才变成了775和664
修饰规则:最终权限=起始权限&(~umask)
以umask=0002为例:
七.目录文件每个权限的作用
r :是否允许我们查看指定目录下的文件内容;
w:是否允许我们在当前目录下进行更改,创建,删除
x :是否允许用户进入对应的目录
上图我们发现,每个普通用户的家目录下,所有者和所属组都是他自己,且所属组和其他没有任何权限,这样当我们在有共享文件的需求是,只能由root用户创建一个共享文件,并把权力全部放开:
但是这样又会引发一个问题,普通用户互相之间可以随意删除这个share里文件,这是不合理的,但是把w权限去掉了,就又不能创建和修改文件了,这也是个问题,那该如何解决这个问题呢?
Linux中给出一个叫粘滞位的概念。
粘滞位
语法:chmod +t 文件
加了粘滞位的文件:
1、超级管理员删除
2、该文件的所有者删除加上粘滞位后,原来的 x 会变成 t 。
八.权限总结
1.目录的可执行权限是表示你可否在目录下执行命令;
2.如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件);
3.而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录;但由于 没有目录的读权限;4.所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档;
🐬🤖本篇文章到此就结束了, 若有错误或是建议的话,欢迎小伙伴们指出;🕊️👻
😄😆希望小伙伴们能支持支持博主啊,你们的支持对我很重要哦;🥰🤩
😍😁谢谢你的阅读。😸😼