今天学习了Linux的权限相关的知识,在Linux下,有三种“身份”:文件的所属者,与该文件所属者相同组的成员,其他成员。
这里说一下组的概念,组相当于我小时候做值日,每周每天都会有不同的人来打扫卫生,那每天打扫卫生的那批人,就是一个组,在Linux上,假设我们新建一个组A,里边有成员a,b,c。这就构成了一个最简单的组。
其他的两个,很好理解,从词语上来看就能明白意思,这里就不做解释了。
既然有组和用户,那么我们怎么去新建一个组合用户呢?这里用到了useradd和groupadd,介绍这两个命令之前,要先明确uid和gid。
我们都知道,系统在使用用户登录的时候,不可能是用用户名操作的,有过编程经验的人都知道,我们要给每个用户分配一个唯一的ID,系统进行任何操作的时候,都使用这个ID,这样就进行了统一。
在Linux下,uid由32位组成从0开始,60000以内。
其中:0为root用户;
1-499为系统用户;
500之后为普通用户。
下边我们介绍命令的使用方式:
1、
useradd:增加用户
例:useradd zw
这样就建立了一个名为zw的用户。
有以下几个参数:
-d 家目录
-s 指定登录的shell
-u 指定userId
-g 指定主组
-G 指定附属组
2、
userdel:删除用户
userdel 用户名
-r参数,在删除用户的同时,一起删除家目录
3、
groupadd:增加组
groupadd 组名
4、
groupdel:删除组
groupdel 组名
讲完了用户和组的概念之后我们来说一下权限
Linux是根据UGO这三种不同的身份来限制我们的权限的
权限分为3种,r可读,w可写,x可执行
5、
chmod命令:chmod 模式 文件路径
例:为名为test的文件的同族用户增加可执行权限:chmod g+x test
同样的,我们减去一个权限:chmod g-x test
用户和其他也是一样的。
除了这种方式外,我们还可以用数字来代表权限,其中,r=4,w=2,x=1
假设我们现在有这样一组权限
U G O
rwx r-x ---
那么我们可以这样表示
U G O
7 5 0
很简单吧,就是将这些代表的数字相加就ok了。
例:chmod 750 test,就ok了
6、
除了这3X3的权限之外,Linux还有3个特殊权限,名字叫做SUID,SGID,STICKY。
SUID:以文件所属者的身份运行,而不是当前操作的用户。
这个权限存在的意义是:假如我们现在有一个可执行的文件,里边有一条命令,要访问根目录的“test”文件夹,假设这个文件夹里边有很重要的东西,只能root用户访问,其他人都不能看,我们还想使用这个可执行文件,怎么办?如果我们以当前用户去执行这个文件,那肯定会出错的,最好的办法就是,我使用这个文件,以这个文件的所属用户的身份去执行,但我们并没有切换用户,我还是我,但是执行文件却认为我是root,这样一来,我就有权限访问test文件夹了。就可以解决这个问题了。
SGID:在该目录下所新建的所有文件和目录都属于这个组。
STICKY:用户只能删除属于自己的文件。
假如我们有一个文件夹test,里边是公司的一些文件,同一个用户组的人对这个文件夹都有读写的权利,假如员工A创建了一个文件,员工B与员工A有矛盾,B看见A的文件就删,阻止A正常工作,这样可是很不好的。那么设置STICKY权限,就可以阻止这种事情的发生,假如文件的创建者不是B,那么B就不能对这个文件进行操作了。
其中,SUID=4,SGID=2,STICKY=1
那么我们设置的时候就可以变成4位了,顺序是:特殊位,U,G,O
所以命令可以这样写:chmod 1750 test