Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。
Linux,Linux Is Not UniX 的递归缩写,一般指GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个遵循POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。
Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,甚至当作网络防火墙,这是Linux的一大亮点。
Linux具有开放源码、没有版权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。
Linux操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:Unix操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。
20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和MacOS这几种。Unix价格昂贵,不能运行于PC;DOS显得简陋,且源代码被软件厂商严格保密;MacOS是一种专门用于苹果计算机的操作系统。
此时,计算机科学领域迫切需要一个更加完善、强大、廉价和完全开放的操作系统。由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的美国人AndrewS.Tanenbaum编写了一个操作系统,名为MINIX,为了向学生讲述操作系统内部工作原理。
MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。全世界学计算机的学生都通过钻研MINIX源代码来了解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个。在吸收了MINIX精华的基础上,Linus于1991年写出了属于自己的Linux操作系统,版本为Linux0.01,是Linux时代开始的标志。他利用Unix的核心,去除繁杂的核心程序,改写成适用于一般计算机的x86系统,并放在网络上供大家下载,1994年推出完整的核心Version1.0。至此,Linux逐渐成为功能完善、稳定的操作系统,并被广泛使用。
2021年6月,根据Linux 5.14刚刚进入合并队列的char-misc-next提交,Linux 5.14正式移除了RAW驱动。
2022年6月,基于 Ubuntu 22.04 的 Linux Lite 6.0 正式版发布,提供最新的浏览器,最新的办公套件,最新的定制软件,代号“Fluorite”。
2022年11月6日消息,微软将为 Linux 带来嵌套式虚拟化支持,可运行多个 Windows。
2022年11 月,微软在 GitHub 上线了 WSL 1.0.0 版本,宣布 Windows 11/10 的 Linux 子系统删除 Preview 标签,迎来正式版。
2022年11月,在本周的 platform-drivers-x86 提交合并中,Linux 6.1 新增支持了微软 Surface Pro 9 和 Surface Laptop 5 两款设备。
2022年12月12日,Linus Torvalds 抢在圣诞假期之前发布了最新的 Linux 6.1 内核稳定版,从此开启了 Linux 6.2 合并窗口。截止到2023年初大家可以在内核官网找到相应的文件。
2022年12月14日,Linux 6.2 合并窗口扩展了对 Arm SoC 的支持并更新了 DeviceTree。本次更新在内核中新增了对 7 款高通骁龙处理器的支持,还在 Mainline 中初步支持苹果的 M1 Pro / M1 Ultra / M1 Max 型号处理器。
2022年12月15日,Linux 6.2 合并窗口期内已经确认将会合并大量网络子系统更新。和以往版本相同,Linux 6.2 内核更新周期在网络功能上有大量的改进,更多的细节可以访问这条 pull。
2022年12月 28 日消息,在 Linux 6.2 合并窗口期,英特尔工程师提交的线性地址掩码(Linear Address Masking,简称 LAM)提案遭到了 Linus Torvalds 的拒绝。英特尔工程师2023年初再次提交第 13 个版本,希望在 Linux 6.3 或者更高版本中合并该功能。
2023年1月9日消息,Linus Torvalds 推出了 Linux Kernel 6.2 的第 3 个候选版本更新。
2023年3月27日消息,Linus Torvalds 发布了 Linux Kernel 6.3 的第 4 个维护版本更新,这意味着 6.3 的开发周期已经走过了一半路程。
2023年5月3日,IT之家消息:Uri Herrera于4月底发布了 Nitrux 2.8 系统,这是基于 Debian 和 systemd-free 的 GNU / Linux 发行版,重点是 KDE 软件和 Plasma 桌面。
2023年5月29日,MX Linux 开发人员宣布,MX Linux 23“Libretto”版本 Beta 版公开测试已全面推出。
2023年6月26日,Linux 6.4 内核已正式发布,这次更新带来了许多改进,比如对苹果 M2 芯片的初步支持、存储性能的提升、传感器监控的改善,以及更多的 Rust 代码。
2024年2月3日消息,开源社区“Linux 中国”官方公众号发文宣布,该社区主网、公众号、视频号及下属的《硬核观察》栏目将无限期停止更新、运营。
2024年5月,Linux 6.9 内核的首个正式版发布,6.10 版本合并窗口开启。
2024年8月15日,深度社区正式对外发布开源操作系统deepin 23,deepin 23搭载Linux 6.6 LTS内核,从仓库到应用层,针对操作系统核心组件,采用了自研方案;8月,deepin 23的 WPS Office For Linux 个人版上线deepin应用商店。
Linux的基本思想有两点:第一,一切都是文件;第二,每个文件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
Linux是一款免费(或自由,即free)的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现代电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
Linux由众多微内核组成,其源代码完全开源。
Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈。
Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性。
系统内核的路由转发
Linux操作系统嵌入了TCP/IP协议栈,协议软件具有路由转发功能。路由转发依赖作为路由器的主机中安装多块网卡,当某一块网卡接收到数据包后,系统内核会根据数据包的目的IP地址,查询路由表,然后根据查询结果将数据包发送到另外一块网卡,最后通过此网卡把数据包发送出去。此主机的处理过程就是路由器完成的核心功能。
通过修改Linux系统内核参数ip_forward的方式实现路由功能,系统使用sysctl命令配置与显示在/proc/sys目录中的内核参数。首先在命令行输入:cat /proc/sys/net/ipv4/ip_forwad,检查Linux内核是不是开启IP转发功能。如果结果为1,表明路由转发功能已经开启;如果结果为0,表明没有开启。出于安全考虑,Linux内核默认是禁止数据包路由转发的。在linux系统中,有临时和永久两种方法启用转发功能。
临时启用:此种方法只对当前会话起作用,系统重启后不再启用。临时开启的命令格式:sysctl–wnet.ipv4.ip_forward=1。
永久启用:此种永久性的启用IP转发功能,通过更改配置文件/etc/sysctl.conf中的语句行“net.ipv4.ip_forward=0”,修改为“net.ipv4.ip_forward=1”,保存配置文件后执行命令sysctl–p/etc/sysctl.conf,配置便立即启用。
Linux已经成为工作、娱乐和个人生活等多个领域的支柱,人们已经越来越离不开它。在Linux的帮助下,技术的变革速度超出了人们的想象,Linux开发的速度也以指数规模增长。因此,越来越多的开发者也不断地加入开源和学习Linux开发的潮流当中。在这个过程之中,合适的工具是必不可少的,可喜的是,随着Linux的发展,大量适用于Linux的开发工具也不断成熟。
容器
放眼现实,如今已经是容器的时代了。容器既极其容易部署,又可以方便地构建开发环境。如果针对的是特定的平台的开发,将开发流程所需要的各种工具都创建到容器映像中是一种很好的方法,只要使用这一个容器映像,就能够快速启动大量运行所需服务的实例。
版本控制工具
如果正在开发一个大型项目,又或者参与团队开发,版本控制工具是必不可少的,它可以用于记录代码变更、提交代码以及合并代码。如果没有这样的工具,项目几乎无法妥善管理。
文本编辑器
如果没有文本编辑器,在Linux上开发将会变得异常艰难。当然,文本编辑器之间孰优孰劣,具体还是要取决于开发者的需求。
集成开发环境
集成开发环境(Integrated Development Environment,IDE) 是包含一整套全面的工具、可以实现一站式功能的开发环境。
文本比较工具
有时候会需要比较两个文件的内容来找到它们之间的不同之处,它们可能是同一文件的两个不同副本(例如有一个经过编译,而另一个没有)。这种情况下,肯定不想要凭借肉眼来找出差异,而是想要使用像Med这样的工具。
对Linux进行适当的修改和删减,并且能够在嵌入式系统上使用的系统,就是嵌入式Linux操作系统。具有如下的特点:
Linux系统是完全开放、免费的。正是开放性,它才能和其他系统互相兼容,进而实现信息的互联。而且它可以任意修改源代码,这是其他系统所不具备的。
Linux操作系统的显著优势是多用户和多任务。保证了多个用户使用互不影响;多任务独立开后,互不干扰,使得效率方面大大提高,可以充分把性能发挥出来。
设备是独立的。只要安装驱动程序,在驱动程序的支持和帮助下,任何用户都可以像使用文件一样,对任意设备进行使用和操作,这使得人们完全不用考虑设备存在的具体形式。
Linux服务器是设计出来进行业务处理应用的,在网络和计算机系统当中有广泛的应用,可以提供数据库管理和网络服务等内容,是一种性能非常高的和开源的服务器,在中国的计算机系统的客户端当中,有很多采用的就是Linux系统,其使用的范围非常广泛,用户体验反应较好。但是对于一些希望计算机应用性能比较高的单位而言,windows系统需要经常进行资源整合和碎片化管理,系统在配置的时候经常需要重新启动,这就无法避免产生停机的问题。同时,由于Linux系统的处理能力非常强悍,具备不可比拟的稳定性特征,因而Linux系统就不用经常进行重启,Linux系统的变化可以在配置的过程中实现,所以Linux服务器出现故障的概率比较小,所以很多企业组织在计算机配置的过程中经常使用Linux系统,从而降低服务器发生崩溃的可能性,很多企业在配置Linux系统的时候,都是通过减少服务器的故障发生率,实现企业业务的高效运转。
内核开发者采用的是一种松散的基于时间的发布流程,每次发行都严格遵循关于合并补丁的规则。在每个开发周期的开始,称之为“合并窗口”打开。此时,被视为足够稳定且被开发社区接受的代码会被合并进主线内核。新开发周期的大部分改动(以及所有主要的改动)都将在此期间并入,在高峰期,这个速度接近每天1000项改动(“补丁”或“变更集”)。
合并窗口大约持续两周时间。在此期间结束后,Linus Torvalds会宣布窗口关闭,并发布第一个“rc”内核。例如,预定为5.6的内核,结束合并窗口后的版本发布将被称为5.6-rc1. 这个-rc1版本的发布标记着新特性的合并时间已经过去,下个内核的稳定阶段已经开始。
在接下来的六至十周内,主要提交给主线的补丁应该是修复问题的补丁。偶尔会允许进入一些更重大的改动,但这种情况极为罕见;那些尝试在合并窗口之外合并新特性的开发者通常会受到不友好的接待。一般规则是,如果错过了某个特性的合并窗口,最好的办法是等待下个开发周期。(硬件驱动的情况有时是一个例外,对于没有得到支持的硬件驱动,如果它们没有接触到任何tree内的代码,那么它们就不可能引起回归,应该在任何时候都安全添加。)
有且只有一个人能将补丁合并到主线内核库:Linus Torvalds 。但以2.6.38内核为例,超过9500的补丁只有112个(约占1.3%)是由Linus自己直接选择的。内核项目早已发展到一个规模,在这个规模下没有任何单个开发者可能完全自主地审核和选择每一个补丁。内核开发者处理这种生长的方式是通过建立基于信任链的中尉系统。
内核代码库按照逻辑被分解成一系列的子系统:网络、具体的架构支持、内存管理、视频设备等等。每个子系统都有一个指定的维护者,这个开发者负责该子系统内的所有代码。这些子系统的维护者在某种程度上可以看做是他们管理的内核部分的守门人;他们是将会(通常)接受一个补丁并将其包含到主线内核的人。
子系统维护者各自管理着他们的内核源代码树,大多数情况(但肯定不是总是)使用git源代码管理工具。像git这样的工具(以及其他相关的工具,如quilt或mercurial)允许维护者跟踪一系列的补丁,包括作者信息和其他元数据。在任何特定时间,维护者可以识别出在他或她的仓库中未被找到在主线中的哪些补丁。
当合并窗口打开时,顶层维护者会要求Linus从他们的仓库中“拉取”他们为合并选择的补丁。如果Linus同意,这些补丁将流入他的仓库,成为主线内核的一部分。Linus对于在拉取操作中接收到的特定补丁给予多大的注意力是不定的。很明显,有时候,他会仔细查看。但一般来说,Linus相信子系统维护者不会发送不好的补丁。
反过来,子系统维护者可以从其他维护者那里拉取补丁。例如,网络树是从专门用于网络设备驱动,无线网络等树中累积的补丁构建的。这个仓库链可以任意长,尽管它很少超过两到三个环节。由于链中的每个维护者信任那些管理更低等级树的人,所以这个过程被称为“信任链”。
显然,在这样的系统中,将补丁合并到内核取决于找到正确的维护者。直接向Linus发送补丁通常并不是正确的做法。
常用命令及技巧
1、date:打印或者设置系统的日期和时间
2、stty-a:可以查看或者打印控制字符(Ctrl-C、Ctrl-D、Ctrl-Z等)
3、passwd:用passwd-h查看
4、login、 logout : shell的登录和注销命令
5、more,less,head tail:显示或部分显示文件内容
6、lp/lpstat/cancel,lpr/lpq/lprm:打印文件
7、chmod u+x:更改文件权限
8、rm -fr dir:删除非空目录
9、cp -R dir:拷贝目录
10、fg jobid:可以将一个后台进程放到前台
11、kill的作用:send a signal to a process、eg:kill-9发送的是SIG_KILL信号,具体发送什么信号可以通过man kill查看
12、ps的用法,ps-e或ps-o pid,ppid,session,tpgid,comm(其中session显示的sessionid,tpgid显示前台进程组id,comm显示命令名称)
13、ip a 查看ip地址信息的命令
14、zcat /proc/config.gz > config 到内核配置文件
用户账户以及登录安全
删除多余用户和用户组。Linux是多用户操作系统,存在很多种不一样的角色系统账号,当安装完成操作系统之后,系统会默认为未添加许用户组及用户,若是部分用户或是用户组不需要,应当立即删除它们,否则黑客很有可能利用这些账号,对服务器实施攻击。具体保留哪些账号,可以依据服务器的用途来决定。
关闭不需要的系统服务。操作系统安装完成之后,其会在安装的过程当中,会自主的启动各种类型的服务程序内容,对于长时间运行的服务器而言,其运行的服务程序越多,则系统的安全性就越低。所以,用户或是用户组就需要将一些应用不到的服务程序进行关闭,这对提升系统的安全性能,有着极大的帮助。
密码安全策略。在Linux之下,远程的登录系统具备两种认证的形式:即密钥与密码认证。其中,密钥认证的形式,主要是将公钥储存在远程的服务器之上,私钥存储在本地。当进行系统登录的时候,再通过本地的私钥,以及远程的服务器公钥,进行配对认证的操作,若是认证的匹配度一致,则用户便能够畅通无阻的登录系统。此类认证的方式,并不会受到暴力破解的威胁。与此同时,只需要确保本地私钥的安全,使其不会被黑客所盗取即可,攻击者便不能够通过此类认证方式登录到系统中。所以,推荐使用密钥方式进行系统登录。
有效应用su、sudo命令。su命令的作用的是对用户进行切换。当管理员登录到系统之后,使用su命令切换到超级用户角色来执行一些需要超级权限的命令。但是由于超级用户的权限过大,同时,需要管理人员知道超级用户密码,因此su命令具有很严重的管理风险。
sudo命令允许系统赋予普通用户一些超级权限,并且不需普通用户切换到超级用户。因此,在管理上应当细化权限分配机制,使用sudo命令为每一位管理员服务其特定的管理权限。
远程登录应用SSH登录方式。telnet是一类存在安全隐患的登录认证服务,其在网络之上利用明文传输内容,黑客很容易通过截获telnet数据包,获得用户的登录口令。并且telnet服务程序的安全验证方式存在较大的安全隐患,使其成为黑客攻击的目标。SSH服务则会将数据进行加密传输,能够防止DNS欺骗以及IP欺骗,并且传输的数据是经过压缩,在一定程度上保证了服务器远程连接的安全。
加固系统重要文件。在Linux系统中,如果黑客取得超级权限,那么他在操作系统里面就不会再有任何的限制地做任何事情。在这种情况下,一个加固的文件系统将会是保护系统安全的最后一道防线。管理员可通过chattr命令锁定系统一些重要文件或目录。
文件权限检查与修改。如果操作系统当中的重要文件的权限设置不合理,则会对操作系统的安全性,产生最为直接的影响。所以,系统的运行维护人员需要及时的察觉到权限配置不合理的文件和目录,并及时修正,以防安全事件发生。
安全设定/tmp、/var/tmp、/dev/shm。在该操作系统当中,其用于存放临时文件的目录,主要有两个,分别为/tmp与/var/tmp。它们有个共同特点,就是所有的用户可读可写和执行,这样就对系统产生了安全隐患。针对这两个目录进行设置,不允许这两个目录下执行应用程序。
绝大多数的服务器遭受攻击是因为系统软件或者应用程序有重大漏洞。黑客通过这些漏洞,可以轻松地侵入服务器。管理员应定期检查并修复漏洞。最常见的做法是升级软件,将软件保持在最新版本状态。这样就可以在一定程度上降低系统被入侵的可能性。