zoukankan      html  css  js  c++  java
  • (随用随总结)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

  • 相关阅读:
    【转帖】太晚睡觉等于自杀(一定要看看,以后不熬夜了!)程序员必看
    C盘碎片整理时“无法移动的文件”的处理
    【转帖】VS2008+SQL2005开发环境搭建
    【转帖】财务尽职调查资料收集总结
    SQL2005开发版SSIS正常连接需要修改的地方
    【未解决】制作可选择目录树的控件(替换使用参数进行递进选择)
    【未解决】VS2008与Reporting Services结合生成的网站,速度超慢,何故?
    新博开张
    【已解决】尝试为文件 ......\App_Data\aspnetdb.mdf 附加自动命名的数据库,但失败...
    SSRS表达式
  • 原文地址:https://www.cnblogs.com/qianxun/p/3372398.html
Copyright © 2011-2022 走看看