在Linux中,我们可以对文件或文件夹设置权限(r,w,x,-)。然而,对文件和文件夹的权限设置,具有不同的意义。下面,通过几个例子来了解一下权限的意义所在。在开始之前,我们需要了解几个修改权限的命令:
备注:在测试环境中,通过两组用户名/用户组来演示。这两组分别为:root/root,Jonathan/Jonathan。此外,下面的例子都是连续的,也就是当前的例子是基于前面的例子。
chgrp - change group,用于修改文件/文件夹的用户组。
现在,/home/Jonathan/JonathanTestFolder下面有一个JonathanFile.txt,先来看一下这个文件的属性,通过ls -l列出:
下面,通过chgrp,将用户组改成root,即:chgrp root JonathanFile.txt
chown - change ownership,使用该命令改变文件/文件夹的owner。其实,也可以通过该命令实现chgrp的功能,下面就通过几个例子来说明:
更改JonathanFile.txt的owner为root:chown root JonathanFile.txt
更改JonathanFile.txt的owner/group为Jonathan/Jonathan:chown Jonathan:Jonathan JonathanFile.txt
更改JonathanFile.txt的group为root:chown :root JonathanFile.txt [其实,这里的冒号(:)也是可以用点(.)代替的,但是我们起用户名的时候,可能也用到来点,所以还是统一用冒号吧]
chmod - change mode,使用该命令改变对文件/文件夹的权限(即rwx-)。改变权限,可以通过下面几种方式:
1. rwx-对应了不同的数值,即r = 4,w = 2,x = 1,- = 0。所以,rwx = 4 + 2 +1 = 7,rw- = 4 + 2 + 0 = 6。那么,表示权限的字符串就可以用相应的数字组合表示。举个例子,现在JonathanFile.txt的权限为:-rw-rw-r--,那么用数值表示就是:-664。现在,我们通过这个命令,改变这个对这个文件的权限为:-rwxrwx---。那么,我们可以执行: chmod 770 JonathanFile.txt (在命令中,第一个字符,也就是表示文件类型的字符不用包括进去)
2. 我们也可以直接用rwx来设置权限。使用这种方式,需要显示制定用户/用户组的权限。在命令中通过ugoa来表示用户/用户组。u代表文件所属着,也就是owner。以此类推:g表示用户组,o表示others。a表示all,所有。上个例子中,我们已经把权限改成了rwx rwx ---,现在我们希望owner的权限依然为rwx,但是用户组权限改为r--,others的权限改为r--,那么我们可以执行:chmod u=rwx,go=r-- JonathanFile.txt
3. 如果我们并不关心当前的权限怎样,我们只是希望所有用户(all)都有x的权限,那么我们可以执行:chmod a+x JonathanFile.txt (+表示增加某种权限,相应的,-表示去除某种权限)
到目前为止,相信我们对chgrp/chown/chmod都有一定的了解了。其实还有很多选项可以和这几个命令组合使用,使用的过程中,就多man吧。那,权限对于文件/文件夹的意义到底是什么呢?
权限对于文件的意义:对于文件而言,权限决定了某个用户可以对一个文件内容可以操纵的程度:对文件可读、可写还是可执行。需要值得注意的是,在Linux中,文件是否可执行并不是通过文件的扩展名控制的,而是看是否具有x权限。我们可能会遇到在网上下载的文件不可执行,那么这种情况可以先检查一下对这个文件是否有x权限。/
权限对于文件夹的意义:其实文件价可以看成一个列表,这个列表里包括来文件价下面的所有文件/文件夹。对于文件夹,r和w都好理解,那么x呢?x代表什么?直接来几个例子吧:
1. 我们修改一下JonathanTestFolder的权限,使得用户Jonathan仅仅具有rw权限,但没有x。那么,ls的时候,我们仅能知道该目录下面有那么一个文件,但详细信息都看不到的。
2. 接着上一个例子,没有x,只有rw,我无法查看该文件夹下面的文件的详细信息,那么我能在这个文件夹下面创建新文件么。答案是否定的,因为我没办法进入到这个文件夹里,就因为没有x
通过以上例子,可以得出x对于文件夹,很重要。即使有rw却没有x,我们也没办法访问文件夹下面的文件。
那么,是不是意味着对文件夹的x权限,都应该给呢?当然不是,当对文件夹有w和x的权限时,我们可以删除文件夹下面的任意文件,即使我们本身对下面的文件没有任何权限。下面来看一个例子:
1. 我们修改一下Jonathan对JonathanTestFolder的权限,使之为rwx
2. 使用root账户在JonathanTestFolder下面建立一个文件rootfile.txt,同时设置权限,使得Jonathan对这个文件没任何权限
3. 使用Jonathan账户,删除rootfile.txt成功!
所以,设置权限,一定要慎重哦!(本文完)