# 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】