Linux中目录文件权限如何定义?

  在linux里面,任何一个文件都会针对三种角色定义三种权限,这三种角色的就是文件的拥有者(owner),群组成员(groups),其他人(others)。一般来说文件的创建者为文件的所有者,但文件的所有者也可以更改的。一个grous可以有多个成员,这些成员中除了owner之外都拥有对文件的相同权限。others就是即不是文件的拥有者,也不是groups成员的那些用户。系统的群组设定我们在讲账号的时候在详细聊了,这里先有个大概就ok了。

           现在,我们就来谈谈这个文件的权限要如何针对“所有者”与“群组”来设定权限了。这个部分是很重要的,尤其对于初学者来说,如果你没有这方面的知识,可能你的linux之路将会磕磕绊绊的。如果你看到你在操作某一个文件时出现“Permission deny”字样的时候,这可就是因为权限的问题了。

            要谈文件的属性,有一个命令不得不说,就是"ls -al"。“-rw-r--r--   1    root   root      191   Jan  6  2007 .bash_profile”是我在家目录下执行"ls -la"后的其中一条信息, ‘-rw-r--r-- ’是权限,第一个“-”是说这个文件是一个文本文件,如果这个位置是d的话,则说明这个是目录文件,如果是b的话,则说明是block文件,如果是l的话,则是连接文件。这个串供有10个字符,除了第一个文件类型字符之外,剩下的九个字符三个一组就是上面所说的那三种角色的权限,第一组是拥有着的权限,第二组是群组权限,第三组是其他人的权限,其中这个串中r是读权限,w是写权限,x是可以执行权限。注意,对于目录文件,如果想打开,必须要有执行权限,否则即使你有写的权限,也没法打开。权限串后面的那个1是连接,就是说有几个连接指向这个文件。接下下的root是该文件的拥有者,再下面的root是该文件的群组,那个191是该文件的容量, “Jan  6  2007”是文件的最后一次修改日期,“.bash_profile”就是文件名了,注意,这个文件的前面有一个点,这个点可不是随便放在那儿的,当你想隐藏一个文件时,就以“.”这个符号开头吧。

          那么这些文件创建后的权限可以更改吗?当然可以。不仅仅权限可以改,就是群组和所有者都是可以改的。

         chgrp :改变文件的所属群组。【chgrp  [-R] dirname/filename ...】-R是表示目录里面的文件也要改变

          chown:改变文件的所有者。【chown  [-R] [账号名称][:群组名称] 文件或目录】

          那么什么时候一般要改变文件的所有者和群组呢?文件发生拷贝的时候,从一个目录拷贝的另一个目录,如果文件的所有者或群组没有发生改变的话,可能你会发现文件你拷去了,但是却无法修改或打开的情况。

         chmod:改变文件的权限。         上面已经说了,linux文件的基本权限共有九个,就是分别针对上面所提到的三个角色的读写执行权限。我们再次说说上面的提到的文件的权限串:【-rwxrwxrwx】,这个串中除了第一个横线之外zhiw还有九个字符,它们是三个一组的。其中,我们可以使用数字来代表各个权限的,各个权限的分数对照如下:r:4;w:2;x:1。每种身份的各自的三个权限分数是需要累加的,例如:当权限串为【-rwxrwxr-x】时,它的意思如下:owner=rwx=4+2+1=7;groups=rwx=4+2+1=7;others=4+0+1=5。chmod的使用格式为:chmod [-R] xyz 目录或文件。其中xyz就是我们上面说的数字类型的权限属性。还有种更改权限的方式,你可以用man看看具体的使用方法。

        linux的扩展名:其实,linux并没有像windows里面的那样的扩展名的,一个文件可不可以被执行,是跟他的文件类型及权限有关,跟扩展名一点关系没有,有我们出于习惯就用扩展名来知名文件的属性,比如,我们一般用.sh表示shell文件,但其他的文件也可以.sh为扩展名,这丝毫不会影响文件的本来属性。一个文件可以执行并不以为着就能被执行成功,例如install.log是一个文本文件,即使它有了x权限,也不能执行成功的,也就是说。能不能执行成功,当然还需要看看该档案的内容了。

 

  linux的目录:linux是一个很松散的团队来开发的,这个团队里的人太多了,如果每个人都用自己的想法的配置文件的放置目录,那么将会可能造成很多管理上的困扰的。估计没有人能接受进入一个企业之后所接触到的linux目录配置方法跟以前的决然不同吧?所以,后来针对这个问题,就有Filesystem Hierarchy Standard(FHS)标准出炉了。这个标准对开发者的目录配置做了规定,这样,所有的开发者在开发时,他们的目录配置一般都是相同了。但FHS标准也在一直做持续的改版的。

这里要重点讲讲根目录(/),根目录是整个系统的最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机关机系统恢复等有关,因为跟目录是如此的重要的,所以在FHS中建议不要放在非常大的分区中,因为越大的分区你越会放入越多的资料,如此一来根目录所在的分区就可能会有较多发生错误的可能。

下面简要的说说的几个比较重要的系统目录的作用:/etc,设定文件;/bin,重要的执行文件;/dev,所有的的装置文件;/lib,执行文件所需的函数库与核心所需要的模块;/sbin,重要的系统执行文件。这里所说的五个目录千万不要跟根目录放在同一个分区里,一定要记住哟,否则等问题发生的时候,你才意识到问题的严重性就晚了。还有一个目录比较重要,就是/usr,这个目录有点类似与windows下面的【c:\windows\+c:\program files\】这连个目录的综合。一般来说,当系统刚刚安装完毕时,这个目录的容量是最大的。/var这个目录也很重要的,它一般在在系统运行的过程中会变的越来越大的,因为它里面放的都是一下变动的东西。

posted @ 2009-12-17 23:00  不染丹心  阅读(582)  评论(0编辑  收藏  举报