特殊权限及SUID
xargs
find /etc -size +1M -exec echo {} >> /tmp/etc.largefiles\;
find /etc -size +1M | xargs echo >> /tmp/etc.largefiles
特殊权限
SUID:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。
chmod u+s FILE
chmod u-s FILE
如果FILE本身原来就有执行权限,则SUID显示为s,否则显示S
SGID:运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组。
chmod g+s FILE
chmod g-s FILE
shell1
[root@localhost ~]# useradd hadoop
[root@localhost ~]# useradd hive
[root@localhost ~]# useradd hbase
[root@localhost ~]# mkdir /tmp/project/
[root@localhost ~]# groupadd developteam
[root@localhost ~]# chown -R :developteam /tmp/project
[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=1016(hadoop) gid=1016(hadoop) 组=1016(hadoop),1019(developteam)
[root@localhost ~]# chmod g+s /tmp/project
shell2
[root@localhost ~]# cd /tmp/project
[root@localhost project]# ls -ld
drwxr-xr-x. 2 root developteam 6 10月 20 11:12 .
[root@localhost project]# chmod g+w /tmp/project/
[hadoop@localhost ~]$ ls -l
总用量 0
-rw-rw-r--. 1 hadoop hadoop 0 10月 20 11:30 a.hadoop
-rw-rw-r--. 1 hadoop developteam 0 10月 20 11:34 b.hadoop
Sticky:在一个公共目录,每个都可以创建文件,删除自己的文件,但不能删除别人的文件。
chmod o+t DIR
chmod o-t DIR
shell1
[root@localhost ~]# chmod o+t /tmp/project/
shell2
[hbase@localhost project]$ ls -l
总用量 0
-rw-rw-r-[hbase@localhost project]$ rm b.hadoop
rm: 无法删除"b.hadoop": 不允许的操作-. 1 hbase developteam 0 10月 20 11:46 a.hbase
-rw-rw-r--. 1 hadoop developteam 0 10月 20 11:34 b.hadoop
000:
001:
…
110:
111:
chmod 5755 /backup/test
文件系统访问列表:
FACL:Filesystem Access Control List
利用文件扩展保存额外的访问控制权限
setfacl:设置facl
-m:设定
u:UID:perm
g:GID:perm
-x:取消
u:UID
g:GID
d:u:UID:perm 为目录设置默认的访问控制列表
getfacl:获取facl
[root@localhost ~]# mkdir /backup
[root@localhost ~]# cd /backup
[root@localhost backup]# cp /etc/inittab ./
[root@localhost backup]# getfacl inittab
# file: inittab
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@localhost backup]# setfacl -m u:hadoop:rw inittab
[root@localhost backup]# getfacl inittab
# file: inittab
# owner: root
# group: root
user::rw-
user:hadoop:rw-
group::r--
mask::rw-
other::r--
默认情况下的文件访问次序:
Owner->Group->Other
权限控制后的访问顺序:
Owner->facl,user->Group->facl,group->Other
跟用户管理相关的几个命令:
whoami 当前登录到系统的有效用户
who 显示登录到当前系统上的用户有哪些
[root@localhost ~]# who
终端
root tty1 2018-10-20 10:45
root pts/0 2018-10-20 10:46 (192.168.83.1)
root pts/1 2018-10-20 11:14 (192.168.83.1)
root pts/2 2018-10-20 13:19 (192.168.83.1)
who -r :显示当前运行级别
写一个脚本:
每隔5秒钟,就来查看hadoop是否已经登录,如登录,显示已经登录,并退出
sleep 5
w 用户登录后执行了什么命令,比who更详细
last 显示/var/log/wtmp文件,显示用户登录历史及系统重启历史
-n #:显示最近#次的相关信息
lastb 显示/var/log/btmp文件,显示用户错误的登录尝试
-n #:显示最近#次的相关信息
lastlog 当前系统上每一个用户的登录信息
-u USERNAME 显示特定用户最近的登录信息
basename 显示路径基名
$0:执行脚本时的脚本路径及名称
-s 标题
把前面文件当作正文发送给root用户
[root@localhost ~]# cat /etc/fstab | mail -s "How are you?" root
使用输入重定向发送邮件
[root@localhost ~]# mail -s "How are you" root < /etc/fstab
hostname 显示当前主机的主机名(实时获取)
更改主机名 hostname www.magedu.com
如果当前主机的主机名不是www.magedu.com,就将其改为www.magedu.com
如果当前主机的主机名是localhost,就将其改为www.magedu.com
如果当前主机的主机名为空,或者为(none),或者为localhost,就将其改为www.magedu.com
[ -z `hostname`] || [`hostname`=='(none)' -o `hostname`=='localhost' ] && hostname www.magedu.com
终端类型:
console:控制台,直接连接到当前物理设备上的
pty:物理终端(VGA显卡)
tty:虚拟终端(VGA),附属在物理控制台上并结合软件虚拟实现的
ttys:串行终端
pts/#:伪终端
shell
生成随机数:
RANDOM:0-32768
随机数生成器:熵池
/dev/random:更安全
/dev/urandom:如果熵池中没数了,就会阻塞
写一个脚本,利用RANDOM生成10个随机数,并找出其中的最大值和最小值.
1.生成10个随机数
[root@localhost jiaoben]# chmod +x round.sh
[root@localhost jiaoben]# ./round.sh
17083,2151,21912,11866,19253,2454,25467,14927,17765,29592
round.sh
#!/bin/bash
for I in {1..10};do
if [ $I -le 9 ];then
echo -n "$RANDOM,"
else
echo "$RANDOM"
fi
done
2.生成随机数并找到里面的最大值
#!/bin/bash
declare -i MAX=0
for I in {1..10};do
MYRAND=$RANDOM
if [ $I -le 9 ];then
echo -n "$MYRAND,"
else
echo "$MYRAND"
fi
[ $MYRAND -gt $MAX ] && MAX=$MYRAND
done
echo "$MAX"
[root@localhost jiaoben]# ./round.sh
26629,9607,19149,4586,20905,14772,2410,12601,14088,7130
26629
3.找出生成的随机数中最大值和最小值的初步写法
#!/bin/bash
declare -i MAX=0
declare -i MIN=0
for I in {1..10};do
MYRAND=$RANDOM
[ $I -eq 1 ] && MIN=$MYRAND
if [ $I -le 9 ];then
echo -n "$MYRAND,"
else
echo "$MYRAND"
fi
[ $MYRAND -gt $MAX ] && MAX=$MYRAND
[ $MYRAND -lt $MIN ] && MIN=$MYRAND
done
echo $MAX,$MIN
[root@localhost jiaoben]# ./round.sh
8226,18603,29308,22031,11377,14528,21928,3351,3026,4510
29308,3026