覃添铄 發表於 2023-10-26 15:50:00

麒麟操作系统培训笔记

<h1 id="麒麟操作系统培训-运维序列">麒麟操作系统培训-运维序列</h1>
<blockquote>
<p>本笔记只整理了CA初级运维课件,CP高级课件未整理,如有需要课件资料可在网盘自行获取<br>
链接:https://pan.baidu.com/s/1hh9S4qIByX-JUnxNleh0Mw<br>
提取码:minn</p>
</blockquote>
<h2 id="系统下载地址">系统下载地址</h2>
<blockquote>
<p><code>https://www.kylinos.cn/</code></p>
</blockquote>
<h2 id="操作系统安装实验环境">操作系统安装(实验环境)</h2>
<h3 id="1ios安装不做介绍">1.ios安装不做介绍</h3>
<h3 id="2稍后安装操作系统">2.稍后安装操作系统</h3>
<blockquote>
<p>linux -&gt; centos8 64bit</p>
<blockquote>
<p>一般最小安装 / 带GUI安装</p>
</blockquote>
</blockquote>
<h2 id="shell基本功能">Shell基本功能</h2>
<h3 id="别名">别名</h3>
<blockquote>
<p><strong>alias命令的效力仅限于该次登录</strong>,在注销系统后,这个别名的定义就会消失。</p>
</blockquote>
<h4 id="查看别名">查看别名</h4>
<blockquote>
<p><code>#alias</code></p>
</blockquote>
<h4 id="设置别名">设置别名</h4>
<blockquote>
<p><code>#alias ll='ls -l'</code></p>
</blockquote>
<h4 id="使用别名">使用别名</h4>
<blockquote>
<p><code>#ll /ect</code></p>
</blockquote>
<h4 id="取消别名">取消别名</h4>
<blockquote>
<p><code>#unalias ll</code></p>
</blockquote>
<h3 id="查看历史命令">查看历史命令</h3>
<blockquote>
<p>存放在<code>~/.bash_history</code>中,预定的记录为1000笔,这些都定义在环境变量中</p>
</blockquote>
<blockquote>
<p><code>#history</code></p>
</blockquote>
<h3 id="任务控制">任务控制</h3>
<blockquote>
<p>前台:出现提示符让用户操作的环境</p>
<p>后台:不能与用户交互的环境,<strong>你无法使用 ctrl-c 终止</strong>在后台执行的任务</p>
</blockquote>
<h4 id="将任务放在后台">将任务放在后台</h4>
<blockquote>
<p>通常<strong>将比较耗时的工作放在后台执行</strong>。要执行后台程序,只要在输入命令时,<strong>在命令的后面加上“&amp;”符号</strong>,之后按Enter键</p>
<p><strong>若目前已在执行某个命令,无法使用“&amp;”来将它加入后台</strong>中执行,<strong>需先按Ctrl+z键暂停</strong>这程序的执行,然后<strong>再直接输入“bg”命令</strong>,就可将此工作放入后台执行</p>
</blockquote>
<h4 id="查看后台所有任务状态">查看后台所有任务状态</h4>
<blockquote>
<p>`#jobs -l</p>
</blockquote>
<h3 id="特殊字符">特殊字符</h3>
<table>
<thead>
<tr>
<th>字符</th>
<th>功能</th>
</tr>
</thead>
<tbody>
<tr>
<td>#</td>
<td>注释</td>
</tr>
<tr>
<td>\</td>
<td>转义符,将特殊字符或通配符还原成一般字符</td>
</tr>
<tr>
<td>|</td>
<td>分隔两个管道命令</td>
</tr>
<tr>
<td>;</td>
<td>分隔多个命令</td>
</tr>
<tr>
<td>/~</td>
<td>用户的主目录</td>
</tr>
<tr>
<td>$</td>
<td>变量前需要加的变量值</td>
</tr>
<tr>
<td>&amp;</td>
<td>将该符号前的命令放到后台执行</td>
</tr>
<tr>
<td>‘(单引号)</td>
<td>由单引号括起来的字符串<strong>视为普通字符串</strong>,包括空格、$、/、\等特殊字符</td>
</tr>
<tr>
<td>“(双引号)</td>
<td>除$、\、单引号和双引号仍作为特殊字符并保留<br>其特殊功能外,其他都视为普通字符对待。</td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="环境变量">环境变量</h3>
<blockquote>
<p>用<code>env</code>命令可显示所有的环境变量</p>
</blockquote>
<h4 id="常用环境变量">常用环境变量</h4>
<table>
<thead>
<tr>
<th>PATH</th>
<th>决定了shell将到哪些目录中寻找命令或程序</th>
</tr>
</thead>
<tbody>
<tr>
<td>HOME</td>
<td>当前用户主目录</td>
</tr>
<tr>
<td>HISTSIZE</td>
<td>历史记录数</td>
</tr>
<tr>
<td>LOGNAME</td>
<td>当前用户的登录名</td>
</tr>
<tr>
<td>HOSTNAME</td>
<td>主机名</td>
</tr>
<tr>
<td>PS1</td>
<td>当前命令提示符</td>
</tr>
<tr>
<td>SHELL</td>
<td>用户当前使用的shell</td>
</tr>
<tr>
<td>LANGUAGE</td>
<td>语言相关的环境变量,多语言可以修改此环境变量</td>
</tr>
<tr>
<td>MAIL</td>
<td>当前用户的邮件存放目录</td>
</tr>
</tbody>
</table>
<h4 id="环境变量的修改">环境变量的修改</h4>
<blockquote>
<p>要修改某个环境变量,则不用加上$符号,如默认的历史命令记录数是1000,变量名为HISTSIZE,要修改为800,只需要在命令行中为其重新赋值</p>
</blockquote>
<h2 id="用户和组管理">用户和组管理</h2>
<h3 id="用户账号和类型">用户账号和类型</h3>
<blockquote>
<p>• KYLIN用户分为3类:</p>
<blockquote>
<p>root用户(超级用户) :拥有最高权限</p>
<p>系统用户:系统服务启用时,需开启的用户以方便占用系统资源,该类用户无法登录。</p>
<p>普通用户:系统安装完成后,被创建的所有用户</p>
<blockquote>
<p>用户ID(UID)是用户账户的唯一标识。</p>
<blockquote>
<p>root:UID为0</p>
<p>系统用户:UID从1到999</p>
<p>普通用户:UID从1000开始编号</p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<h4 id="组账户和类型">组账户和类型</h4>
<blockquote>
<p>超级组(super group)<br>
系统组(system )<br>
自定义组</p>
<blockquote>
<p>一个组可以包含多个用户<br>
一个用户可以同时属于多个组</p>
</blockquote>
</blockquote>
<h4 id="用户信息">用户信息</h4>
<h5 id="用户信息存放位置">用户信息存放位置</h5>
<table>
<thead>
<tr>
<th>存放位置</th>
<th>信息</th>
</tr>
</thead>
<tbody>
<tr>
<td>/etc/passwd</td>
<td>用户信息</td>
</tr>
<tr>
<td>/etc/shadow</td>
<td>口令信息</td>
</tr>
<tr>
<td>/etc/group</td>
<td>组信息</td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h5 id="查看用户信息">查看用户信息</h5>
<blockquote>
<p>cat /etc/passwd</p>
</blockquote>
<blockquote>
<p><code>sshd:x:108:65534::/var/run/sshd:/usr/sbin/nologin</code><br>
<code>syslog:x:109:117::/home/syslog:/bin/false</code><br>
<code>kylin:x:1000:1000:kylin,,,:/home/kylin:/bin/bash</code></p>
<blockquote>
<p>字段1:用户名。<br>
字段2:密码(实际保存在shadow中)<br>
字段3:UID(用户标识)<br>
字段4:GID(组标识)<br>
字段5:用户全名或本地帐号<br>
字段6:用户目录<br>
字段7:登录使用的Shell类型</p>
</blockquote>
</blockquote>
<h5 id="查看用户口令信息">查看用户口令信息</h5>
<blockquote>
<p>cat /etc/shadow</p>
</blockquote>
<blockquote>
<p><code>kylin:$6$s7KMkndd$ZeJmII.QrM6ZvQ1ZpHQc2sS48MY2lv7yTVyBJOGX3p3xXRvD6BLSlTcocyNjIEVoqhIkYUluuD2ByBuPSiZN9/:17252:0:99999:7:::</code></p>
<blockquote>
<p>字段1:用户名<br>
字段2:加密后的密码 (带!表示用户不能登录)<br>
字段3:上次修改密码的日期 (从1970年1月1日算起)<br>
字段4:密码不可被变更的天数<br>
字段5:密码需要被重新变更的天数(99999表示不需要变更)<br>
字段6:密码变更前提前几天警告<br>
字段7:帐号失效日期<br>
字段8:帐号取消日期<br>
字段9:保留条目,目前没用</p>
</blockquote>
</blockquote>
<h3 id="管理用户账户">管理用户账户</h3>
<h4 id="命令管理">命令管理</h4>
<h5 id="useradd">useradd</h5>
<blockquote>
<p>命令使用方法:useradd 参数 用户名</p>
</blockquote>
<table>
<thead>
<tr>
<th>useradd参数</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>-c</td>
<td>接用户信息说明</td>
</tr>
<tr>
<td>-d</td>
<td>指定某个绝对路径目录为主目录</td>
</tr>
<tr>
<td>-e</td>
<td>失效日期,YYYY-MM-DD,为shadow的第8项字段</td>
</tr>
<tr>
<td>-f</td>
<td>从用户失效到被禁用的时间,0为立刻失效,-1为永不失效</td>
</tr>
<tr>
<td>-g</td>
<td>初始化用户组名(主要组)</td>
</tr>
<tr>
<td>-G</td>
<td>接用户组名,一个用户可以加入多个组</td>
</tr>
<tr>
<td>-m</td>
<td>强制创建用户主目录</td>
</tr>
<tr>
<td>-s</td>
<td>默认管理员是/bin/bash,普通用户是/bin/sh</td>
</tr>
<tr>
<td>-u</td>
<td>接UID,表示为该用户名指定UID</td>
</tr>
</tbody>
</table>
<h5 id="passwd">passwd</h5>
<blockquote>
<p>命令使用方法:passwd 用户名</p>
</blockquote>
<h5 id="usermod">usermod</h5>
<blockquote>
<p>命令使用方法:usermod 参数 用户名</p>
</blockquote>
<table>
<thead>
<tr>
<th>usermod参数</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>-c</td>
<td>修改用户说明信息</td>
</tr>
<tr>
<td>-g</td>
<td>修改组名,即初始用户组</td>
</tr>
<tr>
<td>-e</td>
<td>修改用户过期日期 格式:YYYY-MM-DD</td>
</tr>
<tr>
<td>-G</td>
<td>修改组名,其他用户组</td>
</tr>
<tr>
<td>-l</td>
<td>修改用户名</td>
</tr>
<tr>
<td>-L</td>
<td>锁定账号,使用户密码无效(在/etc/shadow文件中用户对应密码字符串的前面加上叹号(!))</td>
</tr>
<tr>
<td>-U</td>
<td>解锁</td>
</tr>
</tbody>
</table>
<h5 id="userdel">userdel</h5>
<blockquote>
<p>命令使用方法:userdel 参数 用户名</p>
</blockquote>
<table>
<thead>
<tr>
<th>userdel参数</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>-r</td>
<td>删除用户登入目录以及目录中所有文件。</td>
</tr>
<tr>
<td>-f</td>
<td>强制删除用户(甚至当用户已经登入 Linux 系统时此选项仍旧生效)</td>
</tr>
</tbody>
</table>
<h3 id="管理组账户">管理组账户</h3>
<h4 id="命令管理-1">命令管理</h4>
<h5 id="查看组信息">查看组信息</h5>
<blockquote>
<p>cat /etc/group</p>
<blockquote>
<p><code>ssh:x:116: syslog:x:117: kylin:x:1000:</code></p>
<blockquote>
<p>字段1:组名;<br>
字段2:组口令占位符;<br>
字段3:组ID(GID)号;<br>
字段4:成员列表,用逗号分开(不能加空格)。</p>
</blockquote>
</blockquote>
<p>cat /etc/gshadow</p>
</blockquote>
<h5 id="新建和删除组">新建和删除组</h5>
<blockquote>
<p>groupadd;addgroup;</p>
<p>groupdel;delgroup</p>
</blockquote>
<h5 id="组密码相关">组密码相关</h5>
<blockquote>
<p>gpasswd</p>
</blockquote>
<table>
<thead>
<tr>
<th>gpasswd参数</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>-a</td>
<td>添加用户到组</td>
</tr>
<tr>
<td>-d</td>
<td>从组删除用户</td>
</tr>
<tr>
<td>-A</td>
<td>指定管理员</td>
</tr>
<tr>
<td>-M</td>
<td>指定组成员和-A的用途差不多</td>
</tr>
<tr>
<td>-r</td>
<td>删除密码</td>
</tr>
<tr>
<td>-R</td>
<td>限制用户登入组,只有组中的成员才可以用newgrp加入该组</td>
</tr>
</tbody>
</table>
<h5 id="修改组信息">修改组信息</h5>
<blockquote>
<p>groupmod</p>
</blockquote>
<table>
<thead>
<tr>
<th>groupmod参数</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>-g</td>
<td>设置欲使用的组ID</td>
</tr>
<tr>
<td>-o</td>
<td>重复使用组ID</td>
</tr>
<tr>
<td>-n</td>
<td>设置欲使用的组名称</td>
</tr>
</tbody>
</table>
<h3 id="管理组账户-1">管理组账户</h3>
<h4 id="显示指定用户所在组成员">显示指定用户所在组成员</h4>
<blockquote>
<p>groups </p>
</blockquote>
<h4 id="删除用户组">删除用户组</h4>
<blockquote>
<p>delgroup </p>
</blockquote>
<h2 id="文件与目录管理">文件与目录管理</h2>
<h3 id="目录层级结构">目录层级结构</h3>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154934024-2046068374.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154847258-629023855.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154840322-1663740277.png" alt="" loading="lazy"></p>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154835710-760409414.png" alt="" loading="lazy"></p>
<h3 id="文件和目录常用命令">文件和目录常用命令</h3>
<h4 id="目录相关操作">目录相关操作</h4>
<blockquote>
<p>cd pwd mkdir rmdir</p>
<blockquote>
<p>cd:目录之间的切换<br>
pwd:查看当前目录绝对路径<br>
mkdir:创建目录<br>
rmdir:删除目录</p>
</blockquote>
</blockquote>
<h4 id="文件创建相关操作">文件创建相关操作</h4>
<blockquote>
<p>ls touch cp rm mv ln</p>
<blockquote>
<p>ls:罗列当前目录下所有子文件<br>
touch:创建新文件<br>
cp:复制文件<br>
rm:删除文件<br>
mv:移动或重命名文件<br>
ln:创建链接文件</p>
</blockquote>
</blockquote>
<h4 id="文件内容查看">文件内容查看</h4>
<blockquote>
<p>cat more less tail head</p>
</blockquote>
<table>
<thead>
<tr>
<th>less命令选项</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>PgDn</td>
<td>向下翻一页</td>
</tr>
<tr>
<td>PgUp</td>
<td>向上翻一页</td>
</tr>
<tr>
<td>/字符串</td>
<td>向下查找该字符串</td>
</tr>
<tr>
<td>:f</td>
<td>显示文件名和目前的行数</td>
</tr>
<tr>
<td>q</td>
<td>退出查看界面</td>
</tr>
<tr>
<td>?/字符串</td>
<td>向上查找该字符串</td>
</tr>
<tr>
<td>N</td>
<td>-反向重复前一个查找(?/字符串和/字符串查找的内容)</td>
</tr>
<tr>
<td>n</td>
<td>重复前一个查找(?/字符串和/字符串查找的内容/)</td>
</tr>
</tbody>
</table>
<h4 id="文件查询">文件查询</h4>
<blockquote>
<p>which whereis locate find</p>
</blockquote>
<h4 id="文件处理">文件处理</h4>
<blockquote>
<p>wc sort uniq diff</p>
</blockquote>
<h4 id="文本查找">文本查找</h4>
<blockquote>
<p>grep</p>
</blockquote>
<h4 id="文件打包压缩解压">文件打包、压缩、解压</h4>
<blockquote>
<p>tar</p>
</blockquote>
<h3 id="文件扩展名">文件扩展名</h3>
<table>
<thead>
<tr>
<th>扩展名</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>.sh</td>
<td>Shell脚本文件</td>
</tr>
<tr>
<td>.tar .gz .zip .tgz .bz2</td>
<td>压缩文件</td>
</tr>
<tr>
<td>.py .php .html</td>
<td>程序文件,网页相关文件</td>
</tr>
</tbody>
</table>
<h3 id="链接文件">链接文件</h3>
<blockquote>
<p>ln命令用来为文件创建一个连接,连接类型分为硬连接和软连接(符号连接)两种,<strong>默认的连接类型是硬连接</strong></p>
<blockquote>
<p>常用方式:<br>
<code>ln source target :创建硬链接文件</code><br>
<code>ln -s source target :创建软链接文件</code></p>
</blockquote>
<blockquote>
<p>软链接:</p>
<blockquote>
<p>1..软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式。<br>
2.软链接可以跨文件系统 ,硬链接不可以。<br>
3.软链接可以对一个不存在的文件名进行链接。<br>
4.软链接可以对目录进行链接。</p>
</blockquote>
<p>硬链接:</p>
<blockquote>
<p>1.硬链接,以文件副本的形式存在。但不占用实际空间。<br>
2.不允许给目录创建硬链接。<br>
3.硬链接只有在同一个文件系统中才能创建。</p>
</blockquote>
</blockquote>
</blockquote>
<h3 id="文件和目录权限">文件和目录权限</h3>
<h4 id="文件权限文件的访问控制权限">文件权限:文件的访问控制权限</h4>
<blockquote>
<p>即哪些用户和组群可以访问文件以及可以执行什么样的操作。<br>
每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。</p>
</blockquote>
<h5 id="命令查看文件的权限">命令查看文件的权限</h5>
<blockquote>
<p><code>ls -al</code> 命令查看文件的权限,有七项属性</p>
<blockquote>
<p><code>-rw------- 1 root root 5243 8月 30 10:16 .bash_history</code></p>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154810402-20876589.png" alt="" loading="lazy"></p>
</blockquote>
</blockquote>
<blockquote>
<blockquote>
<blockquote>
<p>(1)表示这个文件的类型与权限,这一项有10个字符。<br>
(2)链接数,链接到该文件所在 inode 结点的文件名数目<br>
(3)该文件的拥有者。<br>
(4)该文件的所属用户组,该用户组的所有用户对这个文件有第二组权限。<br>
(5)该文件的大小,默认单位为B。<br>
(6)该文件的创建日期或者最近一次修改的日期。<br>
(7)该文件的文件名。</p>
</blockquote>
</blockquote>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154751742-607838910.png" alt="" loading="lazy"></p>
</blockquote>
<blockquote>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154734541-2126157971.png" alt="" loading="lazy"></p>
</blockquote>
<blockquote>
<blockquote>
<p>文件权限的两种表示方式</p>
<blockquote>
<p>一种是数字表示的文件权限</p>
<blockquote>
<p>r用4表示</p>
<p>w用2表示</p>
<p>x用1表示。每组的权限表示是累加的</p>
</blockquote>
<p>一种是符号表示的文件权限</p>
<blockquote>
<p>使用u、g、o表示user、group、others。</p>
<p>a表示三组所有的权限,+和-分别表示增加和去掉相应的权<br>
限,=表示赋予某种权限。</p>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
<h5 id="修改文件和目录权限">修改文件和目录权限</h5>
<blockquote>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154654156-633195397.png" alt="" loading="lazy"></p>
</blockquote>
<h6 id="改变文件的权限">改变文件的权限:</h6>
<blockquote>
<p><code>chmod</code></p>
<blockquote>
<p><code>格式1:chmod [+-=] 文件或目录</code></p>
<blockquote>
<p><code>u、g、o、a </code>分别表示:属主、属组、其他用户、所有用户</p>
<p>``+、-、= `分别表示:增加、去除、设置权限</p>
</blockquote>
<p><code>格式2:chmod nnn 文件或目录</code></p>
<blockquote>
<p><code>nnn</code>为 3位八进制数</p>
</blockquote>
</blockquote>
<blockquote>
<p>常用命令选项</p>
<blockquote>
<p>-R:递归修改指定目录下所有子项的全新</p>
</blockquote>
</blockquote>
</blockquote>
<h6 id="修改文件所有者">修改文件所有者:</h6>
<blockquote>
<p><code>chown</code></p>
<blockquote>
<p>格式:</p>
<blockquote>
<p>chown 属主 文件或目录<br>
chown :属组 文件或目录<br>
chown 属主:属组 文件或目录</p>
</blockquote>
</blockquote>
<blockquote>
<p>常用命令选项<br>
-R:递归修改指定目录下所有文件、子目录的归属</p>
</blockquote>
</blockquote>
<h6 id="修改所属用户组">修改所属用户组:</h6>
<blockquote>
<p>chgrp</p>
<blockquote>
<p>常用命令选项<br>
-R:递归修改指定目录下所有文件、子目录的归属</p>
</blockquote>
</blockquote>
<h5 id="隐藏权限高于root">隐藏权限(高于root)</h5>
<h6 id="设置查看隐藏权限">设置/查看隐藏权限</h6>
<blockquote>
<p>设置:<code>chattr</code>:使用该指令后,root也无法突破权限查看</p>
<p>查看:<code>lsattr</code></p>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154628281-146219711.png" alt="" loading="lazy"></p>
</blockquote>
<h5 id="特殊权限">特殊权限</h5>
<blockquote>
<p>文件特殊权限:SUID、SGID、SBIT</p>
</blockquote>
<h6 id="suid">SUID</h6>
<blockquote>
<p>SUID:当s标志出现在文件拥有者的x权限上时,称为Set UID,数字权限为4</p>
<blockquote>
<p>功能:</p>
<blockquote>
<p>SUID仅对<strong>二进制程序</strong>有效;</p>
<ol start="2">
<li><strong>执行者对该程序需要有x可执行权限</strong>;</li>
<li>本权限仅在执行该程序的过程中有效;</li>
<li>执行者将具有该程序拥有者的权限。</li>
</ol>
</blockquote>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154606521-2037755204.png" alt="" loading="lazy"></p>
</blockquote>
</blockquote>
<h6 id="sgid">SGID</h6>
<blockquote>
<p>当s标志在群组的x时称为Set GID,数字权限为2。</p>
<p>功能:</p>
<blockquote>
<p>1.SGID改变的是执行者的所属组,可以对可执行文件和目录设置;</p>
<p>2.命令执行者要对该程序拥有执行(x)权限</p>
<p>3.命令执行者在执行程序的时候,组身份升级为该可执行程序文件的属组</p>
<p>4.SGID权限只在该程序执行过程中有效,也就是组身份只在程序执行过程中发生改变,命令结束用户组身份恢复. 5.对目录设置SGID属性,可以使得访问在该目录下创建的所有文件的所有权,都继承原目录的所有者,而非创建<br>
者</p>
</blockquote>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154552854-756817313.png" alt="" loading="lazy"></p>
</blockquote>
<h6 id="sbit">SBIT</h6>
<blockquote>
<p>SBIT权限:在权限位的最低位表现为t,称为粘滞位,数字权限为1。</p>
<p>功能:</p>
<blockquote>
<ol>
<li>SBIT权限只对目录有效</li>
<li>普通用户对于目录有w、x权限,即普通用户可以在此目录创建文件删除文件。</li>
<li>通过对目录设置SBIT权限,当使用者在该目录下创建文件或目录时,仅自己及root有权利删除该文件。</li>
</ol>
</blockquote>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154539705-309712712.png" alt="" loading="lazy"></p>
</blockquote>
<h5 id="细部权限">细部权限</h5>
<blockquote>
<p>ACL 是 Access Control List 的缩写,主要的目的是在提供传统的<br>
owner,group,others, read,write,execute 权限之外的细部权限设定</p>
<blockquote>
<p>主要可以针对几个项目:</p>
<blockquote>
<p>使用者 (user):可以针对使用者来设定权限;<br>
群组 (group):针对群组为对象来设定其权限;<br>
默认属性 (mask):还可以针对在该目录下在建立新文件/目录时,规范新数据的默认权限</p>
</blockquote>
</blockquote>
</blockquote>
<h6 id="setfacl">setfacl</h6>
<blockquote>
<p>setfacl:设定某个目录/文件的 ACL 规范。<br>
格式:setfacl [-bkRd] [{-m|-x} acl 参数] 目标文件名</p>
<blockquote>
<p>选项或参数:<br>
-m :设定后续的 acl 参数给档案使用,不可与 -x 合用;<br>
-x :删除后续的 acl 参数,不可与 -m 合用;<br>
-b :移除所有的 ACL 设定参数;<br>
-R :递归设定 acl;<br>
-d :设定预设acl 参数的意思!只对目录有效,在该目录新建的数据会引<br>
用此默认值</p>
</blockquote>
</blockquote>
<h6 id="getfacl">getfacl</h6>
<blockquote>
<p>getfacl:查看某个目录/文件的 ACL 设置。<br>
格式:getfacl 目标文件名</p>
</blockquote>
<h2 id="文件查找与处理">文件查找与处理</h2>
<h3 id="文件查询-1">文件查询</h3>
<blockquote>
<p>which、 whereis、locate、find、grep</p>
</blockquote>
<h4 id="which">which</h4>
<blockquote>
<p>which [选项] 文件<br>
用来查找可执行文件</p>
</blockquote>
<h4 id="whereis">whereis</h4>
<blockquote>
<p>whereis [选项] 文件<br>
查找特定文件名文件</p>
</blockquote>
<h4 id="find">find</h4>
<blockquote>
<p>find:查找文件绝对路径<br>
n find [路径] [选项] [-print] [ -exec command ] {} ;</p>
</blockquote>
<table>
<thead>
<tr>
<th>参数</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>路径</td>
<td>find命令所查找的范围。例如用.来表示当前目录,用/来表示系统根目录。</td>
</tr>
<tr>
<td>选项</td>
<td>-name:查找文件名<br>-type:查找文件类型 d: 目录文件 f:普通文件 d:块设备文件 c:字符设备文件</td>
</tr>
<tr>
<td>-exec</td>
<td>find命令对匹配的文件执行该参数所给出的shell命令。<br>-exec command {} ;<br> 将查到的文件执行command操作,注意{} 和 ;之间有空格</td>
</tr>
</tbody>
</table>
<h4 id="grep">grep</h4>
<blockquote>
<p>查找关键词,使用正则表达式搜索关键词,并显示匹配的行。</p>
<blockquote>
<p>语法:grep 关键</p>
<p>支持正则表达式</p>
</blockquote>
</blockquote>
<h4 id="wc">wc</h4>
<blockquote>
<p>wc:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。<br>
语法:wc [选项] 文件..</p>
</blockquote>
<table>
<thead>
<tr>
<th>选项</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>-c</td>
<td>统计字节数</td>
</tr>
<tr>
<td>-l</td>
<td>统计行数</td>
</tr>
<tr>
<td>-m</td>
<td>统计字符数。这个标志不能与 -c 标志一起使用。</td>
</tr>
<tr>
<td>-w</td>
<td>统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。</td>
</tr>
<tr>
<td>-L</td>
<td>打印最长行的长度。</td>
</tr>
<tr>
<td>--help</td>
<td>显示帮助信息</td>
</tr>
<tr>
<td>--version</td>
<td>显示版本信息</td>
</tr>
</tbody>
</table>
<h4 id="sort">sort</h4>
<blockquote>
<p>sort:对指定文件进行排序并将结果写到标准输出。<br>
n 语法: sort [选项]... [文件]...</p>
</blockquote>
<table>
<thead>
<tr>
<th>常用选项</th>
<th>说 明</th>
</tr>
</thead>
<tbody>
<tr>
<td>-n,--number-sort</td>
<td>按字符串数值排序,与-g区别为不转为浮点数</td>
</tr>
<tr>
<td>-g,--general-number-sort</td>
<td>按通用数值排序,支持科学计数法</td>
</tr>
<tr>
<td>-f,--ignore-case</td>
<td>忽略大小写,默认大小写字母不同</td>
</tr>
<tr>
<td>-k,--key=POS1[,POS2]</td>
<td>排序从POS1开始,若指定POS2,则POS2结束,否则以pos1排序</td>
</tr>
<tr>
<td>-t,--field-separator=SEP</td>
<td>指定列的分割符</td>
</tr>
<tr>
<td>-r,--reverse</td>
<td>降序排序,默认为升序</td>
</tr>
<tr>
<td>-h,--human-numeric-sort</td>
<td>使用易读性数字(例如: 2K 1G) -u,--unique 去除重复的行</td>
</tr>
<tr>
<td>-o,--output=FILE</td>
<td>将输出写入文件</td>
</tr>
</tbody>
</table>
<h3 id="文件打包">文件打包</h3>
<blockquote>
<p>两个概念:</p>
<blockquote>
<p>打包:是指将一大堆文件或目录变成一个总的文件. ü 压缩:则是将一个大的文件通过一些压缩算法变成一个小文件。</p>
</blockquote>
<p>linux下最常用的打包程序就是tar</p>
<blockquote>
<p>① 使用tar程序打出来的包我们常称为tar包;<br>
② tar包文件的命令通常都是以.tar结尾的;<br>
③ 生成tar包后,就可以用其它的程序来进行压缩。</p>
</blockquote>
<blockquote>
<p>Linux系统下的压缩、解压缩工具很多,常见的有compress、gzip、bzip2、zip等</p>
</blockquote>
</blockquote>
<h4 id="tar命令的使用">tar命令的使用</h4>
<blockquote>
<p>压缩</p>
<blockquote>
<p><code>tar -zcf hello.tar.gz hello</code></p>
<p><code>tar -jcf hello.tar.bz2 hello</code></p>
</blockquote>
<p>解压</p>
<blockquote>
<p><code>tar -zxf hello.tar.gz</code></p>
<p><code>tar -jxf hello.tar.bz2</code></p>
</blockquote>
</blockquote>
<table>
<thead>
<tr>
<th>常用选项</th>
<th>说 明</th>
</tr>
</thead>
<tbody>
<tr>
<td>-c</td>
<td>创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。</td>
</tr>
<tr>
<td>-x</td>
<td>从档案文件中释放文件。</td>
</tr>
<tr>
<td>-r</td>
<td>把要存档的文件追加到档案文件的未尾。</td>
</tr>
<tr>
<td>-f</td>
<td>使用档案文件或设备,<strong>这个选项通常是必选的。</strong></td>
</tr>
<tr>
<td>-v</td>
<td><strong>详细报告tar处理的文件信息</strong>。如无此选项,tar不报告文件信息。</td>
</tr>
<tr>
<td>-z</td>
<td>用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩</td>
</tr>
<tr>
<td>-j</td>
<td>用bzip2来压缩/解压缩文件</td>
</tr>
</tbody>
</table>
<h2 id="软件包管理">软件包管理</h2>
<h3 id="rpm">RPM</h3>
<blockquote>
<p>为“RPM”软件包开发的包管理系统。<br>
适用于“银河Kylin服务器”、“CentOS”、“Fedora”等。</p>
</blockquote>
<h4 id="rpm包命名规则">RPM包命名规则</h4>
<blockquote>
<p>&lt;软件包名称&gt;&lt;版本&gt;-&lt;修订号&gt;&lt;平台&gt;.rpm</p>
<blockquote>
<p>例如 nano_2.5.3-2kord_arm64.rpm</p>
<blockquote>
<p>软件包名称: nano<br>
版本: 2.5.3<br>
修订号: 2kord<br>
平台: arm64</p>
</blockquote>
</blockquote>
</blockquote>
<h4 id="命令行包管理">命令行包管理</h4>
<blockquote>
<p>• rpm工具:主要是对本地的软件包进行管理,不解决依赖关系<br>
• yum工具:rpm的智能化前端,能够自动处理依赖关系问题</p>
<blockquote>
<p>yum工具安装、卸载、更新升级软件,实际上底层是调用RPM来完成的</p>
</blockquote>
</blockquote>
<h4 id="查询rpm包">查询RPM包</h4>
<blockquote>
<p>格式:# rpm –q &lt;包名&gt;</p>
<blockquote>
<p>-a: 查询所有已安装的软件包。<br>
-f &lt;文件名&gt;: 会查询拥有 &lt;文件名&gt; 的软件包。当指定文件时,必须指定<br>
文件的完整路径(如 /usr/bin/ls)。<br>
-p &lt;包名&gt;: 查询指定的软件包<br>
-q命令也有丰富的选项来指明执行查询操作时将显示什么信息:<br>
-i 显示包的名称、描述、版本号、发行号、大小、编译时间、安装时间和<br>
提供商等信息<br>
-l 显示包中所有文件的列表<br>
-s 显示包中所有文件的状态<br>
-d 显示包中所有的文档文件<br>
-c 显示包中所有的配置文件</p>
</blockquote>
</blockquote>
<h4 id="校验软件包">校验软件包</h4>
<blockquote>
<p>格式:</p>
<blockquote>
<p>校验整个系统的rpm套件</p>
</blockquote>
<p><code>#rpm -Va</code></p>
<blockquote>
<p>校验单个rpm包<br>
<code>#rpm -V &lt;包名&gt;</code></p>
</blockquote>
<blockquote>
<p>验证指定的包文件</p>
</blockquote>
<p><code># rpm -Vp &lt;包文件名&gt;</code></p>
<blockquote>
<p>• 验证包含指定文件的软件包</p>
</blockquote>
<p><code># rpm -Vf &lt;文件名&gt;</code></p>
</blockquote>
<h3 id="yum">YUM</h3>
<h4 id="访问yum仓库">访问YUM仓库</h4>
<blockquote>
<p>配置文件:/etc/yum.repos.d/*.repo</p>
</blockquote>
<h4 id="查询软件包">查询软件包</h4>
<blockquote>
<p>yum list [软件名]...</p>
<p>yum info [软件名]...</p>
<p>yum search &lt;关键词&gt;</p>
</blockquote>
<h4 id="查询软件包组">查询软件包组</h4>
<blockquote>
<p>yum grouplist [包组名]...</p>
<p>yum groupinfo &lt;包组名&gt;..</p>
</blockquote>
<h4 id="安装软件">安装软件</h4>
<blockquote>
<p>• yum install [软件名]<br>
• yum groupinstall &lt;包组名&gt;</p>
</blockquote>
<h4 id="升级软件">升级软件</h4>
<blockquote>
<p>• yum update<br>
• yum groupupdate</p>
</blockquote>
<h4 id="卸载软件">卸载软件</h4>
<blockquote>
<p>• yum remove &lt;软件名&gt;... • yum groupremove &lt;包组名&gt;..</p>
</blockquote>
<h2 id="输入输出重定向">输入输出重定向</h2>
<h3 id="输出重定向">输出重定向</h3>
<blockquote>
<p>把命令(或可执行程序)的标准输出重新定向到指定文档中。即该命令的输出不显示在屏幕上,而是写入到指定文档,注意:是以覆盖方式写入的。</p>
</blockquote>
<h4 id="覆盖">覆盖</h4>
<pre><code># ls &gt; directory.out
# cat directory.out
ch1.doc ch2.doc ch3.doc chimp config mail/ test/
</code></pre>
<h4 id="追加">追加</h4>
<pre><code># ls *.doc&gt;&gt;directory.out
# cat directory.out
ch1.doc ch2.doc ch3.doc chimp config mail/ test/
ch1.doc ch2.doc ch3.doc
</code></pre>
<h3 id="输入重定向">输入重定向</h3>
<blockquote>
<p>把命令或可执行程序的标准输入重定向到指定的文件或字符串</p>
</blockquote>
<pre><code># wc /etc/passwd
20 23 726 /etc/passwd
</code></pre>
<pre><code># wc &lt; /etc/passwd
20 23 726
</code></pre>
<h2 id="系统定时任务">系统定时任务</h2>
<blockquote>
<p>at、Crond服务会定期(<strong>默认每分钟检查一次</strong>)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个定时任务服务就相当于我们平时早起使用的闹钟一样,一次性的或是按周期循环。</p>
</blockquote>
<h3 id="at定时任务">at定时任务</h3>
<blockquote>
<p>n 指定一个时间执行一个任务,<strong>只能执行一次</strong>。<br>
n 创建at任务方式有两种:</p>
<blockquote>
<p>从文件输入<br>
从控制台输入</p>
</blockquote>
</blockquote>
<h4 id="设置定时">设置定时</h4>
<pre><code># at 23:30
at &gt; systemctl restart httpd
at &gt; 此处请同时按下Ctrl + D 组合键来结束编写计划任务
job 3 at Mon Apr 27 23:30:00 2021

----------------------------

# echo "systemctl restart httpd" | at 23:30
job 4 at Mon Apr 27 23:30:00 2021
</code></pre>
<h4 id="查看任务">查看任务</h4>
<blockquote>
<p>如果想要查看已设置好但还未执行的一次性计划任务,可以使用“at -l”命令</p>
</blockquote>
<pre><code># at -l
Job 3 at Mon Apr 27 23:30:00 202
</code></pre>
<h4 id="删除任务">删除任务</h4>
<pre><code># atrm 3
# at -l
</code></pre>
<h4 id="at指定时间的方法">at指定时间的方法:</h4>
<blockquote>
<p>1)能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00</p>
<p>2)能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。</p>
<p>3)能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 例如:12pm</p>
<p>4)能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2009- 03-1</p>
<p>5)能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 5 minutes 04pm +3 days</p>
<p>6)能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。</p>
</blockquote>
<h3 id="周期性任务管理-crontab">周期性任务管理-crontab</h3>
<blockquote>
<p>创建crontab任务方式有两种:配置文件/etc/crontab、crontab命令</p>
<blockquote>
<p>周期最大值为0,最小值为分钟</p>
</blockquote>
</blockquote>
<h4 id="crontab命令详解">crontab命令详解</h4>
<blockquote>
<p>crontab命令详解</p>
<p>格式: crontab [-u user] file</p>
<p>crontab [ -u user ] [ -i ] { -e | -l | -r }</p>
<p>-u user:用于设定某个用户的crontab服务;</p>
<p>file: file为命令文件名,表示将file作为crontab的任务列表文件并载入crontab;</p>
<p>-e:编辑某个用户的crontab文件内容,如不指定用户则表示当前用户;</p>
<p>-l:显示某个用户的crontab文件内容,如不指定用户则表示当前用户;</p>
<p>-r:从/var/spool/cron目录中删除某个用户的crontab文件。</p>
<p>-i:在删除用户的crontab文件时给确认提示。</p>
</blockquote>
<p><img src="https://img2023.cnblogs.com/blog/1915278/202310/1915278-20231026154345400-1524734723.png" alt="" loading="lazy"></p>
<h4 id="案例">案例</h4>
<blockquote>
<p>每天上午8-11点的第3和15分钟执行command:</p>
<blockquote>
<p>3,15 8-11 * * * command</p>
</blockquote>
<p>每隔2天的上午8-11点的第3和15分钟执行command:</p>
<blockquote>
<p>3,15 8-11 */2 * * command</p>
</blockquote>
<p>每一小时重启ssh</p>
<blockquote>
<p>1 * * * systemctl restart sshd</p>
</blockquote>
<p>每周六、周日的1:10重启ssh</p>
<blockquote>
<p>10 1 * * 6,0 systemctl restart sshd</p>
</blockquote>
<p>每天18 : 00至23 : 00之间每隔30分钟重启ssh</p>
<blockquote>
<p>0,30 18-23 * * * systemctl restart sshd</p>
</blockquote>
<p>每天凌晨2点执行备份系统日志文件</p>
<blockquote>
<p>0 2 * * * /bin/bash /data/logbak.sh</p>
</blockquote>
</blockquote>
<h2 id="进程和服务">进程和服务</h2>
<p>交互进程</p>
<blockquote>
<p>由shell启动的进程,它既可以在前台运行,也可以在后台运行。交互进程在执行过程中,要求与用户进行交互操作。简单来说就是用户需要给出某些参数或者信息,进程才能继续执行。</p>
</blockquote>
<p>批处理进程</p>
<blockquote>
<p>与windows原来的批处理很类似,是一个进程序列。该进程负责按照顺序启动其进程。</p>
</blockquote>
<p>守护进程</p>
<blockquote>
<p>是执行特定功能或者执行系统相关任务的后台进程。守护进程只是一个特殊的进程,不是内核的组成部分。许多守护进程在系统启动时启动,直到系统关闭时才停止运行。而某些守护进程只是在需要时才会启动,比如FTP或者Apache服务等,可以在需要的时候才启动该服务</p>
</blockquote>
<h3 id="查看进程">查看进程</h3>
<blockquote>
<p>kylin@kylin-1:~$ps aux<br>
USER PID%CPU%MEM VSZ RSS TTY STAT START TIME COMM</p>
<blockquote>
<p>选项 说明<br>
USER 说明该程序是属于哪个用户的<br>
PID 该程序的代号<br>
%CPU 代表该程序使用了多少CPU资源<br>
%MEM 代表该程序使用了多少的RAM<br>
VSZ,RSS 占去的ram的大小(bytes)<br>
TTY 是否为登入者执行的程序?若为tty1-tty6则为本机登入者,若为pts/??则为远程<br>
登入者执行的程序;<br>
STAT 该程序的状态,(R)为可执行的,(S)为该程序正在睡眠中,就是没有执行了,(T)<br>
正在侦测或是停止了,(Z)僵尸程序,就是zombie死掉的程序。<br>
START 该程序开始的日期;<br>
TIME 该程序跑了多久时间;<br>
COMMAND 该程序的内容。</p>
</blockquote>
</blockquote>
<h3 id="进程优先级">进程优先级</h3>
<blockquote>
<p>动态优先级,越小越早被执行</p>
</blockquote>
<h4 id="指令">指令</h4>
<blockquote>
<p>nice命令就是设置一个要执行command进程的nice值。</p>
<blockquote>
<p>nice[-n number]command<br>
-n:就是后面的number数值</p>
</blockquote>
<p>renice命令就是设置一个已经在运行的进程的nice值</p>
<blockquote>
<p>renice PI</p>
</blockquote>
</blockquote>
<pre><code>例3:将某个将要执行的程序nice值减3。
        kylin@kylin-1:~$nice -n -3 firefox
        nice:无法设置优先级:权限不够
公共的 模板 视频 图片 文档 下载 音乐 桌面
        kylin@kylin-1:~$sudo nice -n -3 firefox (root权限才可以降低nice值)
kylin的密码:
        kylin@kylin-1:~$top
</code></pre>
<h3 id="信号管理">信号管理</h3>
<h4 id="列出可用信号">列出可用信号</h4>
<blockquote>
<p>• kylin@kylin-1:~$kill -l<br>
1)SIGHUP 2)SIGINT 3)SIGQUIT 4)SIGILL 5)SIGTRAP<br>
………………….</p>
</blockquote>
<h4 id="常用信号">常用信号</h4>
<blockquote>
<p>SIGHUP 1---对控制进程或终端进行挂起检测(hangup detection)。<br>
SIGINT 2---当按下CTRL+C时发送该信号。<br>
SIGKILL 9---用于强行杀死进程。<br>
SIGTERM 15---默认用于终止进程。<br>
SIGTSTP 20---当按下Ctrl+Z时发送该信号</p>
</blockquote>
<h4 id="中止进程">中止进程</h4>
<blockquote>
<p>kill [-s 信号名称] pid …</p>
</blockquote>
<pre><code>例5:终止一个或多个进程。
查看vsftpd和ssh进程的PID
    kylin@kylin-1:~$ps aux|grep vsftpd
    root 11844 0.0 0.1 26092 2380?Ss 17:10 0:00/usr/sbin/vsftpd/etc/vsftpd.conf
    kylin 11867 0.0 0.0 20888 1092 pts/0 S+17:10 0:00 grep--color=auto vsftpd

    kylin@kylin-1:~$ps aux|grep sshd
    root 11794 0.0 0.2 69624 5600?Ss 17:08 0:00/usr/sbin/sshd-D
    kylin 11869 0.0 0.0 20888 1032 pts/0 S+17:10 0:00 grep--color=auto sshd

然后杀死这两个进程
        kylin@kylin-1:~$sudo kill 11844 1179
</code></pre>


</div>
<div id="MySignature" role="contentinfo">
    保存redis相关笔记<br><br>
来源:https://www.cnblogs.com/minnersun/p/17789576.html
頁: [1]
查看完整版本: 麒麟操作系统培训笔记