欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 07_04 _特殊权限SUID等详解 有大用

[root@ebs-22618 ~]# man xargs

image.png


[root@ebs-22618 ~]# find /etc -size +1M -exec echo {} >> /tmp/testaaaa.txt \;

[root@ebs-22618 ~]# find /etc -size +1M  >> /tmp/testaaaa.txt

[root@ebs-22618 tmp]# find /etc -size +1M | xargs echo >> /tmp/testbbb.txt  

(使用xargs后,是空行隔开的一行文本 ) (此时 不需要用 \; )

image.png

xargs命令是用来把前面命令的输出结果作为echo 的参数


特殊权限

passwd:s


SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者

chmod u+s FILE     给文件添加 SUID权限 (如果FILE本身有执行权限x,SUID显示为小写s,否则SUID显示为大写S)

chmod u-s FILE      给文件去掉 SUID权限 


SGID:运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组

chmod g+s FILE     给文件添加 SGID权限

chmod g-s FILE      给文件去掉 SGID权限


        SGID 下, 用户创建文件的属组不再是用户的基本组,而是目录的属组

        develop team:hadoop,hbase,hive

        /tmp/project/

        

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

chmod o+t DIR     给文件置上 Sticky 位 (通常对目录而言) (原有执行权限,显示为小写t,否则显示为大写T)

chmod o-t  DIR     给文件移除 Sticky 位


000 什么都没有

001 表示没有SUID,没有SGID有Sticky

...

110 有SUID,有SGID没有Sticky

111



chmod 1755 /backup/test  有755权限,有Sticky位

chmod 3755 /backup/test  有755权限,有SGID,有Sticky

chmod 2755 /backup/test  有755权限,有SGID

chmod 5755 /backup/test  有755权限,有UGID,有Sticky


所以 umask 就四位了 4位

umask 0022

umask 0002



image.png


image.png



[root@ebs-22618 tmptxt]# ls -l /bin/cat

image.png


[root@ebs-22618 tmptxt]# ls -l /etc/shadow

image.png


[root@ebs-22618 tmptxt]# su - hadoop

[hadoop@ebs-22618 ~]$ cat /etc/shadow

image.png



[hadoop@ebs-22618 ~]$ whoami   (看看登录者是谁)

hadoop

在 root 用户下  chmod u+s  /bin/cat  此时 /bin/cat 就有 UUID 权限

此时 hadoop 用户下(事实上此时cat 进程的所有者是/bin/cat这个文件所在的属主) 可以执行   cat /etc/shadow



[hadoop@ebs-22618 ~]$ ls -l /usr/bin/passwd

image.png


比如有时需要获取系统属性的时候,需要s这个权限,才能获取



[root@ebs-22618 tmptxt]# useradd hbase

[root@ebs-22618 tmptxt]# useradd hive

[root@ebs-22618 tmptxt]# mkdir /tmp/project

[root@ebs-22618 tmptxt]# groupadd developteam

[root@ebs-22618 tmptxt]# chown -R :developteam /tmp/project/

[root@ebs-22618 ~]# ls -ld /tmp/project

image.png

[root@ebs-22618 tmptxt]# usermod -a -G developteam hadoop

[root@ebs-22618 tmptxt]# usermod -a -G developteam hbase

[root@ebs-22618 tmptxt]# usermod -a -G developteam hive


[root@ebs-22618 tmptxt]# id hadoop

uid=1013(hadoop) gid=1013(hadoop) 组=1013(hadoop),5018(developteam)

[root@ebs-22618 tmptxt]# cd /tmp/project/

[root@ebs-22618 project]#

[root@ebs-22618 project]# su - hadoop

[hadoop@ebs-22618 ~]$ cd /tmp/project/

[hadoop@ebs-22618 project]$ ls -ld .

drwxr-xr-x 2 root developteam 4096 5月  24 21:13 .

[hadoop@ebs-22618 project]$ touch a

touch: 无法创建"a": 权限不够


加一个root窗口开组写的权限

[root@ebs-22618 ~]# chmod g+w /tmp/project/



[hadoop@ebs-22618 project]$ ls -ld .

drwxrwxr-x 2 root developteam 4096 5月  24 21:22 .

[hadoop@ebs-22618 project]$ touch a  (此时权限是有的) (创建的文件的组是基本组)

[hadoop@ebs-22618 project]$ ls -ls .

总用量 0

0 -rw-r----- 1 hadoop hadoop 0 5月  24 21:22 a


另一个用户 hbase 来登进去

[root@ebs-22618 ~]# su - hbase

[hbase@ebs-22618 ~]$ cd /tmp/project/

[hbase@ebs-22618 project]$ touch hbase.txt

[hbase@ebs-22618 project]$ ls -la

image.png


[root@ebs-22618 ~]# chmod g+s /tmp/project/

[root@ebs-22618 ~]# ls -ld /tmp/project/

image.png


此时通过 hbase 用户来创建文件 此时文件的属组是 developteam

[hbase@ebs-22618 project]$ touch b.hbaes

[hbase@ebs-22618 project]$ ls -l

总用量 0

-rw-r----- 1 hadoop hadoop      0 5月  24 21:22 a

-rw-rw-r-- 1 hbase  developteam 0 5月  24 21:31 b.hbaes

-rw-rw-r-- 1 hbase  hbase       0 5月  24 21:27 hbase.txt

image.png


此时通过 hadoop 用户来创建文件 此时文件的属组是 developteam

[hadoop@ebs-22618 project]$ touch b.hadoop

[hadoop@ebs-22618 project]$ ls -la

image.png


hadoop 本身的掩码不正常是0027 (正常应该为 0002) 

正常情况下 应该  hadoop  创建的文件与 hbase创建的文件权限是一样的 为 664 

hadoop 也能够删除 hbase 创建的文件


[root@ebs-22618 ~]# chmod o+t /tmp/project/

[root@ebs-22618 ~]# ls -ld /tmp/project/


image.png


hadoop用户下

[hadoop@ebs-22618 project]$ rm b.hbaes    (此时就不能删别人的文件了)

rm: 无法删除"b.hbaes": 不允许的操作

[hadoop@ebs-22618 project]$ rm b.hadoop   (但此时可以删自己的文件了)

image.png



普通分类: