程序管理与SELinux初探

process&program
 程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体档案的型态存在;
 进程 (process): 程序被系统执行时,执行者的权限与属性、程序代码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序。
 
子进程与父进程
子进程可以取得父进程的环境变量
ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
S - wait pts/ :: bash
S - wait pts/ :: bash
R - - pts/ :: 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 &
[] <== [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 >& &
[]
[root@www ~]#
[ctrl]-z
将『目前』的工作丢到背景中『暂停』
[root@www ~]# vi ~/.bashrc
# 在 vi 的一般模式下,按下 [ctrl]-z 这两个按键
[]+ Stopped vim ~/.bashrc
[root@www ~]# <==顺利取得了前景的操控权!
[root@www ~]# find / -print
....(输出省略)....
# 此时屏幕会非常的忙碌!因为屏幕上会显示所有的文件名。请按下 [ctrl]-z 暂停
[]+ Stopped find / -print
jobs
观察目前的背景工作状态
[root@www ~]# jobs [-lrs]
选项与参数:
-l :除了列出 job number 与指令串之外,同时列出 PID 的号码;
-r :仅列出正在背景 run 的工作;
-s :仅列出正在背景当中暂停 (stop) 的工作。
范例一:观察目前的 bash 当中,所有的工作,与对应的PID
[root@www ~]# jobs -l
[]- Stopped vim ~/.bashrc
[]+ Stopped find / -print
 + 代表预设的取用工作。 所以说:『 目前我有两个工作在背景当中,两个工作都是暂停的, 而如果我仅输入 fg 时,那举那个 [2] 会被拿到前景当中来处理』其实 + 代表最近被放到背景的工作号码, - 代表最近第二个被放置到背景中的工作号码
 
 
fg
将背景工作拿到前景来处理
[root@www ~]# fg %jobnumber
选项与参数:
%jobnumber :jobnumber 为工作号码(数字)。注意,那个 % 是可有可无的!

范例一:先以 jobs 观察工作,再将工作取出:
[root@www ~]# jobs
[]- Stopped vim ~/.bashrc
[]+ Stopped find / -print
[root@www ~]# fg <==预设取出那个 + 的工作,即 []。立即按下[ctrl]-z
[root@www ~]# fg % <==直接规定取出的那个工作号码!再按下[ctrl]-z
[root@www ~]# jobs
[]+ Stopped vim ~/.bashrc
[]- Stopped find / -print

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

bg
让工作在背景下的状态变成运作中(running)
范例一:一执行 find / -perm + > /tmp/text.txt 后,立刻丢到背景去暂停!
[root@www ~]# find / -perm + > /tmp/text.txt
# 此时,请立刻按下 [ctrl]-z 暂停!
[]+ Stopped find / -perm + > /tmp/text.txt
范例二:让该工作在背景下进行,并且观察他!!
[root@www ~]# jobs ; bg % ; jobs
[]- Stopped vim ~/.bashrc
[] Stopped find / -print
[]+ Stopped find / -perm + > /tmp/text.txt
[]+ find / -perm + > /tmp/text.txt & <==用 bg% 的情况!
[]+ Stopped vim ~/.bashrc
[] Stopped find / -print
[]- Running find / -perm + > /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 [指令与参数] & <==在终端机背景中工作
例子:
# . 先编辑一支会『 睡着 秒』的程序:
[root@www ~]# vim sleep500.sh
#!/bin/bash
/bin/sleep 500s
/bin/echo "I have slept 500 seconds."
# . 丢到背景中去执行,并立刻注销系统:
[root@www ~]# chmod a+x sleep500.sh
[root@www ~]# nohup ./sleep500.sh &
[]
[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 :后面接一个数值,数值的范围 - ~ 。
[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底下
 
# . 先启动这个网络服务吧!
[root@www ~]# /etc/init.d/httpd start
正在激活 httpd: [ 确定 ]
# . 观察有无此程序,并且观察此程序的SELinux 安全性本文数据
[root@www ~]# pstree | grep httpd
|-httpd---*[httpd] <==httpd 会产生多子程序来负责网络服务
# . 观察此程序的SELinux 安全性本文数据
[root@www ~]# ps aux -Z | grep http
root:system_r:httpd_t root 0.2 1.2 ? Ss : : /usr/sbin/httpd
root:system_r:httpd_t apache 0.0 0.6 ? S : : /usr/sbin/httpd
root:system_r:httpd_t apache 0.0 0.6 ? S : : /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,查询详细规则
 
 

Linux基础学习5的更多相关文章

  1. linux基础学习之软件安装以及常用命令

    linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...

  2. Linux基础学习系列目录导航

    Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...

  3. linux基础学习路线&review

    linux基础学习网址: https://www.runoob.com/linux/linux-tutorial.html 比较重点的是这个启动过程的介绍学习:https://www.runoob.c ...

  4. Linux 基础学习1

    目录 Linux 基础学习 用户登录 终端 交互式接口 bash 修改ssh连接慢的步骤 命令提示符 显示提示符格式 命令 别名 命令格式 获取命令的帮助信息 man bash 快捷键 tab 键 引 ...

  5. Linux 基础学习2

    目录 Linux 基础学习2 文件目录结构 文件命名规范 文件系统结构 linux应用程序的组成 绝对路径和相对路径 目录名和基名 切换目录 切换到家目录 切换到上一次的目录 显示当前的工作目录 列出 ...

  6. Linux基础学习(全)

    使用的Linux发行版本为Redhat 1.Linux(RedHat)基础学习-命令行使用入门 2.Linux(RedHat)基础学习-文件寻址与管理 3.Linux(RadHat)基础学习-vim编 ...

  7. Linux基础学习(1)--Linux系统简介

    第一章——Linux系统简介 1.UNIX和Linux发展史: 1.1 unix发展史: (1)1965年,美国麻省理工学院(MIT).通用电气公司(GE)及AT&T的贝尔实验室联合开发Mul ...

  8. Linux 基础学习(第二节)

    free命令用于显示当前系统中内存的使用量信息,格式为:“free [-h]”. 为了保证Linux系统不会突然卡住宕机,因此内存使用量应该是运维人员时刻要关注的数据啦,咱们可以使用-h参数来以更人性 ...

  9. Linux基础学习(二)

    前言: 我们在上一节了解了一下linux的硬件组成,虽然也许对具体的东西还不甚了解,但是我们知道了linux下一切皆文件这一特性 我们装好了CentOS7的虚拟机(这个可以看别人教程来装起来,比较简单 ...

  10. Linux基础学习(一)

    前言:这个学习笔记是为了督促自己能够更好的学习Linux的有关知识. 参考书目 鸟哥的linux私房菜 Chapter 1:入门建议 新手建议:重点 基础一定一定要学好 那么什么是基础呢? 先从Lin ...

随机推荐

  1. Understanding on 'Error to Origin (50x)' , 'Internal CDN Error (50x)' and 'External Error (50x)' in Chartron

    Overview This document explains about definition of these values on OUI Chartron. Definition of Erro ...

  2. loj2049 「HNOI2016」网络

    好像复杂度来说不是正解--不加谜之优化(下叙)能被loj上的加强数据卡 #include <algorithm> #include <iostream> #include &l ...

  3. leetcode 【 Reverse Linked List II 】 python 实现

    题目: Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1- ...

  4. IOS开发学习笔记017-第一个IOS应用

    第一个IOS应用程序,就从最简单的开始吧. 1.先了解一下开发环境,Xcode的相关组成 2.还有模拟器 3.运行与停止按钮 4.新建一个工程 5.看看main函数里都有啥 6.现在来添加一个控件 1 ...

  5. Linux之如何进行固定IP、DNS等设置

    前提:虚拟机Linux centOS6.6 Linux如何设置固定IP.dns.网关 1.切换到root账号 2.#cd  /etc/sysconfig/network-scripts 进入网卡的设置 ...

  6. python - 接口自动化测试 - basic_data - 基础数据参数化方法封装

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: basic_data.py @ide: PyCharm C ...

  7. 冒泡排序(Bubble Sort)及优化

    原理介绍 冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有 ...

  8. RQNOJ 明明的随机数

    题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应 ...

  9. 使用 Python 获取 Linux 系统信息

    探索platform模块 platform模块在标准库中,它有很多运行我们获得众多系统信息的函数.让我们运行Python解释器来探索它们中的一些函数,那就从platform.uname()函数开始吧: ...

  10. bzoj3105【CQOI2013】新nim游戏

    题意:http://www.lydsy.com/JudgeOnline/problem.php?id=3105 sol  :要想必胜则拿完后异或空间不能包含0,即给对手留下一组线性基 为保证拿走的最小 ...