day13笔记——权限管理篇(二)


特殊权限

1.概念

Linux系统存在九位基本权限rwx rwx rwx,但是会发现系统一些关键文件,存在一些没见过的权限字符,如

[root@localhost ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
可以看到,在属主权限位上出现了s字符权限,又称为suid

2.分类

在Linux中,还存在3个特殊权限,分别是 suid、sgid、sbit

3.特殊权限

3.1 suid

3.1.1suid的使用

  • suid通过s字符标识,存在于用户权限为的x权限对应位置
  • 如果某文件用户权限位本身就有x权限,给该文件设置suid权限时,以小写s标识,否则是大写的S字符
  • 给文件设置s权限对应的数字表示法是4
  • suid同样也用chmod设置权限,可以使用字符法,数字法两种标识

3.1.2 suid的设置

3.1.3 suid使用条件

  • SUID特殊权限仅适用于可执行文件
  • 只要用户对设有SUID的文件有执行权限,当用户执行此文件时,就会以文件属主的身份去执行此文件
  • 一旦文件执行结束,身份的切换也随之消失,也就是让普通用户,执行命令时,临时获得root的权限
  • SUID只能用在二进制可执行文件上

3.1.4 应用——suid与/user/bin/passwd

#切换到普通用户
[root@localhost ~]# su - jerry01

#查看/user/bin/passwd权限,用户权限位上x处有s,说明passwd提供了suid特殊权限
[jerry01@localhost ~]$ ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

#用户可自己修改密码
[bob@localhost ~]$ passwd
Changing password for user bob.
Changing password for bob.
(current) UNIX password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

# 用户信息文件可阅读
[bob@localhost ~]$ grep 'bob' /etc/passwd
bob01:x:1504:1504::/home/bob01:/bin/bash
bob:x:2001:2001::/home/bob:/bin/bash

#但用户密码信息文件不可阅读
[bob@localhost ~]$ grep 'bob' /etc/shadow
grep: /etc/shadow: Permission denied

#禁止用户自己修改密码——去掉passwd的s权限
[root@localhost ~]# chmod u-s /usr/bin/passwd
[root@localhost ~]# ll /usr/bin/passwd
-rwxr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

#重新加上suid特殊权限
法一:[root@localhost ~]# chmod u+s /usr/bin/passwd

法二:[root@localhost ~]# chmod 4755 /usr/bin/passwd

3.1.5注意事项

  • suid功能是针对二进制可执行命令设置的,不能用在shell脚本上
  • 二进制命令如系统提供的ls,mkdir等命令,都需要有x权限才可以操作
  • suid命令很是危险,任何普通用户去执行相关命令时,都会以root身份去运行,对系统有一定威胁,一般建议用sudo命令代替suid等特殊权限操作

3.2 sgid

3.2.1 概念

  • sgid的功能和suid基本一样,只不过一个是设置文件属主的权限,一个是设置属组的权限
  • sgid主要用于文件夹,为某个目录设置sgid之后,在该目录中的创建的文件,都以目录的属组权限为准,而不属于创建该文件的用户权限,实现了多个用户共享一个目录

3.2.2 sgid对文件的作用

  • sgid只对二进制命令生效,并且需要二进制命令本身有x权限。
  • 执行包含sgid权限的二进制命令时,会获得该命令在执行期间所属的组的身份与权限

3.2.3 sgid对文件夹的的作用

  • linux中所有的用户默认创建的文件,文件夹,属主和属组都是用户自己
  • 设置了sgid的目录,会使在这个目录下创建的文件、文件夹都保持同样的权限属性,都属于该目录的属组权限

3.3 sbit

3.3.1 概念及作用

  • 当目录有了粘滞位特殊权限,这个目录除了root用户特殊以外,任何用户都只能删除、移动自己的创建的文件
  • 没有设置粘滞位,且目录是777权限时,任意的user、group、other角色在这个目录下,都可以进行读、写、执行任意文件
  • 粘滞位权限,就是用于限制用户权限,禁止用户删除其他人资料
# 语法: chmod 选项 文件夹
# 作用: 只允许文件的创建者和root用户删除文件
# 常用选项
o+t 添加粘滞位
o-t 去掉粘滞位