一、linux文件属性
用户组概念:假如主机有两个团体,第一个团体名为projecta,里面有class1,class2,class3;第二个团体名为projecb,里面有class4,class5,class6.这两个团体之间有竞争性质,却要交同一份报告。每组成员之间必须能够互相修改对方的数据,但是其他组的成员则不能看到本组自己的文件内容。另外,如果teacher这个账号是projecta和projectb两个用户的老师,能够查看两个的进度。这时候引入用户权限问题。
权限的第一个字符代表是目录、文件或链接文件等。若[d]则是目录;[-]则是文件;[|]则是连接文件;[b]则表示设备文件里面的可供存储的接口设备。[c]则表示设备文件里面的串行端口设备,如键盘。
权限分三个部分,第一部分:文件所有者的权限user。第二部分:用户组的权限(group)。第三部分:其他非本用户权限(other)。
例:如果我的目录是下面的样式,请问testgroup用户组的成员与其他人可以进入本目录吗?
drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/
答:文件所有者test1[rwx]可以在本目录中进行任何操作。而testgroup这个用户组[r-x]的账号,如test2,test3也可以进入本目录进行工作,但是不能在目录下进行修改操作(即写)。至于其他用户权限[r--]虽然有r,但是没有x的权限,因此其他用户并不能进入此目录。
二、修改权限
常用的命令为:chgrp:改变文件所属的用户组
chown:改变文件的所有者
chmod:修改文件的权限
例:1) 改变所属的用户组:chgrp
2) 改变文件的所有者:chown
到现在就已经知道了如何改变用户组和所有者了,但是具体什么时候用chown和chgrp呢?确实有时候需要更改所有者的,再例如:复制文件给你之外的其他人时,会连同执行者的属性和权限一同复制,如下:
会看到.bashrc_test还是属于root所有,如此一来,即使你将文件给予这个用户,他仍然无法修改,所以这里必须要修改这个文件的所有者与用户组。这时就会用到修改权限的操作,具体有两种方法:
a、数字类型改变文件权限:
owner, group, others. 三种身份有各自自己的read、write、execute权限。各个权限的数字对照表如下:r: 4; w: 2; x:1
例如当权限是[-rwxrwx---]
计算方法为owner=rwx=4+2+1=7
group=rwx=4+2+1=7
others=---=0+0+0=0,故这个权限就为770,具体的更改权限的语法为:
b、符号型改变文件权限
用u、g、o分别代表owner,group,others三种身份,a代表全部身份。具体写法如下:
如果同时对三种身份进行操作时(如:每个人都赋予写的权限):
如果说要是去掉所有人的可执行权限呢?
到这里,你了解多少了?如果还是有点不明白,接下来再看一个例子:
如果我们用root身份在/tmp下新建一个testing目录,该目录的权限是744且目录拥有者是root。另外在testing中再建立一个空文件testing且权限为600。这时候用一个普通用户去访问testing(或者删除testing)?具体执行情况如下:
但是如果要实现一般用用户访问testing,具体应该怎么做呢?可以考虑把该目录变成用户的:
当然,也可以把root的权限进行修改让一般用户能够访问,并且进行修改也可。
到这里,你会了吗?别说你不会。。。。。
当神已无能为力,那便是魔渡众生