zoukankan      html  css  js  c++  java
  • Linux基础学习5

    程序管理与SELinux初探

    process&program
     程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体档案的型态存在;
     进程 (process): 程序被系统执行时,执行者的权限与属性、程序代码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序。
     
    子进程与父进程
    子进程可以取得父进程的环境变量
    ps -l
    F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
    4 S 0 8074 8072 2 76 0 - 1287 wait pts/1 00:00:00 bash
    0 S 0 8102 8074 4 76 0 - 1287 wait pts/1 00:00:00 bash
    4 R 0 8118 8102 0 78 0 - 1101 - pts/1 00:00:00 ps
    PPID : parent pid ;
     
     
    fork-and-exec
    进程都会由父进程以复制 (fork) 的方式产生一个一模一样的子进程, 然后被复制出来的子程序再以 exec 的方式来执行实际要进行的程序,最终就成为一个子进程。
     
    job control
    用在 bash 环境下,也就是说: 当我们登入系统取得 bash shell 后,在单一终端机接口下同时进行多个工作的行为管理;
    举例来说,我们在登入 bash 后, 想要一边复制档案、一边进行资料搜寻、一边进行编译,还可以一边进行 vi 程序编写! 当然我们可以重复登入
    那六个文字接口的终端机环境中,不过,能不能在一个 bash 内达成? 当然可以啊!就是使用 job control 啦
     
    job control 使用注意点:
     这些工作所觉发的程序必项来自与你 shell 的子程序(即管理自己的 bash);
     前景:你可以控制不下达指令的这个环境称为前景的工作 (foreground);
     背景:可以自行运作的工作,你无法使用 [ctrl]+c 终止他,可使用 bg/fg 呼叫该工作;
     背景中『执行』的程序不能等待 terminal/shell 的输入(input)
     
    &
    直接将指令丢到背景中执行
    [root@www ~]# tar -zpcf /tmp/etc.tar.gz /etc &
    [1] 8400 <== [job number] PID
    [root@www ~]# tar: Removing leading `/' from member names
    # 在中括号内的号码为工作号码 (job number),该号码与 bash 的控制有关。
    # 后续的8400 则是这个工作在系统中的 PID。至于后续出现的数据是 tar 执行数据流,
    # 由与我们没有加上数据流重导向,所以会影响画面!不过不会影响前景的操作
    当然指令有stdout 及stderr时,他的数据依旧是输出到屏幕上面的,这样虽然前景可以工作,但是被这些输出搞的乱乱的 也没有办法工作了,所以最好的办法就是使用数据流重定向;
    [root@www ~]# tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
    [1] 8429
    [root@www ~]#
    [ctrl]-z
    将『目前』的工作丢到背景中『暂停』
    [root@www ~]# vi ~/.bashrc
    # 在 vi 的一般模式下,按下 [ctrl]-z 这两个按键
    [1]+ Stopped vim ~/.bashrc
    [root@www ~]# <==顺利取得了前景的操控权!
    [root@www ~]# find / -print
    ....(输出省略)....
    # 此时屏幕会非常的忙碌!因为屏幕上会显示所有的文件名。请按下 [ctrl]-z 暂停
    [2]+ Stopped find / -print
    jobs
    观察目前的背景工作状态
    [root@www ~]# jobs [-lrs]
    选项与参数:
    -l :除了列出 job number 与指令串之外,同时列出 PID 的号码;
    -r :仅列出正在背景 run 的工作;
    -s :仅列出正在背景当中暂停 (stop) 的工作。
    范例一:观察目前的 bash 当中,所有的工作,与对应的PID
    [root@www ~]# jobs -l
    [1]- 10314 Stopped vim ~/.bashrc
    [2]+ 10833 Stopped find / -print
     + 代表预设的取用工作。 所以说:『 目前我有两个工作在背景当中,两个工作都是暂停的, 而如果我仅输入 fg 时,那举那个 [2] 会被拿到前景当中来处理』其实 + 代表最近被放到背景的工作号码, - 代表最近第二个被放置到背景中的工作号码
     
     
    fg
    将背景工作拿到前景来处理
    [root@www ~]# fg %jobnumber
    选项与参数:
    %jobnumber :jobnumber 为工作号码(数字)。注意,那个 % 是可有可无的!
    范例一:先以 jobs 观察工作,再将工作取出:
    [root@www ~]# jobs
    [1]- 10314 Stopped vim ~/.bashrc
    [2]+ 10833 Stopped find / -print
    [root@www ~]# fg <==预设取出那个 + 的工作,即 [2]。立即按下[ctrl]-z
    [root@www ~]# fg %1 <==直接规定取出的那个工作号码!再按下[ctrl]-z
    [root@www ~]# jobs
    [1]+ Stopped vim ~/.bashrc
    [2]- Stopped find / -print

    看到区别了吗,现在+号对应的就是此刻最新放入背景当中的工作噢;

    bg
    让工作在背景下的状态变成运作中(running)
    范例一:一执行 find / -perm +7000 > /tmp/text.txt 后,立刻丢到背景去暂停!
    [root@www ~]# find / -perm +7000 > /tmp/text.txt
    # 此时,请立刻按下 [ctrl]-z 暂停!
    [3]+ Stopped find / -perm +7000 > /tmp/text.txt
    范例二:让该工作在背景下进行,并且观察他!!
    [root@www ~]# jobs ; bg %3 ; jobs
    [1]- Stopped vim ~/.bashrc
    [2] Stopped find / -print
    [3]+ Stopped find / -perm +7000 > /tmp/text.txt
    [3]+ find / -perm +7000 > /tmp/text.txt & <==用 bg%3 的情况!
    [1]+ Stopped vim ~/.bashrc
    [2] Stopped find / -print
    [3]- Running find / -perm +7000 > /tmp/text.txt &
     
    kill
    管理背景当中的工作
    [root@www ~]# kill -signal %jobnumber
    [root@www ~]# kill -l
    选项与参数:
    -l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?
    signal :代表给予后面接的那个工作什么样的指示用 man 7 signal 可知:
    -1 :重新读取一次参数的配置文件 (类似 reload);
    -2 :代表与由键盘输入 [ctrl]-c 同样的动作;
    -9 :立刻强制删除一个工作;
    -15:以正常的程序方式终止一项工作。与 -9 是不一样的。
     
    kill 后面接的数字默认会是 PID ,如果想要管理 bash 的工作控制,就得要加上 %数字 了, 这点与前面不必要加%不一样,因此还是推荐在使用job control 是使用% 养成良好习惯;
     
    nohup
    在脱机或注销系统之后,还能继续工作;
    [root@www ~]# nohup [指令与参数] <==在终端机前景中工作
    [root@www ~]# nohup [指令与参数] & <==在终端机背景中工作
    例子:
    # 1. 先编辑一支会『 睡着 500 秒』的程序:
    [root@www ~]# vim sleep500.sh
    #!/bin/bash
    /bin/sleep 500s
    /bin/echo "I have slept 500 seconds."
    # 2. 丢到背景中去执行,并立刻注销系统:
    [root@www ~]# chmod a+x sleep500.sh
    [root@www ~]# nohup ./sleep500.sh &
    [1] 5074
    [root@www ~]# nohup: appending output to ‘nohup.out’ <==会告知这个讯息!
    [root@www ~]# exit
    程序观察:
    PS:
    [root@www ~]# ps aux <==观察系统所有的程序数据
    [root@www ~]# ps -lA <==也是能够观察所有系统的数据
    [root@www ~]# ps axjf <==连同部分程序树状态
    选项与参数:
    -A :所有的 process 均显示出来,与 -e 具有同样的效用;
    -a :不与 terminal 有关的所有 process ;
    -u :有效使用者 (effective user) 相关的 process ;
    -x :通常与 a 这个参数一起使用,可列出较完整信息。
    输出格式规划:
    -l :较长、较详细的将该 PID 的信息列出;
    -j :工作的格式 (jobs format)
    -f :做一个更为完整的输出。
     
    一般两种常用:ps -l  查阅自己bash 程序的 
                             ps aux  查询系统所有运行的程序
     
    [root@www ~]# ps -l
    F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
    4 S 0 13639 13637 0 75 0 - 1287 wait pts/1 00:00:00 bash
    4 R 0 13700 13639 0 77 0 - 1101 - pts/1 00:00:00 ps
    F:代表这个程序旗标 (process flags),说明这个程序的总结权限,常见号码有:
       若为 4 表示此程序的权限为 root ;
       若为 1 则表示此子程序仅进行复制(fork)而没有实际执行(exec)。
    S:代表这个程序的状态 (STAT),主要的状态有:
       R (Running):该程序正在运作中;
       S (Sleep):开程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
       D :不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O的情况(ex>打印)
       T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
       Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外。
    UID/PID/PPID:代表『此程序被该 UID 所拥有/程序的 PID 号码/此程序的父程序 PID 号码』
    C:代表 CPU 使用率,单位为百分比;
    PRI/NI:Priority/Nice 的缩写,代表此程序被 CPU 所执行的优先级,数值越小代表该程序越先 执行。
    ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该程序在内存的哪个部分,如果是个 running 的程序,一般就会显示『- 』 / SZ 代表此程序用掉多少内存 / WCHAN表示目前程序是否运作中,同样的, 若为 - 表示正在运作中。
    TTY:登入者的终端机位置,若为进程登录则使用动态终端接口 (pts/n);
    TIME:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运作的时间,而不是系统时间;
    CMD:就是 command 的缩写,造成此程序运行的指令为何。
     
    注意:状态中:Z(Zombie):僵尸状态,需要注意一下,因为此时程序已经终止但却无法被移除到内存外了;
     
    top
    动态观察程序的变化
    [root@www ~]# top [-d 数字] | top [-bnp]
    选项与参数:
    -d :后面可以接秒数,就是整个程序画面更新的秒数。预设是 5 秒;
    -b :以批次的方式执行 top !通常会搭配数据流重导向来将批次的结果输出成为档案。
    -n :与 -b 搭配,意思是,需要进行几次 top 的输出结果。
    -p :指定某些个 PID 来进行观察监测而已。
    在 top 执行过程当中可以使用的按键指令:
    ? :显示在 top 当中可以输入的按键指令;
    P :以 CPU 的使用资源排序显示;
    M :以 Memory 的使用资源排序显示;
    N :以 PID 来排序喔!
    T :由该 Process 使用的CPU 时间累积 (TIME+) 排序。
    k :给予某个 PID 一个讯号 (signal)
    r :给予某个 PID 重新制订一个 nice 值。
    q :离开 top 软件的按键。
     
    nice与priority有关,也是越小越早被执行
     
    pstree
    [root@www ~]# pstree [-A|U] [-up]
    选项与参数:
    -A :各程序树之间的连接以 ASCII 字符来连接;
    -U :各程序树之间的连接以万国码的字符来连接。在某些终端接口下可能会有错误;
    -p :并同时列出每个 process 的 PID;
    -u :并同时列出每个 process 的所属账号名称。
     
    signal
    常见型号:
    代号   名称                                  内容
    1       SIGHUP      启动被终止的程序,重新读取配置文件,类似重启
    2       SIGINT       类似 [ctrl]-c 来中断一个程序的进行
    9       SIGKILL      强制中断程序的进行,如果该程序进行到一半, 那么尚未完成的                       部分可能会有『半产品』产生,类似 vim 会有 .filename.swp 保留下来。
    15     SIGTERM    以正常的结束程序来终止该程序。不过,如果该程序已经发生问题,就是无法使用正常的终止时, 输入这个 signal 也是没有用的。
    17     SIGSTOP      相当于用键盘输入 [ctrl]-z 来暂停一个程序的进行
     
    信号传递:
    kill -signal PID
     
    killall 
    直接给某个程序一个signal
    [root@www ~]# killall [-iIe] [command name]
    选项与参数:
    -i :interactive 的意思,交互式的,若需要删除时,会出现提示字符给用户;
    -e :exact 的意忠,表示『后面接的 command name 要一致』,但整个完整的指令不能超过 15 个字符。
    -I :指令名称(可能含参数)忽略大小写。
     
    PRI
    值越小CPU执行的优先级越高
    PRI=PRI+nice     动态调整
     
    nice
    nice 值可调整的范围为 -20 ~ 19 ;
    root 可随意调整自己或他人程序的Nice 值,且范围为 -20 ~ 19 ;
    一般用户仅可调整自己程序的 Nice 值,且范围仅为 0 ~ 19 (避面一般用户抢占系统资源);
     
    调整nice
     一开始执行程序就立即给予一个特定的 nice 值:用 nice 指令;
    调整某个已经存在的 PID 的 nice 值:用 renice 指令。
     
    [root@www ~]# nice [-n 数字] command
    选项与参数:
    -n :后面接一个数值,数值的范围 -20 ~ 19。
    [root@www ~]# renice [number] PID
    选项与参数:
    PID :某个程序的ID 啊!
    系统资源的观察
    free
    观察内存使用情况
    [root@www ~]# free [-b|-k|-m|-g] [-t]
    选项与参数:
    -b :直接输入 free 时,显示的单位是 Kbytes,我们可以使用 b(bytes),
    m(Mbytey)k(Kbytes), 及 g(Gbytes) 来显示单位喔!
    -t :在输出的最终结果,显示物理内存与 swap 的总量。
     
    uname
    查阅系统与核心相关信息
    [root@www ~]# uname [-asrmpi]
    选项与参数:
    -a :所有系统相关的信息,包括底下的数据都会被列出来;
    -s :系统核心名称
    -r :核心的版本
    -m :本系统的硬件名称,例如 i686 戒 x86_64 等;
    -p :CPU 的类型,与 -m 类似,只是显示的是 CPU 的类型!
    -i :硬件癿平台 (ix86)
     
    uptime
    观察系统启动时间与工作负载
     
    netstat
    网络监控
    [root@www ~]# netstat -[atunlp]
    选项与参数:
    -a :将目前系统上所有的联机、监听、 Socket 数据都列出来
    -t :列出 tcp 网络封包的数据
    -u :列出 udp 网络封包的数据
    -n :不已程序的服务名称,以串口号 (port number) 来显示;
    -l :列出目前正在网络监听 (listen) 的服务;
    -p :列出该网络服务的程序 PID
     
    dmesg
    系统在开机的时候,核心会去侦测系统的硬件,你的某些硬件到底有没有被捉到,那就不这个时候的侦测有关。 但是这些侦测的过程要不是没有显示在屏幕上,就是飞快的在屏幕上一闪而逝!能不能把核心侦测的讯息捉出来瞧瞧? 可以的,那就使用 dmesg 吧!
     
    vmstat
    侦测系统资源变化
     
     
    SELinux(security enhance Linux)
    其实 SELinux 是在进行程序、档案等权限设定的依据核心模块
     
    自主式访问控制 (Discretionary Access Control, DAC)基本上就是依据程序拥有者与档案资源的rwx权限来决定由无存取能力,那么困扰来了:
    1.root 具有最高的权限:如果不小心某支程序被有心人士取得, 且该程序属于 root 的权限,那么这支程序就可以在系统上进行任何资源的存取!
    2.如果你不小心将某个目录的权限色定为 777 ,由与对任何人的权限会变成 rwx ,因此该目录就会被任何人所任意存取!
     
    委任式访问控制 (Mandatory Access Control, MAC)
    以政策规则订定特定程序度取特定档案
     
    SELinux的运作模式:
    SELinux 是透过 MAC 的方式来控管程序,他控制的主体是程序, 而目标是该程序能否度取的『档案资源』
     
    主体 (Subject)
    目标 (Object)
    政策 (Policy):
    o targeted:针对网络服务限制较多,针对本机限制较少,是预设的政策;
    o strict:完整的 SELinux 限制,限制方面较为严格。
    安全性本文 (security context):
    主体能不能存取目标除了政策指定之外,主体与目标的安全性本文必项一致才能够顺利存取
     
    程序的安全性文本可以直接写入,而文档的安全性文本在档案的inode内;
    ls -Z 
    [root@www ~]# ls -Z  #查看安全性文本
    drwxr-xr-x root root root:object_r:user_home_t  Desktop
    -rw-r--r-- root root root:object_r:user_home_t   install.log
    -rw-r--r-- root root root:object_r:user_home_t   install.log.syslog
    # 上述特殊字体的部分,就是安全性本文的内容!
    文本三个字段的意义为:
    Identify:role:type
    身份识别:角色:类型
    身份识别 (Identify):
    相当于账号方面的身份识别!主要的身份识别则有底下三种常见的类型:
    root:表示 root 的 账号身份,如同上面的表格显示的是 root 家目录下的数据啊!
    system_u:表示系统程序方面的识别,通常就是程序啰;
    user_u:代表的是一般使用者账号相关的身份。
     
    角色 (Role):
    透过角色字段,我们可以知道这个数据是属与程序、档案资源还是代表使用者。一般的角色有:
    object_r:代表的是档案或目录等档案资源,这应该是最常见的;
    system_r:代表的就是程序啦!不过,一般使用者也会被指定成为 system_r 
     
    类型 (Type) :(最重要!)
    在预设的targeted 政策中, Identify 与 Role 字段基本上是不重要的!重要的在与这个类型(type) 字段! 基本上,一个主体程序能不能读取到这个档案资源,与类型字段有关!而类型字段在档案与程序的定义不太相同,分别是:
    o type:在档案资源 (Object) 上面称为类型 (Type);
    o domain:在主体程序 (Subject) 则称为领域 (domain) ,domain 需要与type 搭配,则该程序才能够顺利的读取档案资源啦!
     
    domain与type如何搭配用以下例子:httpd程序与/var/www/html目录来说明
     
    [root@www ~]# ll -Zd /usr/sbin/httpd /var/www/html
    -rwxr-xr-x  root  root    system_u:object_r:httpd_exec_t              /usr/sbin/httpd
    drwxr-xr-x  root  root   system_u:object_r:httpd_sys_content_t   /var/www/html
    # 两者的角色字段都是 object_r ,代表都是档案!而 httpd 属于 httpd_exec_t类型,
    # /var/www/html 则属于 httpd_sys_content_t 这个类型!
    在targeted这个规则中,httpd_sys_content_t 这个(type)类型,是可以被httpd_exec_t这个(domain)类型读取的,因此httpd可以读取 /vat/www/html
    当然最终能不能读到正确的资料还要看rwx是否符合Linux权限的规范;
     
    政策内需要制订详细的domain/type 相关性;若档案的type 设定错误, 那么即使权限设定为 rwx 全开的 777 ,该主体程序也无法读取目标档案资源;
     
     
    SELinux 的启动、关闭与观察
    三种模式:
    enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限制 domain/type 
    permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;
    disabled:关闭,SELinux 并没有实际运作。
     
    getenforce
    获取SELinux的模式
    [root@www ~]# getenforce
    Enforcing <==就显示出目前的模式为 Enforcing !
     
    sestatus
    获取SELinux政策
    [root@www ~]# sestatus [-vb]
    选项与参数:
    -v :检查列于 /etc/sestatus.conf 内的档案与程序的安全性本文内容;
    -b :将目前政策的规则布尔值列出,亦即某些规则 (rule) 是否要启动 (0/1) 
      
    /etc/selinux/config
    SELinux配置文件
    [root@www ~]# vi /etc/selinux/config
    SELINUX=enforcing <==调整 enforcing|disabled|permissive
    SELINUXTYPE=targeted <==目前仅有 targeted 与 strict
     
    让/etc/selinux/config失效
    在核心启动过程中忽略seLinux
    /boot/grub/menu.lst
    增加 selinux=0 让核心自动忽略/etc/selinux/config的设定
     
    setenforce
    模式切换
    [root@www ~]# setenforce [0|1]
    选项于参数:
    0 :转成 permissive 宽容模式
    1 :转成 Enforcing 强制模式
     
     
    网络服务的启动与观察
    一般服务启动的脚本会在/etc/init.d底下
     
    # 1. 先启动这个网络服务吧!
    [root@www ~]# /etc/init.d/httpd start
    正在激活 httpd: [ 确定 ]
    # 2. 观察有无此程序,并且观察此程序的SELinux 安全性本文数据
    [root@www ~]# pstree | grep httpd
    |-httpd---8*[httpd] <==httpd 会产生多子程序来负责网络服务
    # 3. 观察此程序的SELinux 安全性本文数据
    [root@www ~]# ps aux -Z | grep http
    root:system_r:httpd_t root 24089 0.2 1.2 22896 9256 ? Ss 16:06 0:00 /usr/sbin/httpd
    root:system_r:httpd_t apache 24092 0.0 0.6 22896 4752 ? S 16:06 0:00 /usr/sbin/httpd
    root:system_r:httpd_t apache 24093 0.0 0.6 22896 4752 ? S 16:06 0:00 /usr/sbin/httpd
    chcon
    重设 SELinux 安全性文本
    [root@www ~]# chcon [-R] [-t type] [-u user] [-r role] 档案
    [root@www ~]# chcon [-R] --reference=范例文件 档案
    选项与参数:
    -R :连同该目录下的次目录也同时修改;
    -t :后面接安全性文本的类型字段!例如 httpd_sys_content_t ;
    -u :后面接身份识别,例如 system_u;
    -r :后面接角色,例如 system_r;
    --reference=范例文件:拿某个档案当范例来修改后续接的档案的类型!
     
    restorecon
    还原到预设的安全性文本
    [root@www ~]# restorecon [-Rv] 档案或目录
    选项与参数:
    -R :连同次目录一起修改;
    -v :将过程显示到屏幕上
     
    seinfo
    政策整体查阅
     
    sesearch
    查询详细规则
     
    semanage
    默认目录的安全性文本的查询与修改
     
     
    总结
    • fork-and-exec
      • 进程都会由父进程以复制(fork),之后再以exec的方式来执行
    • job control
      • 管理自己的bash
      • 前景
        • 控制与下达指令的这个环境
      • 背景
        • 可以自信运行的工作,无法ctrl+c终止,可以使用bg/fg呼叫该工作
        • 背景中执行的程序不能等待terminal/shel的输出(input)
      • 前景与背景切换
        • &: 直接将指令丢到背景中执行
          • tar -zcvf  /tmp/etc.tar.gz /etc &
        • ctrl+z:将目前的工作丢到背景中 并 暂停
      • jobs: 观察目前的背景工作状态
        • jobs [-lrs]
        • fg %jobnumber  ,将背景工作拿到前景来处理
        • bg %jobnumber ,让工作在背景下的状态变成运行中
        • kill -signal  %jobnumber
    • nohup
      • 在脱机或注销系统之后,还能继续工作
      • nohup [指令与参数]
    • ps
      • ps -l          查阅自己bash程序
      • ps -aux     查询系统所有运行的程序
      • 状态字段
        • F,程序旗标,常见4,程序权限为root
        • S,运行状态,
          • R(running),S(sleep),T(stop)
          • Z(Zombie) 僵尸状态,程序以及终止,但无法移除到内存外
        • UID,PID,PPID
        • C,cpu使用率
        • PRI/NI:Priority/nice,程序优先级, 数值越小优先级越高。
        • addr/sz/wchan:都与内存相关
        • TTY:登录中端
        • TIME:使用掉的CPU时间
        • CMD:
      • pstree :以树状结构来显示
    • top
      • top -p 指定某个PID来进行监测。
      • 在top执行过程中使用按键指令
        • P :以 CPU 的使用资源排序显示;
        • M :以 Memory 的使用资源排序显示;
        • N :以 PID 来排序喔!
        • T:由该 Process 使用的CPU 时间累积 (TIME+) 排序。
        • k :给予某个 PID 一个讯号 (signal)
        • r :给予某个 PID 重新制订一个 nice 值
    • signal
      • 1 SIGHUP,类似重启,重新读取配置文件,
      • 2 SIGINT,类似ctrl+c,中断一个程序的进行
      • 9 SIGKILL, 强中中断
      • 15 SIGTERM,正常终止。
      • 17 SIGSTOP,类似ctrl+z 暂停程序
      • kill  -signal PID
    • PRI
      • 越小CPU执行优先级越高
      • PRI=PRI+nice     动态调整
        • nice 范围-20---19
          • root可以随意调整自己或他人程序的nice值,且范围-20--19
          • 普通用户仅可以调整自己的nice值,且范围0--19
          • 也就是说普通用户只能降低自己的优先级,不能提高 
        • nice ,renice
    • free,内存观察
      • free [-b|-k|-m|-g] [-t]
    • netstat
      • -a(all),-t(tcp),-u(udp),-l(listen),-p(pid)
    • selinux
      • 使用场景
        • 黑客拿到web server 这个程序的控制权,而这个程序有root权限。黑客可以用这个root权限的程序控制整个系统。
        • 而selinux则是让你拿到这个用户root权限的程序也不能对整个系统为所欲为,拿到这个web server 只能在规定的目录干事情。其他目录依然没有权限。 
      • 运作模式
        • 透过MAC的方式来管控程序,他控制的【主体】是程序,而目标是该程序能否读取的【档案资源】
        • 主体(subject),程序
        • 目标(object),档案资源
        • 政策(policy)
          • targeted:对网络限制多,对本机限制少,是默认政策
          • strict:完整的限制
          • 政策内需要制定详细的domian/type相关性;若档案的type设定错误,那么即使权限设为777,该主体程序也无法读取目标资源。
        • 安全性文本(security context)
          • 主体能不能存取目标除了政策之外,主体与目标的安全性文本必须一致,才能顺利存取。
          • 简单理解
            • 能不能存取还得要看两者的安全性文本是否匹配。而安全性文本中,就是看主体的domain与目标的type是否搭配。而这种搭配是在政策中规定好的。最终主体能不能拿到目标还要看,目标的rwx是否服务Linux权限的规范。
          • 查看
            • ls -Z
          • 文本三字段意义
            • identify:role:type
            • 主要身份识别:
              • root:root 账号身份
              • system_u:系统程序方面的识别,通常就是程序
              • user_u:普通用户账号
            • 角色
              • object_r:代表档案或目录等档案资源,最常见
              • system_r:代表的就是程序。一般使用者也指定为system_r
            • 类型(最重要)
              • 在默认targeted政策中,identify与role基本没用。主体能不能取得目标,重点是这个类型字段。
              • 而主体与目标的关于这个类型字段定义不同分别是:
                • type:目标object中,称类型(type)
                • domain:主体subject中,称领域(domain)
                • domian与type搭配,主体才能顺序拿到目标。
      • selinux的启动,关闭与观察
        • 三种模式
          • enforcing:强中模式。开启限制。
          • permissive:宽容模式:只发警告信息,并不限制。
          • disable:关闭
        • getenforce,获取模式
        • setenforce,模式切换
        • sestatus,获取政策
        • /etc/selinux/config selinux配置文件
      • selinux安全性文本操作
        • chcon [-R] [-t type] [-u user] [-r role] 档案
        • chcon [-R] --reference=范例文件  档案
        • 还原到预设的安全性文本
          • restorecon [-Rv] 档案或目录
      • 政策观察
        • seinfo,政策整体查阅
        • sesearch,查询详细规则
     
     
  • 相关阅读:
    leetcode108 Convert Sorted Array to Binary Search Tree
    leetcode98 Validate Binary Search Tree
    leetcode103 Binary Tree Zigzag Level Order Traversal
    leetcode116 Populating Next Right Pointers in Each Node
    Python全栈之路Day15
    Python全栈之路Day11
    集群监控
    Python全栈之路Day10
    自动部署反向代理、web、nfs
    5.Scss的插值
  • 原文地址:https://www.cnblogs.com/Aiapple/p/4900361.html
Copyright © 2011-2022 走看看