特殊权限


1.特殊权限
 引入: [root@zhg ~]# ls -l `which passwd`
   显示结果:-rwsr-xr-x. 1 root root 30768 2月  22 2012 /usr/bin/passwd
   备注:重点看s
 特殊权限有3个
 SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者(启动者可以临时拥有root权限)
   格式: chmod u+s FILE
     chmod u-s FILE
   注意: 如果FILE本身原来就有执行权限,则SUID显示为s(小写),否则显示为S(大写)
   举例: [root@zhg ~]# ls -l /bin/cat
     显示结果: -rwxr-xr-x. 1 root root 45224 11月 22 2013 /bin/cat
     [root@zhg ~]# ls -l /etc/shadow
     显示结果: ----------. 1 root root 797 2月  14 00:41 /etc/shadow
     [root@zhg ~]# useradd hadoop
     [root@zhg ~]# su - hadoop
     [hadoop@zhg ~]$ cat /etc/shadow
     显示结果: cat: /etc/shadow: 权限不够
     [root@zhg ~]# chmod u+s /bin/cat
     [root@zhg ~]# ls -l /bin/cat
     显示结果: -rwsr-xr-x. 1 root root 45224 11月 22 2013 /bin/cat
     [root@zhg ~]# su - hadoop
     [hadoop@zhg ~]$ whoami
     显示结果: hadoop
     [hadoop@zhg ~]$ cat /etc/shadow
     备注:这样就可以看到了
     注意: 我们发现一个文件的属主是root,又给了他SUID,这带来的风险是极大的!
       如果这个文件其他人还有编辑权限就会更加麻烦,随便往里面编辑一条命令,比如rm -rf /,系统就完蛋了!
       
     另:
     [root@zhg ~]# ls -l /usr/bin/passwd
     显示结果: -rwsr-xr-x. 1 root root 30768 2月  22 2012 /usr/bin/passwd
     备注: 大家会发现默认就有s权限,因为普通用户也能该自己密码
       实例: 写了一个脚本,如果需要获取系统属性,此时必须要有s权限。
         以前网站后台用perl语言写的脚本都需要有s权限获取信息,这样的网站很容易被入侵。
 SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组
   格式: chmod g+s FILE
     chmod g-s FILE
   注意: 如果FILE本身原来就有执行权限,则SUID显示为s(小写),否则显示为S(大写)
   举例常见场景:
     公司内部有个开发团队develop team
     有三个人hadoop,hbase和hive,他们有共同的使用目录/tmp/project
     要求三个用户都能在这个目录下创建文件
     由于三个用户创建的文件都属于同一个项目,所以三个用户都能查看和编辑对方的文件。
     如何来实现?
      [root@zhg ~]# useradd hive
      [root@zhg ~]# useradd hbase
      [root@zhg ~]# useradd hadoop
      [root@zhg ~]# mkdir /tmp/project
      [root@zhg ~]# groupadd developteam
      [root@zhg ~]# chown -R :developteam /tmp/project/
      [root@zhg ~]# usermod -a -G developteam hadoop
      [root@zhg ~]# usermod -a -G developteam hbase
      [root@zhg ~]# usermod -a -G developteam hive
      [root@zhg ~]# id hadoop
      显示结果: uid=502(hadoop) gid=502(hadoop) 组=502(hadoop),503(developteam)
      下面切换至hadoop用户
      [root@zhg ~]# su - hadoop
      [hadoop@zhg ~]$ cd /tmp/project/
      [hadoop@zhg project]$ ls -ld .
      显示结果: drwxr-xr-x 2 root developteam 4096 3月   8 16:30 .
      备注:发现属组没有写的权限
      退出至root用户添加developteam组的写入权限
      [hadoop@zhg project]$ exit
      [root@zhg ~]# chmod g+w /tmp/project/
      [root@zhg ~]# su - hadoop
      [hadoop@zhg ~]$ cd /tmp/project/
      [hadoop@zhg project]$ touch a.hadoop
      [hadoop@zhg project]$ exit
      [root@zhg ~]# su - hbase
      [hbase@zhg ~]$ cd /tmp/project/
      [hbase@zhg project]$ touch a.hbase
      [hbase@zhg project]$ ls -l
      显示结果: -rw-rw-r-- 1 hadoop hadoop 0 3月   8 16:43 a.hadoop
         -rw-rw-r-- 1 hbase  hbase  0 3月   8 16:44 a.hbase
      备注:现在为止用户都可以创建文件,但是不能相互查看修改,该如何做呢?
      [hbase@zhg project]$ exit
      [root@zhg ~]# chmod g+s /tmp/project/
      [root@zhg ~]# ls -ld /tmp/project/
      显示结果: drwxrwsr-x 2 root developteam 4096 3月   8 16:44 /tmp/project/
      备注:此时组有了s权限,下面分别使用hadoop和hbase登录创建文件查看结果
      [root@zhg ~]# su - hadoop
      [hadoop@zhg ~]$ cd /tmp/project/
      [hadoop@zhg project]$ touch b.hadoop
      [hadoop@zhg project]$ exit
      [root@zhg ~]# su - hbase
      [hbase@zhg ~]$ cd /tmp/project/
      [hbase@zhg project]$ touch b.hbase
      [hbase@zhg project]$ ls -l
      显示部分结果: 
       -rw-rw-r-- 1 hadoop developteam 0 3月   8 16:52 b.hadoop
       -rw-rw-r-- 1 hbase  developteam 0 3月   8 16:52 b.hbase
      备注:这样就能实现三个用户都能查看和编辑对方的文件
      注意: 现在出现一个很大问题,三个用户都能查看和编辑对方的文件
        但是还能删除对方文件
         [hbase@zhg project]$ rm b.hadoop
         [hbase@zhg project]$ ls -l
        此时应该怎么办呢?引出下面内容
 Sticky:
  解释: 在一个公共目录,每个人都可以创建文件,删除自己的文件,但是不能删除别人的文件
  格式: chmod o+t DIR(针对目录)
    chmod o-t DIR(针对目录)
  举例: [root@zhg ~]# su - hadoop
    [hadoop@zhg ~]$ cd /tmp/project/
    [hadoop@zhg project]$ touch b.hadoop
    备注: 先还原刚被hbase用户删除的b.hadoop文件
    [hadoop@zhg project]$ exit
    [root@zhg ~]# chmod o+t /tmp/project/
    [root@zhg ~]# ls -ld /tmp/project/
    显示结果: drwxrwsr-t 2 root developteam 4096 3月   8 17:08 /tmp/project/
    备注: 现在有了t位
    [root@zhg ~]# su - hbase
    [hbase@zhg ~]$ cd /tmp/project/
    [hbase@zhg project]$ ls -l
    显示部分结果:
     -rw-rw-r-- 1 hadoop developteam 0 3月   8 17:08 b.hadoop
     -rw-rw-r-- 1 hbase  developteam 0 3月   8 16:52 b.hbase
    [hbase@zhg project]$ rm b.hadoop
    显示结果: rm: 无法删除"b.hadoop": 不允许的操作  //实验结束
    注意: 不能删除别人的,但是可以删除自己的文件
 总结: 使用方式: 三位可以一起使用
   举例: chmod 1755 /back/test //包含Sticky
     chmod 2755 /back/test //包含SGID
     chmod 3755 /back/test //包含SGID和Sticky
     chmod 4755 /back/test //包含SUID
     chmod 5755 /back/test //包含SUID和Sticky
     chmod 6755 /back/test //包含SUID和SGID
     chmod 7755 /back/test //包含SUID,SGID和Sticky
   备注: 此时大家应该理解为什么umask是4位了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值