准备工作:先简单了解Linux文件权限  

  在Linux系统中,ls -l 命令可以查看文件的权限,如

    [zhaohuizhen@localhost Test]$ ls -l a
    -rw-rw-r--. 1 zhaohuizhen zhaohuizhen 121 Oct 14 20:26 a

  文件a权限就在第一列,第一位-,代表文件a时普通文件。后面9为就是文件权限,rw-rw-r--,前三位对应文件属主权限,中间三位代表属组权限,最后三位代表其它用户权限。

  r 读权限 w写权限 x执行权限 -无任何权限。

  

  1)改变权限属性命令chmod

  chmod可以用来改变文件或目录权限的命令,但只有文件的属主和超级用户root才有这种权限。通过chmod改变文件或目录的权限有两种办法:一是通过权限字母和操作符表达式的方法来设置权限;另一种是通过使用数字方法来设置权限。

  a 数字权限法

    chmod [数字组合] 文件名

    -R 可以改变某个目录下所有文件的属性

    4 读 2 写 1 执行 0 无权限

  b 字符式文件表示法

    u 属主 g 属组 o 其它用户

    + 增加 - 减去 = 设置

    r 读 w 写 x 执行

  2)改变文件所属关系命令chown

    当我们要改变一个文件的属组,我们使用的用户必须是文件的属组而且同时是目标属组的成员,或超级用户。只有超级用户才能改变文件的属主。

    chown 语法:

    chown [选项] [所有者][:[组]] 文件  #:可以被.代替

    用chgrp 可以改变文件属组

  总结测试:Linux普通文件的读写执行权限说明

    可读r:表示具有读取文件内容的权限

    可写w:表示具有修改文件内容的权限

      (特别提示:删除文件,修改文件名,新建文件的权限是受父目录权限控制,和文件本身权限无关)

    可执行x:表示具有执行文件的权限(文件本身能够执行,普通用户同时还需具备r的权限,root权限也能执行,当然文件本身也需要能够执行。)

  总结测试:Linux目录的读写执行权限说明

    可读r:表示具有浏览目录下面文件及目录的权限,即ls dir。(不能进入目录里,即无法cd dir,如果没有x权限,列表时也有问题,ls -l dir列表属性会有问号,提示没有权限。)

    可写w:表示具有增加,删除,或修改目录内文件名的权限(需要x权限配合)

    可执行x:表示具有进入目录的权限;例如 cd dir。

  Linux文件与目录权限对比说明:

  r(read,读权限):

    对文件而言,表示具有读取文件内容的权限。

    对目录来说,表示具有浏览目录的权限(注意,与进入目录的权限不同),要x权限配合。

  x(execute,执行权限):

    对文件而言,表示具有执行文件权限。对于可执行脚本文件,普通用户还需要r权限配合,root用户无需r权限;对于可执行程序,则无需r权限配合。

    对目录来说,表示具有进入目录的权限。

  -(无任何权限)

    若对应位为”-“,表示无任何权限。

  特别注意:

    当删除或移动一个文件或目录,仅与该文件与目录所在的上一层目录权限有关,与该文件本身属性没有任何关系。对于文件来说,写文件是修改文件,而不是删除文件,因此写文件是与该文件的本身        属性有关的。

  默认权限分配的命令umask

  工作中,一般默认权限,对目录是755,对文件是644。这是相对安全的权限。工作中尽量让我们的文件和目录达到以上默认权限。

  Linux系统中,文件的默认权限是由umask确定的。创建文件时,默认最大权限是666,创建文目录最大权限是777,然后根据umask值,屏蔽对应权限。在/etc/login.defs文件中可以查看umask在不同目录下的默认权限值。对家目录,默认权限umask 077.

  改变文件及目录的默认权限:

  umask 022 022

  设置用户ID位 suid:用s表示。

    1)用户对应的前三位的x位上如果有,就用小s表示suid。当x位上没有x的时候,suid就是大写的S。

    2)设置用户ID位就是让普通用户可以以root或其他用户的权限运行只有root或其它用户才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。

    例如:如果要让boy用户删除本来无权删除的文件。

    a sudo  

    b suid(suid修改的执行的命令,而不是要处理的文件)

    3)仅对二进制命令程序有效,不能用在shell等类似脚本文件上。shell脚本仅仅是调用二进制命令程序而已,因此,具体权限还需要看二进制命令本身。

    4)二进制命令程序需要有可执行权限x

    5)suid权限仅在程序执行过程中有效。

    6)执行命令的任意用户可以获得该命令程序执行期间拥有这的权限。

    7)suid是双刃剑,是一个比较危险的功能,对系统安全有一定的威胁。

  设置组ID位 sgid:

    与suid不同,sgid既可以针对文件,也可以阵地目录设置。sgid是针对用户权限修改的。

    对文件,sgid功能如下:

    1)sgid仅对二进制命令程序有效。

    2)二进制命令或程序需要可执行权限。

    3)执行程序的任意用户可以获得该命令程序执行期间所属组的权限。

     对目录,sgid功能如下:

    1)用户在此目录下创建的文件和目录,具有和此目录相同的用户组设置。

    sgid主要用在目录中,当为某个目录设置了setgid位以后,在该目录中创建的文件具有该目录的所有这权限,而不是创建该文件的用户的默认所有者。这样,使得在多个用户之间共享一个目录中的文件         变得简单。

  对suid和sgid,工作中尽量不用,多用sudo管理,如查到系统无用的suid位的命令等,进行撤除。s S都是suid,sgid的标识,和x重合就显示小写字母s

  粘滞位sticky bit及设置方法:

[zhaohuizhen@localhost home]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Oct 15 20:05 /tmp/

  如,/tmp权限位最后一位是t。这就是设置了粘滞位。

  粘滞位功能用得少,不过对于/tmp目录这样的,是整个系统临时文件存放地,需要设置粘滞位。一个目录即使开发所有权限rwxrwxrwx,如果设置了粘滞位,除非目录属主和root用户有权限删除它,其它用户不能删除这个目录。让所有用户都具有/tmp目录所有权限,但是每个用户只能删除自己的文件。用t表示,如果没有执行权限,那么就是T。/tmp目录谁都可以写,常常是木马第一手跳板地点。

文件锁定和解锁功能:

  文件系统的特性决定着文件属性的定义和修改,比如我们通过chattr来锁定一个文件位不可修改或不可删除时,就要用到chattr的+i参数;在ext2和ext3文件系统是有效的,但在reiserfs文件系统是没有任何效果的。如chattr +i boy.txt ,将文件boy.txt 锁定,无法删除或修i该。用lsattr可以查看。

  让一个文件只能追加内容,但不能删除用chattr的+a参数。

    

Linux系统文件权限体系详解的更多相关文章

  1. linux用户管理,linux用户口令管理,linux用户组管理,linux用户权限管理详解

    linux用户管理 http://www.qq210.com/shoutu/android 用户账号的添加(新加用户需添加用户口令) :增加用户账号就是在/etc/passwd文件中为新用户增加一条记 ...

  2. L015-linux系统文件权限体系手把手详解小结

    L015-linux系统文件权限体系手把手详解小结 2016-5-24 今天星期二,昨天和今天利用一些闲散时间把第15节课学完了,最近有点懒散哈,还得努力才是.. 这节课内容不多,扩展的也少,主要就是 ...

  3. linux ./configure 的参数详解

    转载自http://blog.csdn.net/zjt289198457/article/details/6918656 linux ./configure 的参数详解   ./configure 该 ...

  4. Linux下ps命令详解 Linux下ps命令的详细使用方法

    http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...

  5. linux之find命令详解

    linux之find命令详解 查找文件find ./ -type f查找目录find ./ -type d查找名字为test的文件或目录find ./ -name test查找名字符合正则表达式的文件 ...

  6. linux下tar命令详解

     linux下tar命令详解    tar是Linux环境下最常用的备份工具之一.tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件.ta ...

  7. 嵌入式Linux应用程序开发详解------(创建守护进程)

    嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目 ...

  8. Linux开机启动程序详解

    Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...

  9. Linux开机启动程序详解[转]

    Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...

随机推荐

  1. Java中的基本数据类型包装类

    在 java 中为什么会有基本数据类型的包装类? ①:基本数据类型之间的相互转换不是都可以制动转换的,而你强制转换又会出问题,比如String类型的转换为int类型的,那么jdk为了方便用户就提供了相 ...

  2. ubuntu中下载sublime相关问题

    1.SublimeText3的安装 在网上搜索了一些ubuntu下关于sublime-text-3安装的方法,在这里针对自己尝试的情况进行反馈: 方法一(未成功): 在终端输入以下代码: sudo a ...

  3. lintcode-185-矩阵的之字型遍历

    185-矩阵的之字型遍历 给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历. 样例 对于如下矩阵: [ [1, 2, 3, 4], [5, 6, 7, 8], [9 ...

  4. 简单名称值对节点类NameValuePair

    本类位于System.Data.dll中,名为:System.Data.Common.NameValuePair.主要用途是在DBConnectionString类中,解析ConnectionStri ...

  5. opencv里vector的内存的申请和释放的问题

    改成: ); CvSeq * m_contour=; cvFindContours( &IPlImage(img), m_storage, &m_contour, ,)); //释放内 ...

  6. UML图之协作图

    创建方法: 1,new----collaboration diagram 2,根据序列图按F5转换 增加对象链接(图2-4-4)    (1) 选择Object Link 工具栏按钮. (2) 单击要 ...

  7. 求助 delphi ADO组件的 CursorLocation属性设置为 clUseServer 用法 [问题点数:20分]

    我有个管理系统,所有ADOQUERY组件的 CursorLocation属性设置为 clUseClient,一直运行正常,我尝试全部设置为clUseServer, 系统不运行了,请大家帮忙. 我的做法 ...

  8. matlab中prod的使用方法

    B = prod(A) 将A矩阵不同维的元素的乘积返回到矩阵B. 如果A是向量,prod(A)返回A向量的乘积.如果A是矩阵,prod(A)返回A每一列元素的乘积并组成一个行向量B. B = prod ...

  9. Codeforces Round #524 Div. 2 翻车记

    A:签到.room里有一个用for写的,hack了一发1e8 1,结果用了大概600+ms跑过去了.惨绝人寰. #include<iostream> #include<cstdio& ...

  10. 《高性能MySQL》 读书总结

    目录: 第一章.MySQL架构与历史 第二章.MySQL基准测试 第三章.服务器性能剖析 第四章.Schema与数据类型优化 第五章.创建高性能的索引 第六章.查询性能优化 第七章.MySQL高级特性 ...