(随用随总结)Linux下面的特殊权限&不同的文件类型

一.Linux的文件信息  

        linux文件被保存在文件系统下,由以下属性组成: ls -l 之后看到的信息 从左到右可以看到文件的以下属性

  1.     各种类型   
  2.     访问权限
  3.      链接数(跟 inode相关,ln 硬链接(会增加同一个inode对应的文件数目),ln -s软链接)
  4.      文件拥有者
  5.     文件拥有组
  6.     修改时间等
  7.     文件名

二. 本文重点介绍各种类型和访问权限举例:

  1. -rwxrwxrwx
  2. drwxrwxrwx
  3. srwxrwxrwx
  4. drwsrwsrwt

三. 最开始的bit表示文件类型:

文件类型的缩写、翻译及别称
文件类型缩写英文其他名称
普通文 - Regular file  
目录文件 d Directory file  
块特殊文件 b Block special file 块设备文件
字符设备文件 c Character special file 字符设备文件
先进先出 p FIFO named pipe,命名管道
套接字文件 s Socket  
符号链接 l Symbolic link 软链接

各文件类型简介

各文件类型的主要含义如下[1]

普通文件(Regular file)
普通意义上的文件,如数据文件、可执行文件等。
目录文件(Directory file)
Linux中目录也是一种文件。目录文件包括了文件夹中所有文件的名字和在分区中的位置。目录文件的权限意义也较特殊。
块设备文件(Block special file)
一种提供带缓冲的固定大小单元读写的设备文件。如硬盘设备(/dev/sda)及硬盘分区(/dev/hda1)等。
字符设备文件(Character special file)
此种类型文件提供无缓存的变长单元读写。一个设备如果不是块设备,就是字符设备。
命名管道(named pipe或FIFO)
用于系统进程间通信的文件。
套接字文件(Socket)
进程之前通过网络进行通信的文件。多数网络连接都是用Socket建立的。
符号链接(Symbolic link)
此种文件仅是一个链接。

四. 文件默认权限,特殊权限

文件权限默认是: 644 rw-r--r--

文件夹权限默认: rwxr-xr-x 表示 755

下面重点讲解特殊权限:   

一般来说,使用过Linux的同学都知道,Linux文件的权限有rwx,所有者、所有组、其它用户的rwx权限是彼此独立的。为此,经常会听到如果某个web文件需要被修改的话,需要加上777的权限,这就是让所有用户可写。

    但仔细一想,这样的权限未免有些想得比较天真,没有考滤特殊情况。例如/tmp目录默认权限是777,而且有些文件也是允许所有用户访问修改的,那么是不是任何一个用户都可以将这些删除呢?再如/etc/shadow保存的是用户密码文件,默认情况下它的权限是640,那么只有shadow的owner(root)才能修改它,按照常规理解,这是不可理解的,因为每个用户都可能修改密码,也就是会修改这个文件。

    为了把这些情况解释清楚,需要引入Linux特殊文件权限的概念。Linux特殊文件权限有三个玩意:sticky bit、SGID、SUID,以下一一道来。

    sticky bit

    sticky bit只对目录有效,使目录下的文件,只有文件拥有者才能删除(如果他不属于owner,仅属于group或者other,就算他有w权限,也不能删除文件)。

    加sticky bit的方法:

    chmod o+t /tmp或者

    chmod 1777 /tmp

    查看是否加了sticky bit,用ls -l,可以看到有类似这样的权限:“-rwxrwxrwt”,t就代表已经加上了sticky bit,而且生效了,如果显示的是“-rwxrwxrwT”,说明也已经加上了sticky bit,但没有生效(因为本来other就没有写的权限)。

    看看/tmp目录的权限,就是drwxrwxrwt吧

    SGID(The Set GroupID )

    加上SGID的文件,表示运行这个程序时,是临时以这个文件的拥有组的身份运行的;加上SGID的文件夹,表示在这个目录下创建的文件属于目录所有的组,而不是创建人所在的组,在这个目录下创建的目录继承本目录的SGID。

    加SGID的方法:

    chmod g+s /tmp或

    chmod 2777 /tmp

    查看是否加了SGID,用ls -l,可以看到类似这样的权限“drwxrwsrwx”,s就代表已经加上了SGID,而且生效,如果显示“drwxrwSrwx”,说明已经加上了SGID,但没有生效(因为本来group就没有执行的权限)。

    SUID(The Set UserID)

    SUID与SGID是一样的,惟一不同的是,运行时是以这个文件的拥有者身份来运行。

    加SUID的方法:

    chmod o+s /tmp或

    chmod 4777 /tmp

    同样的,加了SUID的文件权限有这类似这两种:“drwsrwxrwx”、“drwSrwxrwx”。

    看看passwd命令的权限:ll /usr/bin/passwd,是"-rwsr-x-rx",终于知道为什么执行passwd时,可以修改/etc/shadow文件了吧。

参考文献:

1. http://linux-wiki.cn/wiki/%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5

2.http://blog.chinaunix.net/uid-22566367-id-3080977.html

3.http://linux.chinaitlab.com/command/794584.html

原文地址:https://www.cnblogs.com/qianxun/p/3372398.html