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】

转载于:https://www.cnblogs.com/eli01/p/3559666.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值