zoukankan      html  css  js  c++  java
  • 8.程序管理与SELinux初探

    # ps -l ----观察程序相关的信息

    注意:有时候kill一个程序不久后,它的父程序又产生了一个,PID还不一样,要想彻底杀死她需要将其父程序杀死

    /etc/security/limits.conf       ----设定使用者可以同联机的数量

    一.bash的job control

        1.背景执行与数据流重导向

        # tar -zpcvf /tmp/etc.tar.gz /etc  > /tmp/log.txt 2>&1 &      ----将/etc整个备份成/tmp/etc.tar.gz(背景中执行,并将输出信息重蹈像至/tmp/log.txt)

        2.将当前工作对到背景中(暂停)

        # 【^z】

        # jobs -l          ----观察目前的bash当中,所有的工作,与对应的PID(+代表预设的取用工作)【1-20】

        # fg                 ----将带有+号的背景工作拿到前景中来

        # 【^z】

        # fg %2        <==>    # fg 2                ----将工作号为2的工作拿到前台

        # 【^z】

        # fg  -                          ------将带有-号的背景工作拿到前景中来

        3.让工作在背景下的程序状态变为运作中:bg

        # find  / -perm +7000 > /tmp/text.txt

        #【^z】  ----快速按下

        [3]  Stopped          find  / -perm +7000 > /tmp/text.txt

        # jobs;bg %3;jobs

        4.管理背景当中的工作 kill【1-21】

        案例一:找出背景工作强制删除

        # jobs

        # kill -9 %2;jobs             ----假设需要杀死2号job(不加%号时指的是PID)

        案例二:正常终止

        # jobs 

        # kill -15 %1      or       #kill -SIGTERM

       5.脱机管理工作

        # vim  sleep500.sh          ----先编辑一个会sellep500秒的脚本

        #!/bin/bash

        /bin/sleep 500s

        /bin/echo "I have sleeped 500 seconds."

       # chmod a+x sleep500.sh

       # nohup ./sleep500.sh &        ----放到系统背景中执行,此时将于终端无关,程序的输出信心将写入~/nohup.out

       # exit      ----关闭终端(干掉其父程序,等下再次登录)

       # ps -l

    二.程序管理

      1.程序的观察

       ps(静态查看)    

       # ps -l             ----仅观察自己的bash相关程序(顶层父程序为当前bash而不延伸到init这支程序) 【1-22,23】

       # ps aux          ----列出目前内存中的所有程序【1-24】

       # ps -lA           ----同样列出所有内存中的程序,但显示字段与ps -l相同

       # ps axjf         ----列出列出类似程序树的程序显示

      

       top(动态查看)【1-0,1,2】

       # top -d 2       ----每两秒钟更新一次top,观察整体信息

       # top -b -n 2 > /tmp/top.txt        ----将top的信息进行两次,并将结果输出到/tmp/top.txt

       # top -d 2 -p 13639           ----动态观察PID为13639的程序

       

       pstree (查看相依性)[ 1-4 ]

      # pstree -A           ----列出目前系统上所有程序的相依性

       # patree -Aup       ----列出目前系统上所有程序的相依性,PID以及使用者

       2.程序的管理[1-3]

       # man 7 signal          ----查阅管理程序的信号 kill -l可以看到汇总

      

       kill

       案例:用ps查到syslog这只程序的信息,并用kill 发送信息使程序重新读取配置文件(重启)

       $ kill -ISGHUP $(ps  aux | grep 'syslog' |grep -v 'grep' | awk 'print $2')           ----包含'syslog'且不包含'grep'字段的那条信息的第二个字段

       $ tail -5 /var/log/messages             ----查看是否有重启信息(ubuntu不行

      

       killall [1-5]

       $ killall -1 syslogd           ----给予syslogd这个指令一个SIGHUP的指令(重新读取配置文件)

       $ killall -9 httpd               ----强制终止httpd启动的所有程序

       $ killall -i -9 bash             ----交互式强制关闭所有bash程序

     3.程序的执行顺序

        priority和nice值[1-6]

      $ nice -10 vi &             ----在后台启动vi,并设置nice为10,PRI将在预设基础上增加10

      $ kill -9 %1          ----将后台的vi干掉

      $ ps -l             ----查看已经在运行中的bash的PID

      $ renice 20 2910      ----将PID为2910的bash的nice值调整为20,也可以用top来实现

     4.系统资源的观察

      free 观察内存使用情况[1-7]

      # free -m        ----单位为M

      uname 查阅系统与核心相关信息[1-8]

      # uname -a            ----输出系统的基本信息

      uptime  观察系统启动时间与工作负载

      # uptime

      netstat 追踪网络或插槽文件[1-9]

      # netstat               ----列出目前系统已建立的网络联机与unix socket状态[1-10]

      # netstat -tlnp            -----找出目前系统上已在监听的网络联机及其PID

      dmesg  分析核心产生的讯息

      # dmesg | more        ----输出开机时核心产生的所有信息

      # dmesg | grep -i hd   ----开机时硬盘相关的信息

      # dmesg | grep -i eth    ----网卡相关的信息

      vmstat 侦测系统资源的变化【1-10,11】

      # vmstat 1 3       ----统计cpu状态,1妙1次,一共三次

      # vmstat -d         ----系统所有磁盘的读写状态

     5.特殊档案与程序

      a. #find / -perm +6000           ----查看整个系统的SUID/SGID的档案

      b./proc/*代表的意义

      #ll /proc/1           ----PID为1(init)的程序相关的信息在/proc/1/*中

      c.针对整个系统的参数【1-13,14】

      d.查询已开启档案或已执行程序之档案

      fuser 藉由档案(或文件系统)找出正在使用其的程序【1-15】

      # fuser -uv .  ----找到使用当前目录的程序,包括使用者/PID/状态/程序指令名

      # fuser -muv /proc       ----找到所有使用/proc这个文件系统的程序

      # find /var -type p       ----.好到所有/var底下属于FIFO类型的文档

      # fuser -uv /var/gdm/.gdmfifo ----..假设针对/var/gdam/.gdamfifo查看使用它的程序的情况

      # fuser -ki /vargdm/.gdmfifo  ----...更进一步关闭程序,并在关闭前询问

      lsof 列出被程序所开启的档案文件名【1-16】

      # lsof        ----列出系统所有已经被程序开启的档案

      # lsof -u root -a -U     ----仅列出root开启的所有socket档案

      # lsof +d /dev           ----请列出目前系统上所有被启动的周边装置

      # lsof -u root | grep bash     ----show出属于root的bash这支程序开启的档案

      pidof 找出某只正在执行的程序的PID【1-17】

      # pidof init syslog     ----找出init和syslog这两只程序的PID


    三:SELinux初探(security enhanced linux)

      /etc/selinux/config         ----SELinux的配置文件

      /boot/grub/menu.lst     ----去这里查看核心有无关闭SELinux

      /etc/selinux/targeted   ----所有targeted线管的信息都放置在这里


      # ls -Z   /root   ----查看/root下的security context【1-18】   

      # ls -Zd  /usr/sbin/httpd /var/www/html          ----实现WWW服务器功能的httpd程序和网页放置的位置【1-19】

      1.SELinux的启动、关闭与观察

       SELinux支持的三种模式:ecforcing/permissive/disabled【1-20-2】

       # getenforce       ----查看SELinux目前的运作模式

       # sestatus          ----列出目前SELinux使用哪个policy【1-21-2】

       SELinux的启动

       # sestatus      ----查看是否启动了SELinux

       # vi /etc/selinux/config   ----如果显示SELINUX:disabled,修改为SELINUX:enforcing【1-22-2】

       # vi /boot/grub/menu.lst   ----如果核心关闭了SELinux,要修改【1-23-2】

       # getenforce    ----重启后查看SELinux的状态

      2.SELinux网络服务运作案例

       第一步:网络服务的启动与观察

       # /etc/init.d/httpd start       ----启动服务

       # pstree | grep httpd              ----查看是否已经启动

       # ps aux -Z | grep http            ----查看改程序的security context,发现其domain为httpd_t

       第二步:制作一个简单的网页

       # echo "This is a SELinux test webpage." > /var/www/html/index.html   

       在浏览器通过http://127.0.0.1查看

       # ll -Z /var/www/html/index.html   ----查看这个档案的权限和SELinux security context,发现类型为httpd_sys_conent_t,这个类型在httpd_t领域中,httpd这支程序可以读取这个领域中的东西

      3.错误的SELinux安全性本文案例

       第一步:在root家目录创建静态网页,转移到/var/www/html下测试

       # echo "2nd SELinux test webpage." > index.html

       # rm /var/www/html/index.html

       # mv index.html /var/www/html   ----将该网页搬到/var/www/html下替代案例一创建的网页

       通过http://127.0.0.1/index.html测试,发现无权限

       第二步:查看安全性本文信息

       # ll -Z /var/www/html/index.html ----发现type为user_home_t而不是httpd_sys_conent_t,对于这个type,domian为httpd_t的程序是无权执行的(根据policy)

       第三步:重设SELinux安全性本文

       chcon 【1-24-2】

       # chcon -t httpd_sys_conent_t /var/www/html/index.html  ----将出问题的网页的type修改成httpd_sys_conent_t

       # ll -Z /var/www/html/index.html    ----看一下修改好了没

       # chcon --reference=/etc/passwd /var/www/html/index.html      ----以/etc/passwd为模板修改这个网页(这样一来网页的类型又错了哦)

       restorecon 【1-25】

       # restorecon -Rv /var/www/html/index.html  ----用预设的安全性文本还原网页档案

     4.SELinux所需要的服务

       settroubleshoot    将错误信息写入/var/log/messages

       # chkconfig --list settroubleshoot    ----设置该服务在哪些linux运作模式下开启

       # chkconfig settroubleshoot on 

       # cat /var/log/messages | grep settroubleshoot    ----捉出一条错误信息出来

       # sealert -l 6c......          ----根据错误的信息获得完整的错误说明

       # restorecon -Rv /var/www/html/index.html  ----用预设的安全性文本还原网页档案(根据完整错误说明ALLowing        Access部分修正错误)

       auditd  详细资料写入/var/log/audit/audit.log

       # chkconfig --list auditd   ----产看该服务在各个系统模式下的启动情况

       # chkconfig auditd on   ----如果当前模式下没启动,启动它

       # audit2why < var/log/audit/audit.log   ----将登录档的信息读进来,并输出分析的结果

     5.SELinux的政策与规则管理

       政策查阅

       seinfo 查阅当前政策提供的规则的大体信息【1-26】

       # seinfo     ----列出SELinux在此政策下的统计状态

       # seinfo -b | grep httpd     ----列出与httpd有关的规则有哪些(booleans)

       # seinfo -t | grep httpd     ----列出含有httpd字段的安全性本文类别 

       sesearch 查阅详细的政策信息【1-27】

       # sesearch -a -t httpd_sys_content_t     ----找出目标档案资源类别为httpd_sys_content_t的有关信息【1-28】

       # sesearch -s httpd_t -t httpd_* -a       ----找出主题程序为httpd_t,目标档案类别为httpd相关的所有信息

       # sesearch -b httpd_enable_homedirs -a     ----查看这个布尔值规范了多少规则

       布尔值的查询与修改

       getsebool 查询

       # getsebool -a        ----查询目前系统上所有布尔值的情况(打开/关闭)

       setsebool 修改

       # getseool httpd_enable_homedirs    ----看看这个布尔值是否关闭

       # setsebool -P httpd_enable_homedirs=0    ----假设启动将其关闭

       # getsebool   ----再次查看

       目录的默认安全性文本查询与修改

       semanage 【1-29】

       # semanage fcontext -l   ----如果查看/var/www/html目录的默认安全性文本的话,查一下对应的信息就是了

       案例:利用semanage设定/srv/samb目录的安全性本文为pubic_content_t

       # mkdir /srv/samb

       # ll -Zd /srv/samba    ----我们重新设定前默认的情况

       # semanage fcontent -l | grep '/srv'   ----发现并没有指定到/srv/samba

       # semanage fcontext -a -t public_content_t "/srv/samba(.*)?"   ----动手设定一下

       # semanage fcontent -l | grep '/srv/samba'   ----看一下设置是否生效

       # cat /etc/selinux/targeted/contexts/files/file_contexts.local    ----看看是否加入了一条相关的文本

       # restorecon -Rv /srv/samba*    ----尝试恢复为原来的默认值


    四.重点回顾【1-30,31】


    五.习题

       案例:【1-32】

       # rpm -q vsftpd        ----查看是否安装了这个软件

       # yum install vsftpd    ----安装

       # /etc/init.d/vsftpd start    ----启动这只软件

       # pstree -p | grep vsftpd    ----查看它的PID

       # renice 10 2377    ----假设查到PID为2377,将nice设为10

       # top -p grep 2377   ----观察

       # netstat -tlunp | grep vsftpd   ----查看其网络端口

       

       # ftp localhost   ----用nemo的身份建立ftp连接,发现无法连接

       # ll -ld /home/nemo   ----看看一下用户家目录权限情况

       # tail /var/log/messages    ----看看登录文件有没有出现什么重要信息

       # sealert -l b8......   ----根据提示信息查阅详细情况,发现规则有问题

       # setsebool -P ftp_home_dir=1     ----

       # ftp localhost   ----用nemo的身份建立ftp连接,成功

       简答题:【1-33】

  • 相关阅读:
    IDEA tomcat热部署方法及乱码问题解决
    访问WEB-INF下JSP资源的几种方式(转)
    SpringMVC 静态资源处理
    SpringMVC中的拦截器
    SpringMVC中的异常处理
    SpringMVC实现文件上传
    IDEA 热部署
    响应数据和结果视图
    SpringMVC中的常用注解
    js获取当前根目录的方法
  • 原文地址:https://www.cnblogs.com/eli01/p/3559666.html
Copyright © 2011-2022 走看看