我们知道档案权限对于一个系统的安全性的重要性了,也知道档案权限对于使用者与群组的相关性,那么如何修改档案的权限与属性呢。几个常用于群组/拥有者/各种身份的权限修改的指令,如下所是

chgrp : 改变档案所属群组
chown : 改变档案拥有者
chmod : 改变档案的权限,SUID,SGID,SBIT等等的特性

改变群组chgrp

假设你是以root的身份等入linux系统的,那么在你的家目录内有一个install.log的档案,如何将该档案的群组改变一下呢,假设你已经知道在/etc/group里面已经存在一个名为user的数组,但是,testing这个群组名字就不存在/etc/group当中了,此时改变群组成为user与testing分别有什么现象发生呢。

这里写图片描述

发现了吗?档案的群组被改为了users了,但是要改成testing的时候,就会发生错误。

改变档案拥有者chown

如何改变一个档案的拥有者呢?那就是chown这个指令了,要注意的是,用户必须是已经存在系统中的帐号,也就是在/etc/passwd这个档案中的有记录的用户名称才能改变。

chown的用途还是很多的,它也可以顺便直接修改群组的名称呢。此外如果要连目录的所有次目录或档案同时更改档案拥有者的话,直接加上-R的选项即可。

这里写图片描述

tips:事实上,chown也可以使用chown user.group file,亦即在使用者与群组之间加上.也行。不过很多朋友设定帐号时,喜欢在帐号当中加入小数点(例如user.group这样的帐号格式),这样就会造成系统的误判。所以我们比较建议使用:来隔开拥有者与群组。此外,chown也能单纯的修改所属的群组呢。例如chown .sshd install.log就是修改群组。

知道如何改变档案的群组与拥有者了,那么什么时候要使用 chown 或 chgrp 呢?或许你会觉得奇怪吧? 是的,确实有时候需要变更档案的拥有者的,最常见的例子就是在复制档案给你之外的其他人时, 我们使用最简单的 cp 指令来说明好了:

这里写图片描述

假设你今天要将.bashrc这个档案拷贝成为.hashrc_test档名,且是要给bin这个人,你可以这样做:

这里写图片描述

由于复制行为(cp)会复制执行者的属性与权限,所以,怎么办。.bashrc_test还是属于root所拥有的,如此一来,即使你将档案拿给bin这个使用者了,那他仍然无法修改,所以你就将这个档案的使用者与群组修改一下。

改变权限chmod

档案权限的 改变使用的是chmod这个指令,但是,权限的设定有两种方法,分别是使用数字或者符号来进行权限的变更。

数字类型改变档案权限

linux档案的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。这九个权限是三个三个一组的。其中,我们可以使用数字来代表各个权限,各个权限的分数对照表如下:

r:4
w:2
x:1

每种身份(owner/group/others)各自的三个权限分数是需要累计的,例如当权限为: [-rwxrwx—] 分数则是:

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= — = 0+0+0 = 0

所以我们设定权限的变更时,该档案的权限数字就是770了。变更权限的指令chmod的语法是这样的:

这里写图片描述

举例来说,如果要将.bashrc这个档案所有的权限都设定启用,那么就下达:

这里写图片描述

那如果要将权限变成-rwxr-xr–呢。那么权限的分数就成为[4+2+1][4+0+1][4+0+0] = 754;所以你需要下达chmod 754 filename.另外,在实际的系统运作中最常会发生的一个问题就是,常常我们以vim编辑一个shell的文字批处理文件,他的权限通常是-rw-rw-r–也就是644,如果要将该档案变成可执行文件,并且不要让其他人修改此档案的话,那么就需要-rwxr-xr-x这样的权限。因此就要下达chmod 755 test.sh的指令。

还有一个该百年权限的方法。从之前的介绍中我们可以看到,基本上就九个权限分别是(1)user(2)group(3)other三种身份。那么我们就可以由u,g,o来代表三种身份的权限。此外a代表all亦即全部的身份。那么读写的权限就是rwx了。也就是使用下面的方式:

这里写图片描述

来实际操作一下吧。加入我们要设定一个档案的权限成为-rwxr-xr-x时,基本上就是:
user(u):具有可读/可写/可执行的权限;
group与other(g/o):具有可读与执行的权限;
所以就是:

这里写图片描述

那么假设是-rwxr-xr–这样的权限呢。可以使用chmod u = rwx,g=rx,o=r filename来设定。此外,如果我们不知道原先文件的属性,而我只想增加.bashrc这个档案的每个人均可写入的权限,那我就可以使用:

这里写图片描述

知道+,-,=的不同点了吗?对啦,+与-的状态下,只要是没有指定到的项目,则该权限不会被变动。

Logo

更多推荐