欢迎各位兄弟 发布技术文章
这里的技术是共享的
文件系统访问列表
tom
tom.tom基本组
other:r--
jerry
普通用户不能执行 chown 命令
文件系统访问列表
FACL: Filesystem Access Control List
利用文件(的隐藏的或扩展的)属性保存额外的访问控制权限
jerry:rw-
setfacl
-m 设定
u:UID:perm (例子里用的是USERNAME 而不是 UID) d:u:UID:perm 如果用在目录上 里面新建的文件的扩展的访问控制权限自动继承它
g:GID:perm (例子里用的是GROUPNAME 而不是 GID) d:g:GID:perm 如果用在目录上 里面新建的文件的扩展的访问控制权限自动继承它
-x 取消
u:UID
g:GID
getfacl
w 显示的信息比who更详细
who 命令显示当前登录到系统的用户有哪些
whoami (who am I )显示当前现在正在登录到系统上的用户
last: 显示/var/log/wtmp 是显示登录日志的,都有谁登录系统了,重启历史等信息
-n # 只显示最近#次的相关信息 (last -5 或 last -n 5)
lastb (b 就是 dead 坏的) 显示 /var/log/btmp 文件,显示用户错误的登录尝试 (谁什么时候尝试登录我们的系统,而是没有登进去)
-n # 只显示最近#次的相关信息 ,最近#次的尝试登录且登录失败的信息 (它也支持 -n 选项) (lastb -5 或 last -n 5)
lastlog: 显示每一个用户最近一次的成功登录信息
-u USERNAME 显示特定用户最近的登录信息
basename: 取得文件或路径的基名 (好像 set 也能取目录,最后一个文件的文件名)
basename $0 ($0命令本身,脚本文件名本身)执行脚本时的脚本路径及名称
mail 收邮件命令(本机上不同的用户之间来进行发送)
大部分情况下系统默认情况下会自动装邮件服务器的
(内部通信,警告信息都是通过邮件发送的,比如磁盘满了,会发送给用户或管理员)
(每个用户可以接受或发送邮件,都有自己的邮箱)
hostname 显示主机名 (系统中有个环境变量,hostname,用于保存当前主机的主机名)
echo $HOSTNAME 结果一样
hostname 命令
# hostname 不跟参数,就是显示主机名
# hostname myname 跟参数,就是设置主机名为myname
如果当前主机的主机名不是 ebs-22618,就将其改为ebs-22618
[root@ebs-22618 ~]# [ `hostname` != 'ebs-22618' ] && hostname ebs-22618
[root@ebs-22618 ~]# hostname
ebs-22618
如果当前主机的主机名是localhost,就将其改为ebs-22618
[root@ebs-22618 ~]# hostname localhost (localhost 意味着本地主机没有主机名)
[root@ebs-22618 ~]# hostname
localhost
如果当前主机的主机名为空,或者为(none),或者为localhost 就将其改为www.magedu.com
[root@ebs-22618 ~]# hostname '(none)'
[root@ebs-22618 ~]# hostname
(none)
[root@ebs-22618 ~]# [ -z `hostname` -o `hostname` == '(none)' -o `hostname` == 'localhost' ] && hostname ebs-22618
(-z 表示是否为空)
[root@ebs-22618 ~]# hostname
ebs-22618
[root@ebs-22618 ~]# hostname ''
[root@ebs-22618 ~]# hostname
[root@ebs-22618 ~]# [ -z `hostname` -o `hostname` == '(none)' -o `hostname` == 'localhost' ] && hostname ebs-22618
-bash: [: too many arguments
[root@ebs-22618 ~]#
[root@ebs-22618 ~]# [ -z `hostname` ] || [ `hostname` == '(none)' -o `hostname` == 'localhost' ] && hostname ebs-22618
( hostname为空时,这样写才不报错! )
[root@ebs-22618 ~]# hostname
ebs-22618
[root@ebs-22618 ~]#
生成随机数
RANDOM (系统中的内置变量) 0-65536/2 (32768) 中的一个随机数
(它也是通过软件模拟生成的随机数) (只能作测试使用,不能用来作加密使用)
(这个随机数是bash shell 内部维护的)
[root@ebs-22618 ~]# echo $RANDOM
29024
[root@ebs-22618 ~]# echo $RANDOM
22066
[root@ebs-22618 ~]# echo $RANDOM
1864
写一个脚本,利用RANDOM生成10个随机数,并找出其中的最大值,和最小值,显示出来
随机数生成器 有两个 ( 软件模拟的两个设备 (有规律可循,容易被攻破))
熵池(随时保留当前系统上的随机数)(键盘的时间间隔)(对服务器而言,没有键盘,把某些硬件终端请求的时间间隔)(保存在熵池里面)
(用到随机数,到熵池中取,从熵池中拿走) (有些熵池里没有数据了,系统让你拼命敲键盘)
(默认都到熵池里取数据)
/dev/random (安全要求高) (熵池里假如没有数据,程序就会停下来,等待你填充数据到熵池)( 会阻塞用户的进程 )
/dev/urandom (熵池里假如没有数据,通过软件的方式模拟生成数据) ( 不会阻塞用户的进程 )
[root@ebs-22618 backup]# whoami 显示当前登录到系统上的用户
终端类型: VGA卡就是显卡
console:控制台 (直接连到 linux 上的 显示器和键盘) (它其实不是终端,与用户无关)(可以理解为终端)
pty: (物理终端)pty physic terminal (VGA) (控制台和物理终端 我们可以不加区分)
tty#: 虚拟终端(虚拟控制台) (VGA) (通常是附加在某个物理终端上,通常在本地)结合软件的方式模拟实现(虚拟实现)
ttys: 串行终端 (古老的台式机的后面有串行口,可以连到控制台或物理终端)
pts/#: 伪终端 远程连上去的 (假的,不存在的模拟出来的) 伪文件系统的基础上所形成的假的终端
shell: 关联到某终端,或者是关联到控制台上的
[root@ebs-22618 ~]# mkdir /tmp/backup
[root@ebs-22618 ~]# cd /tmp/backup/
[root@ebs-22618 backup]#
[root@ebs-22618 backup]# cp /etc/inittab ./
[root@ebs-22618 backup]# getfacl inittab
开加一窗口,使用 hadoop 登录
[root@ebs-22618 backup]# su - hadoop
Hello,hive.Welcome to our system. It is 2018年 05月 26日 星期六 19:47:23 CST .
[hadoop@ebs-22618 ~]$ cd /tmp/backup/
[hadoop@ebs-22618 backup]$
[hadoop@ebs-22618 backup]$ echo 123 > inittab
-bash: inittab: 权限不够
[hadoop@ebs-22618 backup]$
root 下 设置 haddop 用户对 inittab 有 可读可写权限
[root@ebs-22618 backup]# setfacl -m u:hadoop:rw- inittab (rw-,这里-表示没有,可以省略)
[root@ebs-22618 backup]# getfacl inittab
# file: inittab
# owner: root
# group: root
user::rw- #文件本身的属主的权限
user:hadoop:rw- #额外的用户对于文件的权限
group::r-- #文件本身的属组的权限
mask::rw-
other::r--
现在 hadoop 用户可以写内容进去了
[hadoop@ebs-22618 backup]$ echo 123 >> inittab
[hadoop@ebs-22618 backup]$
[hadoop@ebs-22618 backup]$ tail -n 5 inittab
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
123
[hadoop@ebs-22618 backup]$ tail -5 inittab
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
123
[hadoop@ebs-22618 backup]$
用root 用户设定组有可读可写权限
[root@ebs-22618 backup]# setfacl -m g:mygroup:rw inittab
[root@ebs-22618 backup]# getfacl inittab
hadoop 如何匹配文件的安全上下文的 此时的文件权限应用次序
[root@ebs-22618 backup]# setfacl -m u:hbase:rwx inittab
[root@ebs-22618 backup]# getfacl inittab
说明 mask这里变也了 rwx,说明mask 是随着指定 用户的 访问控制列表( rwx )而改变的
(如果 mask 固定好了的话,那么超过的权限会被截掉)
[root@ebs-22618 backup]# getfacl inittab
[root@ebs-22618 backup]# setfacl -x u:hadoop inittab
[root@ebs-22618 backup]# getfacl inittab
[root@ebs-22618 backup]# setfacl -x g:mygroup inittab
[root@ebs-22618 backup]# getfacl inittab
[root@ebs-22618 backup]# ls -l
如果复制或归档 很可能这个 + ( 加号 ) 扩展属性不会被复制或归档,除非使用特殊命令或选项
[root@ebs-22618 backup]# whoami
root
[root@ebs-22618 backup]# man whoami
su 后面 没有加 - ,很可以就不是切换到的用户,而是切换之前的用户
[root@ebs-22618 backup]# man who (who 命令显示当前登录到系统的用户有哪些)
[root@ebs-22618 backup]# who ( 显示登录的用户及终端)
root pts/3 2018-05-26 19:17 (58.209.91.211)
终端:要么本地,要么远程
[root@ebs-22618 backup]# man who
[root@ebs-22618 backup]# who -H 带上显示头部
名称 线路 时间 备注
root pts/3 2018-05-26 19:17 (58.209.91.211)
[root@ebs-22618 backup]# who -r (显示运行级别的)
运行级别 3 2018-03-08 21:57
[root@ebs-22618 backup]#
[root@ebs-22618 backup]# who | grep "hadoop" (看看 hadoop 有没有登录)
[root@ebs-22618 backup]# echo $? (看看$?结果) (只有0才表示正确的状态返回值)
1
记住 su hadoop 是不能算的 (su - hadoop 或者用 hadoop 来登录,才算)
每隔5秒钟就来查看hadoop 用户 有没有登录,如果登录,显示其已经登录,并退出
[root@ebs-22618 backup]# man sleep
[root@ebs-22618 backup]# sleep 3 睡眠3秒 等待3秒
[root@ebs-22618 backup]# man w
[root@ebs-22618 backup]# w (w 显示的信息比 who 更详细) IDLE是空闲时间
[root@ebs-22618 backup]# man w
last 是显示登录日志的,都有谁登录系统了,重启历史等信息
[root@ebs-22618 backup]# last (事实上显示的是 /var/log/wtm 文件的,显示用户的登录历史及系统重启历史等)
[root@ebs-22618 backup]# last -n 3 (显示最近3次)
[root@ebs-22618 ~]# lastlog
[root@ebs-22618 ~]# lastlog -u hadoop
用户名 端口 来自 最后登陆时间
hadoop **从未登录过**
[root@ebs-22618 ~]# man basename
[root@ebs-22618 ~]# basename /etc/man.config
man.config
[root@ebs-22618 ~]# basename $0 ($0命令本身,脚本文件名本身)
[root@ebs-22618 ~]# mail
No mail for root
(输入 quit 也是退出 )
[root@ebs-22618 ~]# man mail
[root@ebs-22618 ~]# mail 都看完了,邮件就没了 ,被放在家目录下的 mbox 文件里了 (但是我没有看到mbox)
No mail for root
[root@ebs-22618 ~]# man mail
[root@ebs-22618 ~]# cat /etc/fstab | mail -s "How are you?" root 主题(How are you?) 正文是/etc/fstab内容 发给 root
[root@ebs-22618 ~]#
[root@ebs-22618 ~]# mail -s "How are you?" root < /etc/fstab (可以使用输入重定向作为正文内容)
[root@ebs-22618 ~]# hostname
ebs-22618
[root@ebs-22618 ~]# echo $HOSTNAME
ebs-22618
[root@ebs-22618 ~]#
[root@ebs-22618 ~]# hostname www.magedu.com 改主机名
[root@ebs-22618 ~]# hostname
[root@ebs-22618 ~]# echo $HOSTNAME 但是这里没改 (登录的时候显示出来的主机名)
ebs-22618
[root@ebs-22618 ~]#
[root@ebs-22618 ~]# hostname $HOSTNAME 再改回来吧
[root@ebs-22618 ~]# echo $HOSTNAME
ebs-22618
[root@ebs-22618 ~]# hostname
ebs-22618
[root@ebs-22618 ~]#