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表示。
有了这些权限值的表示方法,我们就可以修改一个文件的权限了。
字符修改: 所有者,所属组,其它分别用这些字母表示:u,g,o 增加权限 chmod [u/g/o] + [r/w/x] 文件 例:给文件n1加上可执行权限
去除权限也是一样的道理,只需把+换成-即可;
八进制修改 一个八进制数字代表一组,所以一共有三个数字,八进制换算成二进制后,就能知道有哪些权限。 实例:
# chmod 664 /home/abc.txt # chmod 640 /home/abc.txt
举个例子,生活中,你把东西给别人,是不是得经过别人得同意啊,别人从你那里拿东西也得经过你的同意。 所以,普通用户是不能自己修改所有者,所属组的,但是root可以,它不受权限的约束。 chown 用户名 文件 例:
这个用法和chown一致,只不过他修改的是文件所属组。
总结 当然也可以使用chown指令同时修改所有者和所属组,格式为 chown 用户名:用户名 文件 例:
chown和chgrp后都可以接选项: -R 表示递归修改文件或目录的所有者或所属组。
我们在创建文件时,默认: 目录文件权限是775 普通文件权限是664 这是为什么呢? 这就要说明 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命令,但仍然没有权限读出目录下的文档;