文件的特殊权限:SUID,SGID, Sticky

特殊权限:

     普通用户在某些情况下,以其他身份(root,其它用户...)去运行命令。

    SUID:文件拥有SUID后,文件的属主就变成了文件自己的属主。而不是启动者所属的属主。

    SGID:文件拥有SGID后,文件的属组就变成了文件自己的属组。而不是启动者所属的属组。

    Sticky:  在一个公共目录,每一个人都可以创建,删除自己的文件,但是不能删除别人的文件。    


解释SUID   

hadoop 对可执行文件/bin/cat 有rw权限。

hadoop运行cat的时候,会打开一个进程,进程的属主就是hadoop。

但是hadoop要访问一个文件,hadoop对这个文件没有访问权限,则以属主为hadoop的进程不能对这个文件进行访问。但是这个文件本身的属主root,有rw权限。

引入SUID,让普通用户在某些情况下,以其他身份(root,其它用户...)去运行命令。   hadoop可以利用此文件本身的属主root来对此文件进行rw。

举例:

[root@localhost ~]# su - hadoop
welcome aboard....
[hadoop@localhost ~]$ ls -l /etc/shadow
-r--------. 1 root root 1739 10月 30 18:38 /etc/shadow                其它用户没有读权限,hadoop账号开启的进程不能读。但是次文件自身的属主root有读的权限。
[hadoop@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: 权限不够

将 /etc/shadow添加SUID权限,原来文件的属主有W的权限,就会变成s,否则变成S。(大小写)

[root@localhost ~]# ls -l /bin/cat
-rwxr-xr-x. 1 root root 54080 8月  20 2019 /bin/cat
[root@localhost ~]# chmod u+s /bin/cat
[root@localhost ~]# ls -l /bin/cat
-rwsr-xr-x. 1 root root 54080 8月  20 2019 /bin/cat

去查看/etc/shadow 这个文件。

[root@localhost ~]# ls -l /usr/bin/passwd    默认就有suid的权限。 
-rwsr-xr-x. 1 root root 27856 4月   1 2020 /usr/bin/passwd     普通用户也需要这个权限,去改自己的密码,所有这个文件的属主也是有suid的权限的。



    SGID

    在目录下创建的文件,不是用户自己的基本组,而是目录的属组。

          1个开发team,在/tmp/project/下进行开发。3个用户hadoop,hbase,hive,可以互相编辑彼此创建的文件。

[root@localhost ~]# groupadd developteam
[root@localhost ~]# chown -R :developteam /tmp/project/     修改此目录的属组developteam。
[root@localhost ~]# ls -l /tmp/
总用量 4
-rw-r--r--. 1 root root        1273 10月 30 18:28 etc.largefiles
drwxr-xr-x. 2 root developteam    6 10月 30 20:09 project
drwxr-xr-x. 4 root root          73 10月 29 22:54 test
 

将3个用户的附加组都变成developteam

[root@localhost ~]# usermod -a -G developteam hadoop
[root@localhost ~]# usermod -a -G developteam hbase
[root@localhost ~]# usermod -a -G developteam hive

[root@localhost ~]# id hadoop
uid=1012(hadoop) gid=1012(hadoop) 组=1012(hadoop),1015(developteam)
[root@localhost ~]# chmod g+w /tmp/project/                               将组赋予写的权限。

 

[hbase@localhost project]$ ls -l ./           此时因为文件属组都是自己,所有hadoop是不能编辑base组下的文件的。
总用量 0
-rw-rw-r--. 1 hbase  hbase       0 10月 30 20:23 a.base
-rw-rw-r--. 1 hadoop hadoop      0 10月 30 20:22 a.hadoop
 

将组赋予S的权限。

[root@localhost ~]# chmod g+s /tmp/project/              
[root@localhost ~]# ls -ld /tmp/project/
drwxrwsr-x. 2 root developteam 36 10月 30 20:23 /tmp/project/

在目录下创建的文件,不是用户自己的基本组,而是目录的属组。

[hbase@localhost project]$ ls -l ./
总用量 0
-rw-rw-r--. 1 hbase  hbase       0 10月 30 20:23 a.base
-rw-rw-r--. 1 hadoop hadoop      0 10月 30 20:22 a.hadoop
-rw-rw-r--. 1 hadoop developteam 0 10月 30 20:29 b.hadoop
-rw-rw-r--. 1 hbase  developteam 0 10月 30 20:28 b.hbase
 


    Sticky

    chmod o+t DIR

    chmod o+t DIR

[root@localhost ~]# chmod o+t /tmp/project/

[root@localhost project]# ls -ld ./
drwxrwsr-t. 2 root developteam 67 10月 30 20:29 ./
 

同属一个组的文件hadoop不能删除hbase的文件。

[hbase@localhost project]$ rm -rf b.hadoop
rm: 无法删除"b.hadoop": 不允许的操作
[hbase@localhost project]$ ls -l ./
总用量 0
-rw-rw-r--. 1 hbase  hbase       0 10月 30 20:23 a.base
-rw-rw-r--. 1 hadoop hadoop      0 10月 30 20:22 a.hadoop
-rw-rw-r--. 1 hadoop developteam 0 10月 30 20:29 b.hadoop
-rw-rw-r--. 1 hbase  developteam 0 10月 30 20:28 b.hbase
[hbase@localhost project]$ rm -rf b.hbase           能删自己的。


所以文件的权限是4位:7777,第一位代表SUID,SGID, Sticky。001:Sticky   011:SGID and sticky,111:SUID,SGID, Sticky。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值