linux 基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 基础知识相关的知识,希望对你有一定的参考价值。

日志

日志的作用:
1.解决系统方面的问题
2.解决网络服务的问题
3.记录过往事件

/var/log/ //日志文件保存位置
cron //记录周期性任务计划
dmesg //开机核心侦测信息
lastlog //系统所有行好最近一次的登陆信息
maillog //邮件往来
messages //系统错误信息
secure //设计输入系统帐号密码的程序
wtmp //正确登陆系统的账户信息
btmp //错误登陆系统的账户信息

/var/log/httpd/ //不同的网络服务会保存在自己的日志目录中
/var/log/samba/

日志类型
1.ASCII类型

2.data类型
last //查看wtmp日志文件
lastb //查看btmp日志文件

日志需要的服务
rsyslogd //主要负责记录系统运作时的信息和内核信息写入日志,日志的主服务
logrotate //主要负责日志轮询

rhel5版本之前日志的服务syslogd服务,rhel6之后rsyslogd服务

rsyslog
什么服务 什么等级 记录在哪个文件
配置文件:/etc/rsyslog.conf
/etc/rsyslog.d/*

/etc/rsyslog.conf

#### RULES ####
选项 动作 (选项和动作以制表符“Tab”分割)

选项:设施和级别(设施和级别以“.”进行分割)(不同的选项以“;”分割)
*.info;mail.none;authpriv.none;cron.none /var/log/messages

设施
authpriv //认证系统,询问用户和口令
cron //周期性计划任务
daemon //守护进程程序
kern //内核的信息
mail //邮件系统
lpr //打印机
news //新闻系统
user //本地用户应用程序的信息
uucp //uucp子系统的信息,
local0-7 //本地类型信息

man syslog //查看帮助,里面有级别的说明
级别
0-7
0 emerg //基本要死机
1 alert //这个问题相当严重,比临界点更严重
2 crit //临界点,这个错误已经很严重了
3 err //重大错误信息
4 waining //警告
5 notice //注意:非错误的状态报告,但应特别处理;比info级别更需要注意
6 info //通报信息
7 debug //调试错误

none //带有该级别的类型长生的信息无需送出
.xxx:表示大于该级别的信息
.=xxx:表示等于该级别的信息
.!xxx:表示在该等级之外的等级信息

动作
/filename 日志文件,绝对路径指出文件名,将选项的日志信息保存在该文件。此文件必须事先建立
@host 远程主机;@符号后面可以是IP地址,也可以是域名或主机名
username,username 发送给指定的用户,该用户必须处于登陆状态。

  • 所有用户,用户必须处于登陆状态。

例:
1.保存在普通的文件或设备文件中
. /var/log/file.log //记录到普通文件
. /dev/pts/0 //记录到设备文件
2.转发给远程主机
. @192.168.0.1 //使用UDP协议转发到192.168.0.1的514(默认)端口
. @@192.168.1.1:10514 //使用TCP协议转发到192.168.1.1的10514(默认)端口
3.发送给用户(必须在线才能收到)
. root //发送给用户root
. root,student,redhat //发送给指定的多个用户
. //发送给所有用户
4.忽略,丢弃
local3.
~ //忽略所有local3类型的所有级别的日志
5.执行脚本
local3.* ^/tmp/shell.sh //“^”后面跟上可执行的脚本或程序的绝对路径

服务
rhel6
service rsyslog restart //重启服务
rhel7
systemctl restart rsyslog //重启服务

注意:如果日志配置文件进行了修改需要重启服务使其生效


logrotate //日志的轮询

/etc/logrotate.conf //轮询主配置文件
/etc/logrotate.d/*

vim /etc/logrotate.conf

日志文件{
规则
}

参数和选项
daily 每天轮询
weekly 每周轮询
monthly 每月轮询
rotate 保留几个带时间戳的文件
create 创建新文件(可以规定权限,拥有者,所属组)
dateext 旧文件以时间为结尾
size 指定大小

logrotate -vf /etc/logrotate.conf

总结
日志的作用
日志的主配置文件
日志的位置
日志的类型
日志的轮询作用
日志轮询的主配置文件


计划任务
一次性的计划任务
周期性的计划任务

一次性的计划任务
atd //一次性计划任务的服务

命令
at 时间 日期 //创建一次性计划任务
at>指令 //执行什么命令
at><EOT> //ctrl+d来提交该计划任务

at -l //查询一次性计划任务
at -d ID //删除某个一次性计划任务
at -c ID //查询某个计划任务的详细信息

生成计划任务后会生成一个文件
保存在/var/spool/at/目录下,删除里面的文件相当于删除计划任务

一次性计划任务的黑名单
vim /etc/at.deny
注意:一行一个用户名

周期性计划任务
vim /etc/crontab //周期性计划任务的配置文件

SHELL=/bin/bash //命令使用bash命令解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin //如果没有使用绝对路径命令从这几个目录中去搜索
MAILTO=root //如果周期性计划任务出现问题会发送mail给root

连续的时间使用 “-”
间断的时间使用 “,”
*/5 如果在分钟段位那么代表每隔5分钟

缓存目录/var/spool/cron/ 拥有和创建者同名的文件
root有权利给任何人创建周期性计划任务

crontab -e //编辑周期性计划任务
-l //查看
-u username //使用其他用户操作(root)
-r //清除所有的周期性计划任务

crontab -u student -e //为student用户编辑周期性计划任务

/etc/cron.deny //周期性计划任务的黑名单

练习:
每周一到周五早晨9点和下午13点,统计一下当前系统里有多少用户登陆着并将结果追加到/tmp/wc.txt
每隔两小时查看当前进程有几个,结果追加到/tmp/ps.txt


内核
内核的模块化

uname -a //查看当前所有的内核版本

内核模块
/lib/modules/2.6.32-431.el6.x86_64/kernel/ //模块的存放位置
模块文件一般是以“.ko”结尾

/lib/modules/2.6.32-431.el6.x86_64/modules.dep //记录了模块之间的依赖关系

depmod //更新模块依赖关系的命令

查看
lsmod //查看当前所加载的所有模块
modinfo //查看某个模块的详细信息

加载
insmod 模块的位置 //加载一个模块(无法解决依赖关系)

rmmod 模块名称 //卸载一个模块
-f //强制卸载,不管该模块是否正在被使用

modprobe //可以加载模块,自动解决依赖关系
-r //卸载模块,但和yum一样会把相应的依赖关系全部卸载,慎用!!!
-f //强制加载
-c //查看

内核参数
管理系统功能的开关

cat /proc/sys/net/ipv4/icmp_echo_ignore_all //该内核参数管理忽略所有的ping包

vim /etc/sysctl.conf //永久生效某个内核参数写在该配置文件中

sysctl -p //让内核参数立即生效

挂载

mount //查看挂载信息挂载
df -h //查看挂载信息
1.标准格式
mount -t 文件系统类型 挂载源 挂载点
-o //带选项的挂载
ro //只读
rw //读写
remount //重新挂载
loop //本地

2.非标准格式
mount 挂载源 挂载点

注意:挂载点最好为空目录
如果挂载点是非空目录,挂载完成后;目录原来的数据会消失(暂时不可用);当卸载时目录的原始数据才会恢复。
卸载时不要在卸载目录中

umount 挂载点 //卸载该挂载点

mount的应用
1.挂载大文件,变相的可以控制目录所使用的空间(磁盘配额)
1)创建大文件
2)格式化大文件 mkfs.ext4 文件名 //格式化某个文件
3)挂载

2.挂载镜像文件

3.挂载远程目录
mount IP地址:/content 挂载点

4.多级目录快速访问
mount --bind 旧的目录 新的目录
vim /etc/fstab //想永久生效挂载在该配置文件中写入信息

6个字段
1.挂载源
2.挂载点
3.文件系统类型
4.选项(如果是空选项使用“defaults”)
5.是否需要备份(0代表否 1代表是)
6.是否需要检测(0代表否 非0代表是并且有优先级,数字越小优先级越高)

mount -a //修改完成后使用此命令立即生效或者重启计算机


开机启动流程
1.硬件启动
MBR:主引导记录
bootloader引导程序:win ntblr ;rhel6 grub ;rhel7 grub2
DTP:分区表
55AA:校验

2.软件启动

runlevel 0 //是让init关闭所有的进程并终止系统(关机)
runlevel 1 //用来将系统转到单用户模式,用于对系统的紧急救援,单用户模式只有管理员(root)能进
runlevel 2 //允许使用多用户模式(不完整),不支持文件的共享等功能,一般很少用
runlevel 3 //真正的多用户模式(完整),是多数服务器的默认模式
runlevel 4 //一般不被系统使用,用户可以自己设计及自的系统状态并将其应用(自定义)
runlevel 5 //图形化界面,使用X windows终端
runlevel 6 //是让init关闭所有的进程并重启系统(重启)

rhel6
使用单用户模式更改root密码
grub---->"e"进行编辑----->选中kernel这项再按“e”来进行编辑----->在最后输入“ 1”(空格和1)
----“Enter”(回车)-----按“b”来进入单用户模式------输入“passwd”来修改密码-----exit

vim /boot/grub/grub.conf
default=0 //默认的grub菜单
timeout=30 //默认时间30后自动进入系统
splashimage=(hd0,0)/grub/splash.xpm.gz //grub菜单的背景图片
hiddenmenu //默认不显示grub菜单
password --md5 $1$UwQm4/$8h/VGdOXDLf3NuvoOAOS40 //在说明信息上方的password,对grub菜单进行加密
title windows 7 //说明信息
password --md5 $1$ogRm4/$5dQmC.gvXAzmvKhiGsgwl/ //在说明信息下方的password,进入系统时需要密码
root (hd0,0) //将boot成为根(/)
kernel /vmlinuz-2.6.32-431.el6.x86_64 //加载kernel,驱动,硬盘分区,语言格式编码等
initrd /initramfs-2.6.32-431.el6.x86_64.img //启用虚拟文件系统

grub-md5-crypt //用于生成加密密码的命令

rhel6

chkconfig 服务名 on/off //设定服务是否开机启动
chkconfig --list //查看服务是否开机启动的状态
chkconfig --level 35 sshd off //在启动等级3和5的时候不启动sshd


rhel7
1.stage1和stage2文件名称有所变化
stage1变成/boot/grub2/i386-pc/boot.img
stage2变成/boot/grub2/i386-pc/core.img

2.grub2版本的grub.cfg配置文件中的分区命名方式有所改变
(hd0,0)改成‘hd0,msdos1‘

3.改变了引导菜单外观主配置文件的位置
/etc/default/grub

4.可以通过命令 grub2-mkconfig -o /boot/grub2/grub.cfg 来重新生成配置文件或更新配置文件

  1. init变成systemd

6./etc/inittab 变成的说明文件

启动级别
systemctl get-default //查看默认的启动级别
systemctl set-default 启动级别的名字 //设置启动级别
例:systemctl set-default multi-user.target //设置启动级别为3等级

启动等级相应的配置文件/lib/systemd/system/<target name>.target

vim /usr/lib/systemd/system/multi-user.target //查看3级别的配置文件
AllowIsolate=yes //该级别是否可以被临时切换,修改完成后重启生效

启动服务
该服务是否开机启动,分到了各个服务中
systemctl status sshd //查看sshd服务的状态
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled) //代表是否开机启动disabled代表关闭enable代表开启
Active: active (running) since Wed 2016-12-07 21:24:35 EST; 5h 3min ago //当前服务的运行状态

设置开机启动的服务
systemctl enable 服务名 //设置开机启动
systemctl disabled 服务名 //设置开机不启动

systemctl isolate rescue.target //临时切换到救援模式,rescue.target救援模式的名称

rhel7修改密码
第一种方式
1.找到linux16开始的那一行,从后面开始删除,删除到第一个root,在最后追加rd.break,然后按Ctrl-x重启即可进入单人模式
2.mount -o remount,rw /sysroot
3.chroot /sysroot
4.passwd
5.touch /.autorelabel
6.exit
7.exit

第二种方式
1.找到linux16开始的那一行,在这一行中找到ro 并将ro更改为 “rw init=/sysroot/bin/sh",然后按Ctrl-x重启即可进入单人模式
2.chroot /sysroot
3.passwd
4.touch /.autorelabel
5.Ctrl+Alt+del

rhel7给grub2菜单进行加密

vim /etc/grub.d/40_custom
set superusers=‘root‘
password root 123
配置完成后
grub2-mkconfig -o /boot/grub2/grub.cfg //更新一下主配置文件
以上就是明文加密,用户名可以是任意的(可以是系统没有的用户)

密文加密
grub2-mkpasswd-pbkdf2 //生成加密密码,注意取加密密码是取is后面的
vim /etc/grub.d/40_custom
set superusers=‘root‘
password_pbkdf2 root grub.pbkdf2.sha512.10000.0862D41B5F0BBF76090C2BDB710
配置完成后
grub2-mkconfig -o /boot/grub2/grub.cfg //更新一下主配置文件


selinux

selinux属于一种权限

/etc/selinux/config

getenforce //查看selinux的状态

setenforce 1或0 //设置selinux的状态

selinux限制两个方面
1.布尔值
2.安全上下文

1.布尔值
getsebool -a //查看当前所有限制方面的布尔值
setsebool -P 布尔值名 on或off //调整布尔值
例:setsebool -P samba_share_nfs on //调整布尔值

2.安全上下文
主体(进程)和目标的安全上下文必须一致才能够顺利访问

查看安全上下文
ls -Z
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

system_u:object_r:admin_home_t //安全上下文
身份标示 : 角色: 类型

ps -efZ | grep httpd //查看主题安全上下文
unconfined_u:system_r:httpd_t:s0 apache 1951 1944 0 10:35 ? 00:00:00 /usr/sbin/httpd

修改安全上下文
1.chcon -t 安全上下文的类型 文件
例:chcon -t httpd_t /var/www/html/index.html

2.restorecon 文件或目录 //同步安全上下文
-R //递归修改
-v //显示过程

selinux日志分析工具
yum install -y setroubleshoot-server //如果没有下面的命令,安全此软件包

sealert -a /var/log/audit/audit.log //使用selinux日志分析工具来分析日志,会把解决方案分析出来

以上是关于linux 基础知识的主要内容,如果未能解决你的问题,请参考以下文章

linux学习之八---Linux进程基础知识

编程基础 linux基础入门--linux为何物?

Linux基础知识--命令的基础知识

Linux基础知识

2017-10-10Linux基础知识基础命令

linux基础知识的总结