linux特殊权限

Posted 夜の魅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux特殊权限相关的知识,希望对你有一定的参考价值。

  在上文基本权限中讲述了rwx的作用。但是或许有人在权限蓝栏看到了一个s符号,这个就是特殊权限。

文件的特殊权限包括:SUID、SGID、SBIT。

  1.SUID,借出程序所有者的权限

hang@hang:/home$ ll /usr/bin/passwd 
-rwsr-xr-x 1 root root 54256 3月  29  2016 /usr/bin/passwd*   #拥有SUID权限,第一组rwx中的x改为s

 

  passwd命令为修改用户的密码,根据权限可以得知同一用户组或其他人都可以调用改命令。但是passwd命令需要修改/etc/shadow文件,此文件存储账号的密码。

hang@hang:/home$ ll /etc/shadow
-rw-r----- 1 root shadow 1517 11月 26 20:08 /etc/shadow
hang@hang:/home$ 

  可以看到,这个被passwd所修改的文件,权限仅仅允许root用户修改。那么问题来了~

  其他用户虽然可以调用passwd命令,但是不能修改/etc/shadow这个文件啊,那么密码怎么存储?

  这就是SUID的作用,你不是没有权利修改/etc/shadow文件吗?我(程序所有者)给你啊。也就是说,在这个时候,其他用户调用passwd命令已经暂时获得root用户的权限,这时去修改/etc/shadow是利用root用户的权限去修改。

  • SUID权限仅限二进制程序有效
  • 执行者需要有x权限
  • 执行者获得该程序所有者的权限
  • 仅在本程序执行中拥有改权限

  简单来说,这个s权限,会将程序所有者拥有的权限暂时借给其他人使用,前提是其他人拥有这个程序的x权限。

  2. SGID,借出用户组的权限

hang@hang:/home$ ll
drwxr-xr-x 23 hang hang 4096 11月 27 18:47 hang/
drwxr-xr-x  2 zncu zncu 4096 11月 25 20:47 zncu/
drwxrws---  2 root znha 4096 11月 25 20:48 znha/

  简单来说,SGID和SUID一个是把用户组的权限暂时借出一个是把所有者的权限暂时借出。

  • SGID对二进制程序依然有效
  • 程序执行者需要具有x权限
  • 执行者在执行过程中暂时获得用户组的权限

  但是,SGID也可以针对目录或者文件使用,上面的例子就是对目录的使用。

那么它有什么作用那?

  • 用户(hang)对此目录(znha)具有r与x权限时,该用户可以进入此目录。
  • 用户在此目录下的有效用户组将变成该目录的用户组。
  • 若用户对此目录具有w权限时,那么用户创建的文件的用户组将为此目录的用户组。
hang@hang:/home$ groups hang  #hang用户在znha用户组里,所以具有进入znha目录的权限
hang : hang znha

在此目录创建文件,观察该文件所在用户组

hang@hang:/home/znha$ touch test
hang@hang:/home/znha$ ll
-rw-rw-r-- 1 hang znha    0 11月 27 20:54 test  #hang用户在具有SGID的目录里创建文件,该文件的用户组为znha(该目录所在用户组)
hang@hang:~$ cd hang/
hang@hang:~/hang$ touch test           #在其他目录里创建文件,文件的用户组为hang(用户的主用户组)     
hang@hang:~/hang$ ll
-rw-rw-r--  1 hang hang    0 11月 27 20:56 test



可以看到,该文件的用户组问znha,而不是hang。这种特性可以使在同一用户组的多个用户拥有共同的目录,在创建文件时该用户组的所有用户都有相同的权利操作文件。

3. SBIT,对目录有效

  •  当用户对于此目录具有w、x权限时,即具有写入的权限
  •  用户在此目录创建文件时,只有自己和root才有权利删除(以及其他w相关操作)该文件
  •  用户不允许对其他用户的文件操作
drwxrwxrwt  15 root root  4096 11月 27 21:06 tmp/  #具有SBIT权限,最后一个字母t标示。

 

  特殊权限的设置:

  SUID:4

  SGID:2

  SBIT:1

  chmod 4777  test ,添加SUID权限。

 

http://www.cnblogs.com/yuhanghzsd/p/6107362.html

 

以上是关于linux特殊权限的主要内容,如果未能解决你的问题,请参考以下文章

Linux特殊文件权限

linux 文件都有哪些特殊权限

Linux下的umask、特殊权限与ACL权限

Linux系统的特殊权限

Linux学习014特殊权限

Linux学习之十五-Linux文件特殊权限和附加权限