细说linux上的特殊权限位

linux上的文件的权限

linux的哲学思想之一就是一切皆文件。这样说来,每台安装了linux的主机上,就会有大量的文件。而另一方面,linux在安全方面有着极为出色的表现。众所周知,linux是一个多用户的系统,因此为一个文件加上合适的权限为显得非常有必要了。linux上的基本权限我就不一一介绍了,请不熟悉的同学自行百度脑补。我们来说说linux上文件和目录的特殊权限。

这是linux上一个文件的长格式说明:

-rw-r--r--   1 root root 1187 Mar 19 16:30 /etc/passwd
-rw-------   1 root root 2.9K Mar 20 05:29 .bash_history
drwx------.  2 root root 4.0K Mar 19 16:08 .ssh

我们拿第一个文件/etc/passwd来做说明:

-rw-r--r-- 1 root root 1187 Mar 19 16:30 /etc/passwd

这里我们只说第一部分,第一个“-”说是这是一个普通文件, 后面的”rw——-“又以分为三个部分, 第一部分”rw-“是说这个文件的拥有者对这个文件有读写的权限, 第二部分“r–”是说这个文件的所属组对这个文件只有读的权限, 第三个“r–”是指系统上除了文件所有者和文件所属组之外所有人只能够拥有的可读的权限了。

在linux上,每一个文件都有一种类型,它们的表示方式为:
    -:表示这是一个普通文件
    d:表示这是一个目录
    p:表示这是一个管道符文件
    s:表示这是一个套接字文件
    b:表示这是一个块设备
    l:表示这是一个链接文件
    c:表示这是一个字符设备

在linux上,我们可以看到新建一个文件和新建一个目录后,这个文件和目录对应的权限是不一样的,其原因就是因为有umask的存在。 umask是指定用户新建文件或目录时默认权限的一个东东。我们可以在bash中输入umask来查看系统上umask的值。

[root@localhost mageedu]# umask
0022

linux上默认的,新建一个文件时就有如rwxrw-rw-权限,而新建一个目录则有rwxrwxrwx等权限,可以通过改变umask来改变新建文件和目录的默认的权限。 linux上除了最基本的所有者,所属组和其他人的读,写和执行权限之外,还有其他的特殊权限. 我们可以输入lsattrchattr来为文件和目录设置隐藏权限,其用法如下:

lsattr:显示文件特殊属性

用法: lsattr [选项] 文件

常用选项:

-R        递归显示文件夹及其内容的的属性
-a        显示文件的所有属性        
-d        只显示目录本身的属性

chattr:设置文件特殊属性

用法:chattr [选项] [模式] 文件

常用选项:

+        增加某一特殊权限
-        移除某一特殊权限                    
=        设定某一特殊权限
-R       递归改变目录及其子目录的属性

常用模式:

a        文件只能增加,不能修改和删除(root也不能删除这个文件,但是可以先把这个属性去掉,然后删除)
c        保存文件时,自动压缩文件,读取时自动解压缩
d        设置这个属性后,打包时这个文件将不会被告打包
i        设置这个属性后,文件内容将不会被更改
s        删除文件时,完全删除(删除后不可恢复)
u        删除文件时,数据内容还在磁盘里(删除后还可以恢复)
A        保存文件时,文件的atime不改变

下面我们再来说下linux上的特殊权限。

针对可执行文件,可以设置suid权限。对一个文件设置suid权限后,任何用户执行这个可执行文件时,不再以用户自己的身份当作进程的属主,而是以文件的属主当作进程的属主。拿/etc/shadow这个文件来说吧。我们可以看到这个文件的权限:

[root@localhost mageedu]# ll /etc/shadow
---------- 1 root root 878 Mar 20 11:58 /etc/shadow
可以看到,任何人都没有修改这个文件的权限,那么有一天当一个普通用户不想用自己现在使用的权限,想更换一个密码的时候,那怎么办呢。答案就在这个/etc/shadow这个文件身上。/etc/shadow这个文件就设置了suid权限,这样一个普通用户更改自己的密码,输入passwd那一刻,普通用户临时调用/etc/shadow这个文件的用户所有者root的权限,然后修改自己的密码,修改完之后,就又恢复到普通用户自己的权限了。
对于设置了suid权限的文件来说:
    1.suid权限仅对二进制程序有效
    2.执行者对于该程序需要有执行权限
    3.本权限仅在执行该权限的过程中有效
    4.执行者将具有该程序拥有者的权限

suid表现为文件属主执行权限位上显示为s或S,文件原来有执行权限时为s,文件原来没有执行权为S 为文件设置suid权限可以使用chmod u+s file命令,取消则用chmod u-s file命令。

说完了针对普通文件的特殊权限,再来说下针对目录的特殊权限。对于具有sgid权限的目录,用户在此目录下创建文件时,新建文件的属组不再是用户所属的基本组,而是目录的属组。

对于一个设置了sgid的普通文件来说,其表现形式为:
    1.sgid对二进制程序有用
    2.程序执行者对于该程序需要有执行权限
    3.执行者在执行过程中将会获得该程序群组的支持

对于一个设置了sgid的目录来说,其表现形式为:
    1.用户对此目录有可读写权限时,该用户能够进入此目录
    2.用户在此目录下的有效群组将会变成该目录的群组
    3.用户在此目录下有写权限时,建立的新文件属组为此文件夹的属组

为目录设置sgid权限,可以使用chmod g+s dir这个命令,取消这个特殊权限则用chmod g-s dir这个命令。 sgid表现在文件属组执行权限位上的s或S,对于有执行权限的目录,其表现在权限位上为s,对于没有执行权限的目录,其表现在权限位上为S。

除了这两个特殊的权限之外,linux上还有一个很特殊的权限,那就是sticky了。如下图所示:

[root@localhost ~]# ll -d /tmp
drwxrwxrwt. 3 root root 4096 Mar 20 21:43 /tmp
其在linux上的表现为t,对于有执行权限的目录,其表现在权限位上为t,对于没有执行权限的目录,其表现在权限位上为T。sticky对于目录的作用就在于:对于公共可写的目录,用户可创建文件,可以删除自己创建的文件,但无法删除别人的文件。
为目录设置sticky权限可以使用chmod o+t dir这个命令,取消可以用chmod o-t dir这个命令。

注意:以上的权限设置或取消都要有管理员的权限才可以。

祝大家工作学习愉快!

原创文章,作者:renpingsheng,如若转载,请注明出处:http://www.178linux.com/73118

(1)
renpingshengrenpingsheng
上一篇 2017-04-10 20:57
下一篇 2017-04-10 21:27

相关推荐

  • 1128基于fastDFS,制作rpm包

    基于fastDFS,制作rpm包: 1、安装相应的环境: 1、Development tools 2、git(从外网git仓库下载源码所需) 3、Server Platform Development ———————————&#…

    2016-12-05
  • 设定Linux自动登陆

    设定Linux自动登陆 在实验场景中我们可能会经常重新启动Linux,然后反复输入账户密码登陆。为了在每次启动后快速进入系统减少在实验场景中不必要的工作,我们可以设定Linux在启动后自动登陆到指定账户(实验中一般为root账户)。基于Linux一切皆文件的思想,我们可以通过修改配置文本的方式决定是否启用自动登录,以及自动登录的账户是普通用户账户还是root…

    Linux干货 2017-07-15
  • LVS-nat-dr

    主程序:ipvsadm 配置文件: 规则保存工具:/usr/sbin/ipvsadm-save 规则重载工具:/usr/sbin/ipvsadm-restore 配置文件:/etc/sysconfig/ipvsadm-config ipvsadm使用: 增:      示例:ipvsadm -A -t 172.16.42.1:8…

    2017-08-08
  • 文本处理三剑客之sed及vi编辑使用

    作用:       sed是Linux系统文本处理工具中的三剑客之一,它是一种流编辑器,以行为单位,能够使用正则表达式;跟其他文本处理工具模式相同,不对原文件直接操作,而是先借用一个临 时的数据缓冲区存放文文本数据,同时还有一个自己独特的空间"pattern space",我们称之为sed的模式空间,它的处理…

    Linux干货 2016-08-11
  • 0812作业

    练习题 1、查找/var目录下属主为root,且属组为mail的所有文件 2、查找/var目录下不属于root、lp、gdm的所有文件 3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件 4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件 5、查找/etc目录下大于1M且类型为普通文件的所有文…

    Linux干货 2016-08-15
  • 优秀程序员的十个习惯

    在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需…

    Linux干货 2015-04-01

评论列表(1条)

  • renjin
    renjin 2017-04-12 13:29

    主要写了linux下特殊权限位,内容写的很详细,排版也很好,继续努力!