Linux文件权限

来源:互联网 发布:自动编程 编辑:程序博客网 时间:2024/06/16 04:06

为什么需要权限

Linux最大的特色之一就是多用户,多任务的环境。为了让每个用户的隐私文件得到保护(这只是其中原因之一),因此需要文件权限来使每一个用户确保自己的隐私。

所有者,用户组,其他人

Linux一般把文件将可以存取访问的文件分为三种类别,分别是所有者(owner),(group)用户组,(others)其他人。下面解释这三种类别。

  • 所有者 :当你有某些文件不希望被系统中其他用户所访问,那么就需要把文件设置成只有所有者才能被看见。

  • 用户组 :由于某些原因可能Linux系统中的用户需要一起工作(一个用户可以加入多个用户组),那么这时,需要把文件跟和你一起工作的用户们共享,但又不希望被没又跟你一起工作的用户看到,那么此时就设置成用户组这个权限。

  • 其他人:假设你和其他用户一起工作的时候,有些文件可以被不是你们这组的人和文件所以者的人所访问。那么这时就可以设置其他人这个权限。

tips:在Linux系统中,所以用户的信息都记录在/etc/passwd 这个文件内。而个人密码则记录在/etc/shadow 内。所有的用户组名记录在/etc/group 内。 另外在Linux中有一个角色,可以无视权限直接访问文件。这个角色就是“root”。

文件属性

Linux文件属性是用来描述一个文件的大小,权限,文件名等信息。 下面我们使用ls -al 命令来查看目录下的文件属性。下面这里随便查看一个文件的属性来讲解。

tips:ls其实是list的缩写。也可以使用ll命令来查看目录下所有文件的权限。ll命令是一个环境变量,变量的值就是ls -hl 。 但这个命令不能查看目录下面的隐藏文件!

drwxr-xr-x 2 root root 4096 09-22 17:19 test

首先讲解下各部分的作用。

第一列
这是由十个位所组成的,第一个位表示这是一个什么类型的文件,下面列出了几种字母或者符号所代表的文件类型。

  • 若是【d】则是目录,d就是directory的首字母。
  • 若是【-】则是文件。
  • 若是【l】则是连接文件(linkfile)。
  • 若是【b】则是表示设备文件里面的可供存储的接口设备,例如硬盘。
  • 若是【c】则是表示设备文件里面的串行端口文件,例如键盘,鼠标(一次性读取设备)。

剩下的9个位分为三组,第一组表示所有者的权限,二组表示用户组的权限,第三组表示其他人的权限,这三个组的第一位表示为r(readable)表示可读,第二位表示为w(writable)表示可写,第三位为x(executable)表示可执行。如果为【-】则表示没有该权限。

第二列

每个文件都会将他的权限与属性记录到文件系统的i-node中,但我们的目录树却是使用文件名来记录的,因此每个文件名就会连接到一个i-node。这个属性就记录多少个不同文件名连接到相同的一个i-node号码(Linux创建一个快捷方式就跟这有关)。

第三列 :这个文件或者目录的所有者的账号。

第四列:这个文件所属的用户组。

第五列:这个文件的大小,默认单位为Byte。

第六列:这个文件的创建时间或者修改时间。时间格式为 月-日 时间。

第七列:这个文件的文件名。

目录与文件权限的意义

上面介绍了Linux系统中的三种身份(owner, group, others),还介绍了3种权限(r,w,x)。那么对于目录和文件来说设置了权限有上面意义呢。

  • 权限对文件的意义:文件是包含实际文件的地方,比如一般的文本文件,二进制文件等。下面是三种权限对于文件的意义。

    • r (readable): 可以读去文件内容,如果文件里的文字。

    • w (writable):可以编辑,新增或者修改这个文件的内容(但不包含删除该文件,因为文件的权限其实是对文件内容的权限而不是文件本身)。

    • x (executable): 该文件是否可以被系统执行的权限,在Windows中文件是否可以被执行是看扩展名是否是“.exe”。而在Linux中则是看文件是否具有“x”权限。
  • 权限对目录的意义:文件是存放数据的所在地,目录主要的内容是记录文件名列表。下面是三种权限对于目录的意义。

    • r (read contents directory): 表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录权限的时候,表示你可以查询该目录下面的文件名数据,所以你就可以利用ls这个命令将目录的内容列表显示出来。

    • w(modify contents of directory): 这个权限意味着你对这个目录本身和目录下面的子文件和子目录有如下权限:

      • 新建议个文件和目录。
      • 删除已经存在的文件和目录(无论该权限是什么)。
      • 将已经存在的文件或者目录重新命名。
      • 移动该文件或者目录位置。
    • x (access directory): 目录是不能被系统执行的! 目录的作用只是用来记录文件名而已。目录的“x”权限代表你是否可以把该目录当做你的工作目录(work directory)。所谓工作目录也就是当前所在的目录。例如当你对一个目录有“x”权限,那么你就可以 使用cd(change directory)来把该目录当成你的工作目录。

参考

《鸟哥的Linux私房菜》


如此文章有不对地方请多多指正!

原创粉丝点击