文件权限与归属

Linux系统中的一切都是文件,但每个文件的类型不尽相同,并且Linux系统会用不同的符号来加以区分,常见的包括有

-:普通文件,d:目录文件,l:链接文件,b:块设备文件,c:字符设备文件,p:管道文件

读(read),写(write),执行(execute)简写即为(r,w,x),亦可用数字(4,2,1)表示。

SUID权限:让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性。比如/usr/bin/passwd文件。
[root@rhel7 /]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jan 29 2014 /usr/bin/passwd

SGID功能一:让执行者临时拥有属组的权限(对拥有执行权限的二进制程序设置)

这种特殊权限就是参考SUID而设计的,不同点就是让程序的执行者获取的不再是文件所有者的临时权限,而是获取到文件的所有组的权限。举例来说,在早期的Linux系统中/dev/kmem是一个字符设备文件,用于存储内核程序要访问的数据,权限为:

cr--r-----   1 root system 2,  1 Feb 11 2017  kmem

读者们看出问题了吗?除了root超级用户身份或属于system组成员外的所有用户都没有读取该文件的权限,但平时咱们需要查看系统进程状态,为了让用户能够获取到系统状态信息,因此将用于查看系统进程状态的ps命令权限上增加了SGID特殊权限位:

-r-xr-sr-x   1 bin system 59346 Feb 11 2017  ps

这样的话因为ps命令被赋予了SGID特殊权限位,所以当用户执行了该命令,实际上临时获取到了有效用户组system的权限啦,能够顺利的读取设备文件啦~

(如果在浏览文件时,发现拥有组权限的第三位是一个大写的“S”则表明该文件的SGID属性无效,比如将SGID属性给一个没有执行权限的文件。)
SGID功能二在该目录中创建的文件自动继承此目录的用户组(只可以对目录设置)
SGID属性应用在目录上时,该目录中所建立的文件或子目录的拥有组都会是该目录的拥有组。当SGID属性应用在可执行文件上时,其他用户在使用执行文件时就会临时拥有该执行文件的拥有组权限。在使用”ls -l” 或者”ll” 命令浏览目录时,如果拥有组权限的第三位是一个小写的”s”,就表明该执行文件或者目录拥有SGID属性。

[root@localhost ~]# cd /tmp/

[root@localhost tmp]# mkdir lxjtestdir

[root@localhost tmp]# ls -ald lxjtestdir/

drwxr-xr-x. 2 root root 6 Nov 27 15:14 lxjtestdir/

[root@localhost tmp]# chmod -Rf 777 lxjtestdir/

[root@localhost tmp]# chmod g+s lxjtestdir/

[root@localhost tmp]# ls -ald lxjtestdir/

drwxrwsrwx. 2 root root 6 Nov 27 15:14 lxjtestdir/

[root@localhost tmp]# su - rusky

Last login: Mon Nov 27 11:44:57 CST 2017 on pts/1

[rusky@localhost ~]$ cd /tmp/lxjtestdir/

[rusky@localhost lxjtestdir]$ touch abc

[rusky@localhost lxjtestdir]$ ls -al abc

-rw-r--r--. 1 rusky root 0 Nov 27 15:16 abc

[rusky@localhost lxjtestdir]$

Sticky Bit权限:

SBIT(Sticky Bit):只可管理自己的数据而不能删除他人文件(仅对目录有效)
Sticky属性只能应用在目录,当目录拥有Sticky属性,所有在该目录中的文件或子目录无论是什么权限,只有文件或者子目录所有者和root用户能做删除动作。保护用户自己的数据不被其它用户删除。在使用”ls -l”或者”ll”命令浏览目录时,如果其他用户权限的第三位是一个小写的”t”,就表明该执行文件或者目录拥有Sticky属性。
注意:linux系统规定,如果原本该位上有x,则这些属性显示为小写字母(有效),否则显示大写字母(无效)

在RHEL7系统中的/tmp作为一个共享文件的目录默认已经被设置了SBIT特殊权限位,因此这里面的文件其他人是不能乱删除的:
drwxrwxrwt. 25 root root 4096 Jul 20 22:53 tmp

==========================
配置SUID、SGID、Sticky属性

可以使用字符配置(s 表示SUID和SGID,t表示Sticky)
如:

chmod u+s test_file #给文件增加SUID属性
chmod g+s test_dir #给目录增加SGID属性
chmod o+t test_dir #给目录增加Sticky属性
还可以用数字的方式配置(4表示SUID,2表示SGID,1表示Sticky)
如:

chmod 4555 test_file #给文件增加SUID属性
chmod 2555 test_file #给文件增加SGID属性
chmod 1555 test_dir #给目录增加Sticky属性

文件的隐藏属性

即在默认情况下是不能直接被用户发觉的。在真实的工作环境和红帽RHCE考试题目中碰到过明明权限很充足但却不能删除某个文件的情况,或者仅仅能对日志文件进行追加内容而不能删除或减少,一定程度上阻止了黑客篡改系统日志的图谋,因此这种很“奇怪”的文件让Linux系统更加的安全。

chattr命令用于设置文件的隐藏权限,格式为:“chattr [参数] 文件”。

可以使用chattr命令来设置文件的隐藏权限,如果想要把某个隐藏功能添加到文件上面,则使用+参数,如果想要把某个隐藏功能移出文件,则使用-参数。可供咱们选择的隐藏权限功能非常丰富,常见的隐藏权限包括有:

参数 作用
i 将无法对文件进行修改,若对目录设置后则仅能修改子文件而不能新建或删除。
a 仅允许补充(追加)内容.无法覆盖/删除(Append Only)。
S 文件内容变更后立即同步到硬盘(sync)。
s 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)。
A 不再修改这个文件的最后访问时间(atime)。
b 不再修改文件或目录的存取时间。
D 检查压缩文件中的错误。
d 当使用dump命令备份时忽略本文件/目录。
c 默认将文件或目录进行压缩。
u 当删除此文件后依然保留其在硬盘中的数据,方便日后恢复。
t 让文件系统支持尾部合并(tail-merging)。
X 可以直接访问压缩文件的内容。

[rusky@localhost ~]$ echo "test" > lxjtest

[rusky@localhost ~]$ chattr +a lxjtest

chattr: Operation not permitted while setting flags on lxjtest

[rusky@localhost ~]$ su -

Password:

Last login: Mon Nov 27 11:46:24 CST 2017 on pts/1

[root@localhost ~]# cd /home/rusky/

[root@localhost rusky]# chattr +a lxjtest

[root@localhost rusky]# su - rusky

Last login: Mon Nov 27 15:16:25 CST 2017 on pts/1

[rusky@localhost ~]$ rm lxjtest

rm: cannot remove ‘lxjtest’: Operation not permitted

linux 系统文件的特殊权限的更多相关文章

  1. Linux系统文件与目录权限管理

    Linux文件目录权限管理 一.Linux文件属性及权限 1.Linux文件及目录权限及属性说明 (1)权限及属性说明 (2)文件权限说明 三种权限说明:r 读  read w 写  write  x ...

  2. Linux系统文件权限管理(6)

    Linux操作系统是多任务(Multi-tasks)多用户(Multi-users)分时操作系统,linux操作系统的用户就是让我们登录到linux的权限,每当我们使用用户名登录操作系统时,linux ...

  3. Linux系统文件权限体系详解

    准备工作:先简单了解Linux文件权限 在Linux系统中,ls -l 命令可以查看文件的权限,如 [zhaohuizhen@localhost Test]$ ls -l a -rw-rw-r--. ...

  4. linux文件和目录权限

    linux系统文件和目录的权限说明 文件权限是Linux系统的第一道安全防线,基本的权限有读取(r).写入(w)和执行(x): 文件访问模式 读取:用户能够读取文件信息,查看文件内容. 写入:用户可以 ...

  5. 【Linux】Linux系统中的权限详解

    我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险.所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要. 一.文件基本权限 首先看下linux ...

  6. 误删除 linux 系统文件了?这个方法教你解决

    转载于互联网并适当的修改 误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题.方法总比问题多~ 说在前面的话 针对日常维护操作,难免会出现文件误 ...

  7. linux系统文件

    关于linux系统文件命令 (1)Linux的文件系统目录配置要遵循FHS规范,规范定义的两级目录规范如下:        /home  每个账号在该目录下都有一个文件夹,进行数据的管理        ...

  8. Linux(三)__文件权限、系统的查找、文本编辑器

    一.文件权限 1.理解文件权限及其分配 2.掌握查看文件和目录的权限 3.掌握权限文字表示法和数值表示法 4.学会使用chmod命令设置权限 5.学会使用chown命令修改属主和组 linux文件能不 ...

  9. Linux文件和目录权限详细讲解

    转载请标明出处: http://www.cnblogs.com/why168888/p/5965180.html 本文出自:[Edwin博客园] Linux文件和目录权限解读 如何设置Linxu文件和 ...

随机推荐

  1. MVC中使用AngularJS-01,基本

    Angularjs是一个前端的Javascript MVC 库和框架,使前端得到更好的设计.维护和测试.它的核心特性有:MVC.双向数据绑定.指令和语义化标签.模块化工具.依赖注入.HTML模板,以及 ...

  2. MVC文件上传03-使用Request.Files上传多个文件

    本篇体验在控制器方法中使用controllerContext.HttpContext.Request.Files上传多个文件.兄弟篇为: MVC文件上传01-使用jquery异步上传并客户端验证类型和 ...

  3. mongodb 只查询一个字段

    db.users.find({}, {"userName":1,"_id":0}) ; "_id":0表示不显示_id

  4. Objective—C中的排序及Compare陷阱

    campare陷阱 NSString有多个compare相关方法: - (NSComparisonResult)compare:(NSString *)string; - (NSComparisonR ...

  5. OpenShift上部署Redis主从集群

    客户有部署有状态服务的需求,单机部署模式相对简单,尝试一下集群部署. 关于Redis的master,slave 以及sentinal的架构和作用不提,有兴趣可以参考之前的博客 https://www. ...

  6. MySQL中limit的用法

    SELECT * FROM table  LIMIT [offset,] rows | rows OFFSET offset   LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.L ...

  7. [1] 平面(Plane)图形的生成算法

    顶点数据的生成 bool YfBuildPlaneVertices ( Yreal width, Yreal length, Yreal height, Yuint slices, Yuint sta ...

  8. 3D几何图形生成的DEMO

    3D几何图形生成的DEMO 可以生成以下几种图形: [1] 平面(Plane)图形的生成算法 [2] 立方体(Box)图形的生成算法 [3] 球(Sphere)图形的生成算法 [4] 圆锥(Cone) ...

  9. Informatica 常用组件Aggregator之四 创建聚合转换

    在 Mapping Designer 中选择"转换-创建".选择聚合转换. 为聚合输入一个名称,并单击"创建".然后单击"完成". Desi ...

  10. mysql必知必会(一、数据库基础知识)

    基础概念 1.数据库(database):是一个以某种有组织的方式存储的数据集合.(保存有组织的数据的容器) 2.表(table):是一种结构化的文件,可用来存储某种特定类型的数据.(表名在同个数据库 ...