RH124内容不是很多但是也不知道多少能够写完细节性的东西不会太多但是确保每个都能够有印象能理解。本来是打算一篇文章写完的但最后还是决定写一个系列。至于RH124和RH134的内容为什么放在了k8s系列的后面那只是单纯因为这一段时间正在学k8s。争取这两天将RH124和RH134内容写完至于k8s系列要放到后面更了。Part1redhat linux基础介绍RHEL指的就是红帽企业版linux虽然要付费但是有平替。比如rocky我们使用的就是rocky linux也很好用。当然大家或许用过centOS 7我也用过这个不过已经不再维护了。虽然有centos stream但主要是作为redhat linux的上游版本至于fedora则是centos stream的上游了。终端这一部分我主要讲一讲终端终端指的是输入输出设备有物理终端、虚拟终端和伪终端。物理终端如串口虚拟终端则是本地虚拟控制台有tty1~6而伪终端则是通过ssh登录的终端使用pts来标记。同一个终端可以运行不同的shellshell是解释命令用的终端可以使用bash也可以使用sh。文件目录这部分主要讲讲linux的文件树结构每个目录有着对应的作用。以下目录都是在根目录/下/var目录用来保存易变的数据/run则是保存开机后进程运行的数据/proc则是保存进程状态信息/mnt给超级用户挂载使用/boot目录存放引导程序/dev目录存放设备文件/etc则是存放配置文件。还有/usr/bin、/usr/sbin、/usr/lib、/usr/local等目录分别存放用户命令超级用户命令库文件本地自定义软件等。软硬链接硬链接不允许跨文件系统不允许链接目录并且指向的是同一个inode删除其中一个另一个都有效。软链接则可以跨文件系统可以链接目录实质上保存的是链接的路径属于独立的文件和原文件有不同的inode。如果删除原文件该软链接会悬空。命令格式为ln 现有文件 链接文件-s创建的是软链接注意可以通过ls -i查看文件的inode。重定向和符号默认是从标准输出中获取数据也就是文件描述符为1的通道。是覆盖是追加。可以结合cat 来使用比如使用cat file EOF来覆盖file文件。至于EOF还可以用EOF和EOF区别在于引号的作用不同单引号阻止所有的shell扩展但是双引号保留命令替换和变量扩展。文件描述符2是标准错误如果使用表示将标准输出和标准错误一同重定向。tee则是和管道符|结合起来时候用用来分流将输入分流到标准输出stdout和文件或者命令中使用tee默认是覆盖使用-a选项则是追加。重定向符不能连接命令但是管道符可以。/dev/null是一种特殊设备表示“黑洞”。Part2管理用户和组首先讲讲用户和组是用来做什么的linux是多用户多任务的系统允许每个用户去执行自己的任务通过划分不同的用户并赋予不同的权限让linux系统能够高效的运行完成各种任务。组的话是为了方便用户的管理通过将一类用户划分到同一个组主要是方便组内用户的合作。并且这和权限管理有关每个组有着不同的权限这样能够更轻松地去管理组而不是用户。用户管理主要是讲一讲useradd命令通过-m说明需要创建家目录-d可以指定家目录路径-u指定UID-g指定主组默认和用户名同名组-G指定附加组。userdel则是删除用户-r会一并删除家目录。还有usermod命令可以让用户锁定之类的或者修改密码过期时间等等。组的内容也放在这里讲讲通过groupadd来增加组使用-u则是指定GIDgroupdel则是删除。配置sudo权限这个是需要关心的毕竟权限不足而被拒绝是很难受的事尤其是自己就是系统的主用户但是没有权限。可以在配置文件/etc/sudoers中编写格式为user/group ALL(ALL:ALL) ALL如果是组需要在开头写%第一个ALL表示在所有的主机上第二个ALL表示任何其他用户第三个ALL表示任何其他组第四个ALL表示任何命令。第二个和第三个ALL可缩写为一个表示该用户或者组用户可以在系统的任何其他用户或者任何其他组上运行任何命令。如果有sudo组就很好办了可以将用户添加到这个sudo组中这样就可以获取sudo权限了。值得注意的是除了在/etc/sudoers文件中还可以在/etc/sudoers.d目录下添加这样的文件。su、su -、sudo、ssh的区别su是用来切换用户的su -也是用来切换用户的只不过前者保留当前的环境后者加载目标的环境。但是这里我自己迷惑了因为su本来是不会加载目标环境的但是我发现有的环境变量已经改变了貌似加载了.bashrc文件。sudo同样可以切换用户。使用sudo -i切换root会加载root的完整的环境变量。ssh是用来远程登录用户的会新建登录会话并且最重要的是会加载用户的系统服务保存在~/.config/systemd/user目录下面其他的都不会。Part3控制对文件的访问主要是文件的所有组所有者以及所属权限等内容有些细节还是需要注意的特别是特殊权限的作用。文件系统权限主要是所属者权限所属组权限和其他用户权限。有意思的是如果给文件权限设置为007则其他用户有所有的权限但是所属者却连访问的权限都没有了。不过除了root用户就只有所属者能够修改文件权限了可以使用chmod命令修改所属组用户能够偶修改组权限。注意如果有r权限则是可读文件或目录如果是x权限对于目录来说则是可以cd进去对于文件则是可执行如果是w权限意味着文件可写对于目录来说需要组合x权限这样就对目录下的文件可以新增和删除任意文件即使文件不属于自己。但是所属者并不能修改文件的所有权也就是我创建了这个文件我不能转让给其他人只有root用户能够修改文件的所属者使用chown命令。无论是chmod还是chown都可以用-R来递归的修改文件权限和文件所属。特殊权限上面只提到了rwx但是还有一组特殊权限。通过wx权限的组合可以在目录下删除任意文件即使文件不属于自己这样的权限可以加以约束。如果给目录添加ot权限对文件无效则是只有所属用户才能删除该目录下的文件阻止了对该目录具有wx权限用户的删除。如果给目录添加gs权限对文件来说则是以文件的所属组身份执行文件这样用户在该目录下创建的任何文件的所属组都是该目录的所属组。如果给文件添加us权限对目录无效则是在执行文件的时候以文件的所属用户的身份执行与给文件添加gs权限有类似的效果。Part4监控和管理Linux进程进程的管理还是很重要的比如说某个进程占用了哪个端口不释放这时候就需要杀死它来释放。这个操作还是比较常用的或者某些后台任务不想让它运行了也需要借助kill来杀死后台进程。进程状态和生命周期R表示正在运行中S表示正在睡眠中一般是等待某一条件如硬件请求T表示进程已经被停止Z则表示僵停该状态表示除了PID之外的资源都差不多释放了。一般是通过ps aux和ps -ef来查看进程状态后者包含PPID也就是父进程的PID但是前者包括了cpu占用率、内存占用率所以除非需要查看PPID否则直接使用ps aux。其实还有SID指的是会话首进程ID那肯定就是与终端交互的shell如bash、sh进程了控制作业和杀死进程如果使用命令后面加符号表示后台进程任务会在后台执行。使用jobs可以查看当前shell会话的后台进程列表使用fg %n可以将列表中编号为n的放到前台执行。至于相对的使用bg %n则可以将编号为n的放在后台执行。如果在前台执行使用ctrlc可以优雅终止使用ctrlz则是将进程暂停并放到后台。为什么说ctrlc是优雅终止呢这就要说到如何杀死进程了。主要有这几个信号-2SIGINT允许进程优雅关闭即允许保存状态和清理文件ctrlc使用的就是这种方式。-9SIGKILL强制终止-15SIGTERM同样允许进程自己清理再终止。kill的默认信号就是-15当然pkill也是。说到这就需要再讲一讲kill和pkill的区别了。kill只能通过进程PID来杀死进程而pkill则可以通过名称来杀死进程并且支持模糊匹配默认能够将包含名称的进程都杀死除非是用-x表示精确匹配当然了pkill也支持使用PID。监控进程活动最后的话那肯定是要讲一讲top命令了。用于实时监控系统进程的运行状态里面还有一些值需要注意比如说cpu负载平均值这和cpu数量有关。使用lscpu可以查看当前系统的cpu数量然后负载平均值就是进程数除以cpu数。使用q可以退出top命令界面当然也可以借助top来杀死进程以及分别按cpu占用率、内存占用率来给系统进程排序。不过具体的使用方法内容有点多我就不概述了。Part5控制服务和守护进程讲到守护进程就不得不提一下systemd进程了这是PID为1的进程也是系统运行的第一个进程可以以唤醒其他守护进程并加载配置文件会做一些系统初始化的任务。所有的守护进程吗名称都是以d结尾的并都在后台运行守护进程会加载自己的配置文件来运行。但是并不是所有的服务单元都是守护进程。系统服务单元服务单元有这么一些概念当使用systemctl list-units --typeservice的时候会显示UNIT、LOAD、ACTIVE、SUB等字段。UNIT表示的是服务的名字而LOAD则表示守护进程是否正确解析了服务单元的配置并将服务单元加载到内存中。ACTIVE则是表示该服务是否激活成功即使加载到内存也有可能失败而SUB则是表示服务的具体状态如running运行、exited退出等。我们通过systemctl start service来启动服务可以通过systemctl status service来查看服务的状态包括load以及active的状态信息。使用systemctl mask service可以屏蔽服务不让其运行即使手动开启也禁止除非unmask。然后就是服务之间有依赖关系可以通过systemctl list-dependencies service来查看。服务单元文件最需要注意的就是.service文件这里有两个目录一个是系统默认服务配置文件的目录/usr/lib/systemd/system这个目录我们一般不做修改。还有一个是自定义系统服务的配置文件目录/etc/systemd/system这个目录的优先级比前面的高会覆盖。所以我们一般修改/etc/systemd/system目录下的配置文件也就是.service文件里面包括服务的启动暂停以及重载命令分别需要配置ExecStart、ExecReload、ExecStop。注意systemclt reload则是针对服务单元本身的如修改了服务的配置文件而且必须是在service文件中定义了ExecReload指令否则无效。而systemctl daemon-reload则是加载整个系统服务的如新增了系统服务或者修改了.service文件。当然服务单元文件还有.socket文件用来给服务进程和本地的客户端进程之间的通信效率会比较高因为不会经过网卡和防火墙数据也不加密。.timer文件也是一种系统单元文件定义何时触发对应的 .service文件执行任务两者命名需要一致。写到这RH124的内容已经过半了虽然内容不多但是还是不太好写。因为简单的命令不想写至于理解上也没什么难度不过还是要保证整体内容的都要讲到。这篇文章就把RH124剩下的内容都完结吧主要还剩下配置和保护SSH、管理网络、安装和更新软件包以及访问Linux系统文件。管理网络要使用nmcli工具至于安装和更新软件包则使用的dnf包管理器访问linux文件系统则是要学习mount挂载。内容也很重要因为rhcsa认证考试会考。Part6配置和保护SSH这里先讲一讲ssh和ssl的区别。ssh是secure shell的缩写而ssl则是secure sockets layer的缩写一个工作在应用层一个工作在传输加密层。ssh通过比对服务器公钥的md5值来验证而ssl则是通过ca证书来验证对方。[1]ssh配置文件家目录下会有一个.ssh目录下面放着known_hosts和config文件前者用于存放已经远程登录的主机信息下次不用比对md5值后者用于远程登录的预设参数。当然了还有公私钥文件id_rsa和id_rsa.pub文件以及作为服务端允许远程登录的authorized_keys这个文件存放允许登录的主机信息。其实在/etc/ssh目录下也存放着ssh_known_hosts和sshd_config文件以及ssh_config文件sshd_config表示服务端配置文件ssh_config则表示客户端配置文件系统全局配置会被覆盖。[2]允许root远程登录接下来主要是设置root是否允许远程登录还有root是否允许密码登录通过/etc/ssh/sshd_config文件来配置。分别修改的是/etc/sshd_config文件服务端中的PermitRootLogin还有PasswordAuthentication字段。分别将这两个字段设置为yes即可不过还有补充的是可以通过ssh-keygen生成本地的公私钥用于客户端ssh连接。注意客户端和服务端的公私钥不是一起的而是分开的。服务端的公私钥和配置文件除了authorized_keys文件都放在/etc/ssh目录下。然后就是ssh-copy-id将本地公钥上传到远程服务器authorized_keys中第一次需要输入密码并验证md5值。Part7管理网络管理网络的工具有很多比如ifconfig属于net-tools工具以及ipiproute2工具集替代ifconfig当然还有nmcli工具nmtui图形化工具。前两者都是临时修改对底层网络进行配置而nmcli则是通过修改配置文件永久修改。网卡的命名规则之前都使用ethn来命令网卡但是后面使用以太网有线接口en来替代无线局域网WLAN接口则用wl替代。但有时候通过nmcli查看网卡状态总是unmanaged这时候就只能使用ip或者ifconfig来修改了内核具体情况我也不了解也没办法。[1]修改主机名通过host命令可以查看当前主机的主机名其实是保存在/etc/hostname文件里面的可以使用hostname name来动态修改。或者通过hostnamectl hostname name永久修改最直接的方式就是编辑/etc/hostname文件来修改。不过不建议手动修改因为/etc/hosts文件中可能有127.0.0.1 hostname这样的条目也就是本地dns解析。如果手动修改/etc/hostname文件会导致他们在之间的关联出现问题除非全部手动修改。补充一点就是/etc/hosts是本地域名解析文件在/etc/resolv.conf文件中则保存着DNS服务器的IP地址同时有domain、search字段。[2]查看主机网络可以通过ifconfig命令来查看网络不过推荐使用ip。ip link show查看网卡的状态还有MTU值等ip route show查看路由ip addr show查看ipv4地址和子网掩码。如果网卡处于down的状态可以使用ip link set ens-33 up 来启用当然ip link还能创建虚拟网卡。可以通过ip addr add 192.168.241.141/24 dev ens-33来动态设置IP注意一个网卡能够有多个IP。对应的使用该ip addr del来删除指定的IP还有就是通过ip route add default via 192.168.241.2 dev ens-33来指定下一跳网关IP通过ip route del删除。除了设置IP外可能需要查看端口的占用情况可以使用netstate -tuln来查看网络情况only serversnetstate -ta查看所有的。不过在这个我觉得名称并不合适其实应该叫套接字情况统计也就是socket statistics。有个ss工具替代了netstate使用ss -ta一样能够观察到端口的占用情况。[3]NetworkManager服务前面输了半天总算讲到重点内容了。也就是NetworkManager服务服务配置文件也就是网络配置保存在/etc/NetworkManager/system-connections目录下并使用nmcli工具来管理。通过nmcli dev status来查看网卡的状态通过nmclli con show 则可以查看配置文件的状态是否启用--active看启用的。可以通过nmcli con mod 配置文件名 字段 值来修改配置文件然后通过nmcli con down 再up 配置文件名来启用。或者通过nmcli con add con-name 配置文件名 ifname ens-33 字段 值来添加然后再用nmcli con up 配置文件名启用。当然这讲的都是对配置文件的操作也可以对网卡进行操作。如使用nmcli dev disconnect ens-33 断开连接nmcli dev connect ens-33来启用连接。接下来讲一讲所谓的字段有哪些主要是ipv4.addressesipv4.dnsipv4.gateway等注意的是如果是手动配置需要使用字段ipv4.method manual否则会有问题。还可以设置connection.autoconnect yes让配置文件自动启用。Part8安装和更新软件包这部分又是一堆内容主要是讲讲包管理器的从rpm包管理器到yum包管理器再到dnf包管理器一代一代升级。在讲包管理器之前先理清楚两个词的概念一个是下载一个是安装。下载是将软件包从远程服务器或本地存储如U盘复制到当前主机需要通过网络或存储介质进行数据传输。而安装则是系统集成下载的软件包里面有可执行文件库文件以及配置文件等等。安装软件包就是将已下载的软件包解压、配置并集成到操作系统中使其可运行。主要包括文件部署以及环境配置因为有些软件包可能需要设置环境变量之类的。[1]包管理器rpm是本地包管理工具不处理软件包的依赖只是将下载好的软件包安装到系统上。rpm包管理工具并不管理仓库但是yum和dnf开始管理仓库。yum和dnf能够自动处软件理依赖关系对于本地没有的软件包则会从仓库中寻找并下载安装。不过就拿dnfyum升级版主要是性能上提升而不是功能上的扩展来说实际上是调用rpm包管理器来实现安装的但扩展了依赖管理功能以及仓库管理功能。[2]配置软件仓库可以直接编写/etc/yum.repos.d目录下后缀名为.repo的仓库文件文件名倒是不重要而是文件里面的仓库id重要使用[reponame]标明。一个仓库需要有name、baseurl、gpgcheckgpgkey、enabled等字段name一般和仓库id保持一致如果gpgcheck1那么就需要指定gpgkey的路径一般将enabled设置为1。使用dnf repolist all查看所有的仓库使用dnf makecache去验证。还有dnf search、dnf list等等命令。dnf upgrade则是更新系统中所有的软件从软件仓库中寻找对应的软件并比较软件版本。Part10访问Linux系统文件首先讲讲挂载和挂载要素。使用mount挂载文件系统挂载点需要是空目录使用unmount取消挂载但是需要确保该挂载点没有进程使用可以使用lsof来查看该挂载点目录否是有进程占用。挂载要素指的是设备文件、挂载点、文件系统、挂载选项。设备文件如磁盘分区、U盘等需要先建立文件系统再使用mount挂载。使用mount是临时挂载如果要永久挂载则需要编辑/etc/fstab文件。比如/dev/vdb1 /mnt/data ext4 defaults 0 0defaults是挂载选项包含rwsuiddevexecautonouserasync等默认选项。至于第一个0表示永不备份禁用dump工具对该分区备份第二个0表示系统启动时不检查该文件系统。可以使用df -h查看文件系统的挂载情况对于未挂载的设备文件则可以通过lsblk查看显示挂载和未挂载的设备。使用lsblk -fp则可以看到设备文件的UUID现在一般用UUID来挂载而不是设备的路径。使用free -h则是查看内存的占用情况包括交换分区的使用情况。要注意swap并不属于文件系统它既没有目录/文件结构也不能通过路径访问。文件系统有ext4类型通用文件系统稳定xfs文件系统高性能NTFS文件系统兼容windows双系统共享分区等。
阅读完成 · 觉得有帮助?