作者qq984722674,有什么问题可以与作者进行交流!
Linux基本权限主要分为两个部分,ugo权限和acl权限,acl权限是对ugo权限的一个补充,因为ugo权限只能用于三个对象ugo,不能为某一个用户单独的设置权限,acl权限就是对这个缺点做了一个补充,acl权限可以对一个单独的用户进行设置权限,并且设置数量不受限制。权限主要有三种权限即r(read读),w(write写),x(execute执行)权限,每一个权限还有与之相对应的数字代表,r也可以用4来表示,w可以用2表示,x可以用1表示。
u:user代表着属主即用户,表明这个文件属于谁;g:group代表着属组,表明这个文件属于哪个用户组;o:other代表着除了用户和用户组之外的用户的权限,除了这三个之外还有一个a即所有人:a(u+g+o),为所有人设置权限,一般很少用。
在设置权限之前我们先查看一下权限,语法是:ll 文件名。我在/tmp/下创建一个test文件,并查看其权限,注意,做实验时务必把文件创建在/tmp/下,因为这个文件夹对所有用户都开放权限!
-rw-r--r--. 1 root root 0 7月 27 19:18 /tmp/test
- 文件类型;rw- 属主的权限;r-- 属组的权限;r-- 其他人的权限;.(点) 权限的扩展;1 文件链接;root 文件的属主;root 文件的属组;0 文件的大小;7月2719:18 文件的最后修改时间;/tmp/test 文件的名字和路径
用来给用户设置权限的语法格式有两种,一种是使用符号创建:chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录,使用符号创建一次只能针对ugo中的一个进行设置,下图我进行了举例,分别为用户和用户组增加了两个权限,然后又删除了增加的权限。
还有一种是使用数字:chmod 数字(4,2,1) 文件或目录 使用这种方法可以一次性对ugo三种权限同时进行设置,例如664即为将u设置为读写(r(4)+w(2))权限,g设置为读写r(4)权限,o设置为读写r(4)权限。下面我贴图举例,通过改变数字来增加权限和删除权限。
除此之外还有一种更改权限的方法,更改用户和用户组已达到更改用户用户权限。语法格式是:chown 用户名,用户组名 文件名或目录名。如下图所示。
更改目录权限和用户和用户组时可以通过-R命令来让目录下面的文件或文件夹具备相应的权限和用户以及用户组,注意:查看目录的权限可以用{ ll -d 目录名 }来完成。如下图所示,创建一个文件夹file99,在里面创建一个文件夹1.txt,一个目录file110,用-R对文件夹file99进行设置,观察目录下的文件变化。如下图所示
接下来是对权限进行一项验证,把用户权限用户权限改为640,即用户有读写执行权限,用户组中的成员有读权限,其他用户没有权限,由此我需要新建三个用户,名为test1,test2,test3用户,并创建一个jishuyuan用户组,来进行验证权限!
上图创建完成了三个用户和一个用户组,并对其进行了验证,用上面更改权限的命令将其更改为:u具有读写权限;g具有读权限;o没有任何权限,也可以使用数字640,这里我就不在截图了,接下来挨个切换用户测试其权限。
如左下图所示,test1用户可以查看编辑文件,但是由于没有执行权限,无法执行。
如上右图所示,test在jishuyuan组中,而jishuyuan组只有读权限,所以写和执行都不能成功。
test3是其他用户,既不是用户,也不是用户组,所以他应该什么权限都没有,什么都做不了,如下图所示。
由于ugo权限的局限性,引出了acl权限,设置acl权限的命令语法格式是:setfacl -m 用户(u)或组(g):用户名或组名:权限 文件对象;查看acl权限的命令是:getfacl 文件名或目录名。
还是接着上个例子,我的test3是没有任何权限的,我对他设置个acl权限,给什么样的权限他就有什么样的权限了,如下左图所示。设置完acl权限后权限扩展.(点)将变成+号,如下右图所示。
接下来切换用户到test3用户,按上面我做过的步骤试验一下test3用户对文件test文件是否有写和读权限就好了。