博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(随用随总结)Linux下面的特殊权限&不同的文件类型
阅读量:4940 次
发布时间:2019-06-11

本文共 2203 字,大约阅读时间需要 7 分钟。

一.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.

2.

3.

转载于:https://www.cnblogs.com/qianxun/p/3372398.html

你可能感兴趣的文章
Chrome常见黑客插件及用法
查看>>
VS2008集成QT的OpenGL开发(实现二维图形的旋转)
查看>>
Oracle 按表名导出数据
查看>>
HDU 1255 覆盖的面积[离散化 + 扫描线 + 线段树]
查看>>
【转】打包 压缩 命令tar zip
查看>>
【转】Android开发实践:自定义带消息循环(Looper)的工作线程
查看>>
HTML 字符实体
查看>>
WinCE下NTFS文件系统的注意点
查看>>
java 实现二分查找法
查看>>
手机端实现6位短信验证码input输入框效果(样式及代码方法)
查看>>
Java进阶学习:log4j的学习和使用
查看>>
LeetCode:分发饼干【455】
查看>>
Middle-help 终极实现元素水平垂直居中
查看>>
Java 将容器List里面的内容保存到数组
查看>>
2016-01-05 y原始数据(2)
查看>>
设置session超时的三种方式
查看>>
在 SharePoint Server 2016 本地环境中设置 OneDrive for Business
查看>>
python数据分析-数据处理
查看>>
【转】JAVA进阶之路
查看>>
java调用sqlserver存储过程
查看>>