欢迎各位兄弟 发布技术文章
这里的技术是共享的
[root@ebs-22618 ~]# man xargs
[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后,是空行隔开的一行文本 ) (此时 不需要用 \; )
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
[root@ebs-22618 tmptxt]# ls -l /bin/cat
[root@ebs-22618 tmptxt]# ls -l /etc/shadow
[root@ebs-22618 tmptxt]# su - hadoop
[hadoop@ebs-22618 ~]$ cat /etc/shadow
[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
比如有时需要获取系统属性的时候,需要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
[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
[root@ebs-22618 ~]# chmod g+s /tmp/project/
[root@ebs-22618 ~]# ls -ld /tmp/project/
此时通过 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
此时通过 hadoop 用户来创建文件 此时文件的属组是 developteam
[hadoop@ebs-22618 project]$ touch b.hadoop
[hadoop@ebs-22618 project]$ ls -la
hadoop 本身的掩码不正常是0027 (正常应该为 0002)
正常情况下 应该 hadoop 创建的文件与 hbase创建的文件权限是一样的 为 664
hadoop 也能够删除 hbase 创建的文件
[root@ebs-22618 ~]# chmod o+t /tmp/project/
[root@ebs-22618 ~]# ls -ld /tmp/project/
hadoop用户下
[hadoop@ebs-22618 project]$ rm b.hbaes (此时就不能删别人的文件了)
rm: 无法删除"b.hbaes": 不允许的操作
[hadoop@ebs-22618 project]$ rm b.hadoop (但此时可以删自己的文件了)