• 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,查询详细规则
     
     
  • 相关阅读:
    cv2.SIFT() AttributeError: 'module' object has no attribute 'SIFT' OpenCV Python can't use SURF, SIFT
    CMake Error at cmake/OpenCVUtils.cmake
    安装opencv3.x卡在ICV: Downloading ippicv_linux_20151201.tgz...
    CMake Error at cmake/OpenCVModule.cmake:295 (message): No extra modules found in folder:Please provide path to 'opencv_contrib/modules' folder
    关于池化(pooling)理解!!!
    使用qt creator4.XXX,b编辑和调试caffe,太好用了
    Ubuntu下好的PDF阅读器介绍
    Qt的action控件中采用默认绑定,没有connect显示绑定!!!
    Ubuntu中更改所有子文件和子目录所有者权限
    关于ubuntu14.04,忘记root密码解决方案(经测试,内核3.13和4.2可行)。
  • 原文地址:https://www.cnblogs.com/Aiapple/p/4900361.html
Copyright © 2020-2023  润新知