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

这里的技术是共享的

You are here

马哥 08_01 _facl及用户及Linux终端 有大用

image.png

文件系统访问列表

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



image.png

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  显示当前登录到系统上的用户

image.png


终端类型:  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

image.png


开加一窗口,使用 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--

image.png


现在 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

image.png


hadoop 如何匹配文件的安全上下文的  此时的文件权限应用次序

image.png


image.png




[root@ebs-22618 backup]# setfacl -m u:hbase:rwx inittab

[root@ebs-22618 backup]# getfacl inittab

image.png


说明 mask这里变也了 rwx,说明mask 是随着指定 用户的 访问控制列表( rwx )而改变的

(如果  mask 固定好了的话,那么超过的权限会被截掉)



[root@ebs-22618 backup]# getfacl inittab

image.png

[root@ebs-22618 backup]# setfacl -x u:hadoop inittab

image.png


[root@ebs-22618 backup]# getfacl inittab

image.png


[root@ebs-22618 backup]# setfacl -x g:mygroup inittab

[root@ebs-22618 backup]# getfacl inittab

image.png



[root@ebs-22618 backup]# ls -l

image.png


如果复制或归档 很可能这个 + ( 加号 ) 扩展属性不会被复制或归档,除非使用特殊命令或选项


[root@ebs-22618 backup]# whoami

root

[root@ebs-22618 backup]# man whoami

image.png

su 后面 没有加 -  ,很可以就不是切换到的用户,而是切换之前的用户




[root@ebs-22618 backup]# man who   (who 命令显示当前登录到系统的用户有哪些)

image.png


[root@ebs-22618 backup]# who    ( 显示登录的用户及终端)

root     pts/3        2018-05-26 19:17 (58.209.91.211)

image.png


终端:要么本地,要么远程 

[root@ebs-22618 backup]# man who

image.png



[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

image.png


[root@ebs-22618 backup]# sleep 3  睡眠3秒 等待3秒



[root@ebs-22618 backup]# man w

image.png


[root@ebs-22618 backup]# w                (w 显示的信息比 who 更详细)    IDLE是空闲时间

image.png


[root@ebs-22618 backup]# man w  

image.png


last 是显示登录日志的,都有谁登录系统了,重启历史等信息

[root@ebs-22618 backup]# last   (事实上显示的是 /var/log/wtm 文件的,显示用户的登录历史及系统重启历史等)

image.png



[root@ebs-22618 backup]# last -n 3                (显示最近3次)

image.png


[root@ebs-22618 ~]# lastlog


[root@ebs-22618 ~]# lastlog -u hadoop

用户名           端口     来自             最后登陆时间

hadoop                                     **从未登录过**


[root@ebs-22618 ~]# man basename

image.png


[root@ebs-22618 ~]# basename /etc/man.config

man.config



[root@ebs-22618 ~]# basename $0  ($0命令本身,脚本文件名本身)



image.png


[root@ebs-22618 ~]# mail

No mail for root

image.png

(输入 quit 也是退出 )


[root@ebs-22618 ~]# man mail

image.png



[root@ebs-22618 ~]# mail    都看完了,邮件就没了 ,被放在家目录下的 mbox 文件里了 (但是我没有看到mbox)

No mail for root


image.png


[root@ebs-22618 ~]# man mail

image.png



[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


www.magedu.com


[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 ~]#




普通分类: