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

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

  1. linux命令:文件类型和扩展名

    在linux系统中,一切皆是文件.Linux文件类型常见的有:普通文件.目录文件.字符设备文件和块设备文件.数据接口文件,符号链接文件,数据传送文件等. 1. 普通文件 用 ls -lh 来查看某个文 ...

  2. 每天一个linux命令(24):Linux文件类型与扩展名

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

  3. CentOS(七)--Linux文件类型及目录配置

    这篇随笔将会对Linux系统的文件类型以及Linux的目录结构进行详细补充(linux中目录管理和权限非常重要,特别是在linux安装数据库类软件). 一.Linux更改文件权限的两种方式 在之前的一 ...

  4. Linux文件类型与扩展名

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

  5. linux学习笔记之文件类型,及目录介绍

    引用A:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/20/3033131.html 引用B:http://www.cnblogs.c ...

  6. 每天一个linux命令(24)--Linux文件类型与扩展名

    linux 文件类型和Linux 文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如 file.txt  file.tar.gz.这些文件虽然要用不同的程序来打开,但放在Lin ...

  7. Linux系列教程(五)——Linux链接命令和权限管理命令

    前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...

  8. Linux的文件类型

    在Linux中,文件的颜色都是有含义的.其中, Linux中文件名颜色不同,代表文件类型不一样. 浅蓝色:表示链接文件: 灰色:表示其他文件: 绿色:表示可执行文件: 红色:表示压缩文件: 蓝色:表示 ...

  9. 搞懂Linux下的几种文件类型

    在Linux系统下,有七类文件类型: 普通文件(-) 目录(d) 软链接(字符链接L) 套接字文件(S) 字符设备(S) 块设备(B) 管道文件(命名管道P) 普通文件.目录.软链接无需多解释. 管道 ...

随机推荐

  1. ios开发杂项(基础性介绍等)

    IOS Xcode开发中的文件后缀名区别m,mm,cpp,h .h :头文件.头文件包含类,类型,函数和常数的声明. .m :源代码文件.这是典型的源代码文件扩展名,可以包含Objective-C和C ...

  2. nodejs之SVG转图片下载方案

    本文介绍在nodejs基础上.怎样实现将svg转为png并下载的功能. 所需Webkit和node module简单介绍: phantomjs:一个基于WebKit的server端JavaScript ...

  3. LoadRunner监控Tomcat的几种方法

    通过JConsole监控Tomcat 1.打开tomcat5的bin目录中的catalina.bat文件,在头部注释部分的后面加上: set JAVA_OPTS=%JAVA_OPTS% -Dcom.s ...

  4. java设计模式之策略

    今天你的leader兴致冲冲地找到你,希望你可以帮他一个小忙,他现在急着要去开会.要帮什么忙呢?你很好奇. 他对你说,当前你们项目的数据库中有一张用户信息表,里面存放了很用户的数据,现在需要完成一个选 ...

  5. Tomcat 监控的几种方法

    Tomcat 监控方法 方法1:.使用tomcat自带的status页 具体方法: 步骤1:修改%tomcat安装路径%\conf \tomcat-users文件,配置admin设置权限.在<t ...

  6. linux c++ 文件获取md5

    当前在linux系统下,shell命令可以获取md5值,如下: 如果进行c++编程,在代码里执行shell命令可以获得,但是很不雅观,特别是了解了system或者popen函数的机制之后.现在介绍使用 ...

  7. node.js零基础详细教程(6):mongodb数据库操作 以及导入导出

    第六章 建议学习时间4小时  课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...

  8. VS2012安装git

    新安装了vs2012,尝试使用Git,安装过程比较简单,记录下来以备以后查阅.   1. 下载.安装Git 我的系统是Windows 7,需要安装Git for Windows. 下载地址: http ...

  9. nginx-1.2.7+tcp_proxy_module负载均衡配置

    对于安装方面不清楚的,可移步 nginx + tcp_proxy_module的安装 参考nginx_tcp_proxy_module的readme文件,对每个定义项都做了详细的描述,tcp{...} ...

  10. Atitit。激活某个程序的api attilax总结

    Atitit.激活某个程序的api attilax总结 1. 设置当前某窗口为当前窗口,有几个步骤要做:1.得到窗口句柄FindWindow2.切换键盘输入焦点AttachThreadInput3.显 ...