linux 教程 日志系统
日志数据可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。它可以记录下系统产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。收集你想要的数据,分析出有价值的信息,可以提高系统、产品的安全性,还可以帮助开发完善代码,优化产品。日志会成为在事故发生后查明“发生了什么”的一个很好的“取证”信息来源。日志可以为审计进行审计跟踪。
常见的日志
日志是一个系统管理员,一个运维人员,甚至是开发人员不可或缺的东西,系统用久了偶尔也会出现一些错误,我们需要日志来给系统排错,在一些网络应用服务不能正常工作的时候,我们需要用日志来做问题定位,日志还是过往时间的记录本,我们可以通过它知道我们是否被不明用户登录过等等。
在 Linux 中大部分的发行版都内置使用 syslog 系统日志,那么通过前期的课程我们了解到常见的日志一般存放在 /var/log
中,我们来看看其中有哪些日志
根据图中所显示的日志,我们可以根据服务对象粗略的将日志分为两类
- 系统日志
- 应用日志
系统日志主要是存放系统内置程序或系统内核之类的日志信息如 alternatives.log
、btmp
等等,应用日志主要是我们装的第三方应用所产生的日志如 tomcat7
、apache2
等等。
接下来我们来看看常见的系统日志有哪些,他们都记录了怎样的信息
linux 教程 用户和权限
用户身份与能力
Linux 系统的管理员之所以是 root,并不是因为它的名字叫 root,而是因为该用户的身份号码即 UID(User IDentification)的数值为 0。
管理员 UID 为 0:系统的管理员用户。
系统用户 UID 为 1~999:Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会由独立的系统用户负责运行,进而有效控制被破坏范围。
普通用户 UID 从 1000 开始:是由管理员创建的用于日常工作的用户。
需要注意的是,UID 是不能冲突的,而且管理员创建的普通用户的 UID 默认是从 1000 开始的(即使前面有闲置的号码)。
为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用户组号码(GID,Group IDentification),可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。假设一个公司中有多个部门,每个部门中又有很多员工,如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设置权限。例如,通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的数据库信息等。
另外,在 Linux 系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。
1. id 命令
id 命令用于显示用户的详细信息,语法格式为 “id 用户名”。
这个 id 命令是一个在创建用户前需要仔细学习的命令,它能够简单轻松地查看用户的基本信息,例如用户 ID、基本组与扩展组 GID。
1 | ~$ id linuxprobe |
linux 教程 获取帮助
内建命令与外部命令之分
help , man , info 命令的使用以及区别
内建命令与外部命令
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在 bash 源码的 builtins 里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在 /bin,/usr/bin,/sbin,/usr/sbin 等等。比如:ls、vi 等。
1 | # 得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的 .def 中 |
help 命令
因为 help 命令是用于显示 shell 内建命令的简要帮助信息。帮助信息中显示有该命令的简要说明以及一些参数的使用以及说明,一定记住 help 命令只能用于显示内建命令的帮助信息,不然就会得到你刚刚得到的结果。
那如果是外部命令怎么办,不能就这么抛弃它呀。其实外部命令基本上都有一个参数–help,这样就可以得到相应的帮助,看到你想要的东西了。试试下面这个命令是不是能看到你想要的东西了。
linux 教程 防火墙
iptables
在 RHEL7 之前的版本中关闭防火墙等服务的命令是
1 | service iptables stop |
/etc/init.d/iptables stop
firewalld
redhat7 之后使用了 firewalld 代替了原来的 iptables。
查看防火墙状态:systemctl status firewalld
- 如果防火墙的状态参数是 inactive,则防火墙为关闭状态。
- 如果防火墙的状态参数是 active,则防火墙为开启状态。本示例中防火墙为开启状态,因此需要关闭防火墙。
启动防火墙:systemctl start firewalld
关闭防火墙。如果防火墙为关闭状态可以忽略此步骤。
- 如果您想临时关闭防火墙,运行命令
systemctl stop firewalld
。
说明 这只是暂时关闭防火墙,下次重启 Linux 后,防火墙还会开启。
- 如果您想永久关闭防火墙,运行命令
systemctl disable firewalld
。