facl及用户及Linux终端
文件系统访问列表:
FACL:Filesystem Access Control List
利用文件扩展保存额外的访问控制权限
setfacl:设置facl
-m:设定
u:UID:perm 针对文件添加额外用户访问控制权限
例:[root@Ourlab backup]# setfacl -m u:hadoop:rw inittab
[root@Ourlab backup]# getfacl inittab
# file: inittab
# group: root
user::rw-
user:hadoop:rw-
group::r--
mask::rw-
other::r--
g:GID:perm 针对文件添加额外属组访问控制权限
例:[root@Ourlab backup]# setfacl -m g:mygroup:rw inittab
[root@Ourlab backup]# getfacl inittab
# file: inittab
# owner: root
# group: root
user::rw-
user:hadoop:rw-
group::r--
group:mygroup:rw-
mask::rw-
other::r--
d:u:UID:perm 针对目录添加默认用户访问控制权限,其目录下的文件继承该访问控制权限
例:[root@Ourlab backup]# setfacl -m d:u:hadoop:rw /backup
[root@Ourlab backup]# getfacl /backup
getfacl: Removing leading '/' from absolute path names
# file: backup
# owner: root
# group: root
user::rwx
user:hadoop:rw-
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:hadoop:rw-
default:group::r-x
default:mask::rwx
default:other::r-x
[root@Ourlab backup]# touch b
[root@Ourlab backup]# getfacl b
# file: b
# owner: root
# group: root
user::rw-
user:hadoop:rw-
group::r-x #effective:r--
mask::rw-
other::r--
d:g:GID:perm 针对目录添加默认属组访问控制权限,其目录下的文件继承该访问控制权限
例:[root@Ourlab backup]# setfacl -m d:g:mygroup:rw /backup
root@Ourlab backup]# setfacl -m d:g:mygroup:rw /backup
root@Ourlab backup]# setfacl -m d:g:mygroup:rw /backup
# file: backup
# owner: root
# group: root
user::rwx
user:hadoop:rw-
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:hadoop:rw-
default:group::r-x
default:group:mygroup:rw-
default:mask::rwx
default:other::r-x
[root@Ourlab backup]# touch c
[root@Ourlab backup]# getfacl c
# file: c
# owner: root
# group: root
user::rw-
user:hadoop:rw-
group::r-x #effective:r--
group:mygroup:rw-
mask::rw-
other::r--
-x:取消
u:UID
例:[root@Ourlab backup]# setfacl -x u:hadoop inittab
[root@Ourlab backup]# getfacl inittab
# file: inittab
# owner: root
# group: root
user::rw-
group::r--
group:mygroup:rw-
mask::rw-
other::r--
g:GID
例:[root@Ourlab backup]# setfacl -x g:mygroup inittab
[root@Ourlab backup]# getfacl inittab
# file: inittab
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--
选项补充:
-b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。
-k,--remove-default:删除缺省的acl规则。如果没有缺省规则,将不提示。
-n,--no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。
--mask:重新计算有效权限,即使ACL mask被明确指定。
-d,--default:设定默认的acl规则。
--restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行。
--test:测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。
-R,--recursive:递归的对所有文件及目录进行操作。
-L,--logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。
-P,--physical:跳过所有符号链接,包括符号链接文件。
--version:输出setfacl的版本号并退出。
--help:输出帮助信息。
--:标识命令行参数结束,其后的所有参数都将被认为是文件名
-:如果文件名是-,则setfacl将从标准输入读取文件名。
getfacl:获得facl
例:[root@Ourlab backup]# getfacl inittab
# file: inittab
# owner: root
# group: root
user::rw-
group::r--
other::r--
用于显示用户的几个命令
w:显示谁登录和他们在做什么
例:[root@Ourlab ~]# w
23:34:15 up 1:07, 2 users, load average: 0.22, 0.08, 0.03
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 192.168.100.104 22:38 0.00s 0.17s 0.02s w
root pts/2 192.168.100.104 23:25 8:23 0.06s 0.02s -bash
who:显示谁登录了系统
例:[root@Ourlab ~]# who
root pts/1 2017-05-03 22:38 (192.168.100.104)
-r:显示当前运行级别
例:[root@Ourlab ~]# who -r
run-level 5 2017-05-03 22:27 last=S
-H:显示标题栏
例:[root@Ourlab ~]# who -H
NAME LINE TIME COMMENT
root pts/1 2017-05-03 22:38 (192.168.100.104)
例:查看某个用户是否正在登录;
[root@Ourlab ~]# who | grep "hadoop"
hadoop pts/3 2017-05-03 23:30 (192.168.100.104)
例:写一个脚本:每隔5秒钟,就来查看hadoop是否已经登录,如果登录,显示已经登录,并退出;
sleep:睡眠
whoami:显示有效的用户名
last:显示/var/log/wtmp文件,显示用户登录历史及系统重启历史,即用户登录日志
-n #:只显示最近#次的登录信息
例:[root@Ourlab ~]# last -n 2
wolf pts/3 192.168.100.104 Wed May 3 23:39 - 23:39 (00:00)
hadoop pts/3 192.168.100.104 Wed May 3 23:30 - 23:31 (00:01)
lastb:显示/var/log/btmp文件,显示用户错误的登录尝试
例:[root@Ourlab ~]# lastb
wolf ssh:notty 192.168.100.104 Wed May 3 23:39 - 23:39 (00:00)
hadoop ssh:notty 192.168.100.104 Wed May 3 23:27 - 23:27 (00:00)
-n #:只显示最近#次的错误登录信息
lastlog:显示每一个用户最近一次的成功登录信息;
-u USERNAME:显示特定用户最近的登录信息
例:[root@Ourlab ~]# lastlog -u hadoop
用户名 端口 来自 最后登陆时间
hadoop pts/3 192.168.100.104 三 5月 3 23:30:11 +0800 2017
basename:取路径的基名
例:[root@Ourlab ~]# basename /etc/abc/me
me
$0:执行脚本时的脚本路径及名称
mail:发送及查收邮件
-s:指定邮件主题
例:[root@Ourlab ~]# cat /etc/fstab | mail -s "How are you?" root
或
[root@Ourlab ~]# mail -s "How are you?" root < /etc/fstab
hostname:显示或修改当前主机的主机名
例:如果当前主机的主机名不是www.magedu.com,就改成www.magedu.com
[root@Ourlab ~]# [ `hostname` != '' ] && hostname
例:如果当前主机名为空、或者为(none)、或者为localhost,就将其改为
[root@Ourlab ~]# [ -z `hostname` ] || [ `hostname` == '(none)' -o `hostname` == 'localhost' ] && hostname
生成随机数
RANDOM:在0-32768范围内随机产生一个数(内部环境变量)
例:[root@Ourlab ~]# echo $RANDOM
21324
[root@Ourlab ~]# echo $RANDOM
3668
随机数生成器:熵池
/dev/random:
/dev/urandom
例:写一个脚本,利用RANDOM生成10个随机数,并找出其中的最大值和最小值;
#!/bin/bash
#
declare -i MAX=0
declare -i MIN=0
for I in {1..10}; do
MYRAND=$RANDOM
[ $I -eq 1 ] && MIN=$RANDOM
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
终端类型:
console:控制台
pty:物理终端(VGA)
tty#:虚拟终端(VGA)
ttys#:串行终端
pts/#:伪终端
阅读(903) | 评论(0) | 转发(0) |