一.简介完整计算系统
二.进制转换
1.二进制和十进制转换
2^0=1=1b
2^1=2=10b
2^2=4=100b
2^3=8=1000b
2^4=16=10000b
2^5=32=100000b
2^6=64=1000000b
2^7=128=10000000b
2^8=256=100000000b
2^9=512=1000000000b
2^10=1024=10000000000b
2.把228转换成二进制
228=128+64+32+4
10000000
1000000
100000
100
11100100b=228
三.VMware的下载和安装
1.登录VMware官网,https://www.vmware.com/cn.html
2.点击页面右上角资源--产品下载--VMware Workstation Pro,即可选择所需版本下载
3.下载之后即可根据提示安装
四.GPL和MIT开源协议的区别
1.GPL(GNU General Public License):GNU通用公共许可协议。GPL协议的目的就是强制代码开源和免费使用。其最大的特点就“开源的传染性”。也就是说,假设某公司使用了具有GPL协议的代码库,那么他理论上也必须把自己的代码库开源。
2.MIT(The Massachusetts Institute of TechnologyLicense):麻省理工学院许可协议。MIT是相对宽松的软件许可协议,它允许你任意的使用、复制、修改原MIT代码库,随便你售卖还是开源,唯一需要遵循的原则就是必须声明你的软件使用了MIT协议。
五. 制作rocky 8.5和ubuntu 22.04 的安装教程,并结合xshell说明如何通过虚拟IP登入系统。
1.rocky 8.5安装教程
第一步创建虚拟机环境,打开VMware,点击创建新的虚拟机;选择好安装程序光盘映像文件位置,选择典型配置点击下一步;选择稍后安装操作系统点击下一步;客户机操作系统选择Linux,版本选择CentOS 8 64位点击下一步;为创建的虚拟机命名并选择安装位置点击下一步;指定磁盘容量,选择将虚拟机存储为单个文件点击下一步,点击完成。第二步安装rocky8.5,选择创建好的虚拟机环境,点击编辑虚拟机设置,内存选择2G,CPU选择2核,CD/DVD选择使用IOS映像文件,选择系统源文件位置点击确定;点击开启此虚拟机即进入安装界面,等待片刻进入选择语言页面,默认English即可,点击continue继续,进入配置页面,点击Time & Data把时区改为上海之后点Done即可,点击Software Selection,选择Minimal Install最小化安装之后Done即可,点击Network &Host Name,启用网络,点击把Off改成ON,更改hostname之后Done即可,点击Root Password,设置管理员密码,点击User Creation创建一个普通账户点Done,点Begin Installation开始安装,完成之后回车即可。
2.ubuntu 22.04安装教程
第一步同上,第二步安装ubuntu 22.04,选择创建好的虚拟机环境,点击开启此虚拟机,等待片刻,校验完成后即进入安装界面;默认选择英语回车,之后几个选项都默认即可,到Mirror address时,把网址改为国内的开源镜像网站,用Tab键把光标切换到Done,下两步依旧选择Done,之后选择继续Continue进入创建账号页面,创建完成后选择Done,之后点击空格键选中Install OpenSSH server,继续切换到Done两次即开始安装。最后一步安装安全补丁,选择Cancel update and reboot即完成。
3.xshell远程登录
通过ip a命令获取虚拟ip地址,在Xshell点击新建进入新建会话页面,主机处输入获取的虚拟ip地址,并设置名称、输入身份信息即可登录。
六.Tab键补全命令和路径的原理
自动补全依赖于bash-completion在/etc/bash_completion.d/路径下创建的自动补全脚本。
1.Tab键补全命令的原理
文件都存放在根目录下,Tab键在当前指定目录下寻找i节点信息补齐路径或者文件名
外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令命名的文件,第一次找到的命令即为要执行的命令
命令的子命令补全,需要安装bash-completion,
2.Tab键补全路径的原理
把用户给出的字符串当做路径开头,并在指定上级目录下搜索以指定的字符串开头的文件名,如果唯一,则直接补全,否则再次Tab给出列表
七. 内部命令和外部命令的区别,他们如何获取帮助的?
内部命令:由shell自带的,通过某种命令形式提供,用户登录后自动加载并常驻在内存中;通过help命令获取帮助。
外部命令:在文件系统路径下有对应的可执行程序文件,当命令执行时才从磁盘加载到内存,执行完毕后从内存中删除;通过man或者--help以及-h命令获取帮助
八. 说明以下操作的快捷键,1)快速跳转到行首、2)快速跳转到行尾、3)快速删除当前光标到行尾、4)快速删除光标到行首、5)如何快速取消执行命令。
Ctrl+a;Ctrl+e;Ctrl+k;Ctrl+u;u
九. 总结Linux目录结构并说明每个目录的主要用途。
linux目录被组织成一个单根倒置树结构,从根目录开始,根目录用"/"表示;
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:Binaries (二进制文件) , 所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序。
/sbin: Superuser Binaries (超级用户的二进制文件) ,存放的是系统管理员使用的系统管理程序;不能关联至独立分区,OS启动即会用到的程序。
/lib:Library(库) 的缩写,启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc :Etcetera(等等) ,配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
十. 总结常用通配符 *, ?, [a-z], [0-9], ~,{a..z},[:alnum:] [:alpha:] [:blank:],[:digit:] [:graph:] [:lower:],[:punct:] [:space:] [:upper:]等的含义。
十一. 文件系统根据路径查找到磁盘上文件的过程
文件系统依据给定的文件名称找到其i节点号,从而通过其相应i节点信息找到文件所在的磁盘块位置
十二. 总结硬链接和软链接的原理,并举例说明如何使用。
硬链接本质上是给文件取一个新的名字,实际上还是同一个文件,两者inode节点号相同,互为硬链接
软链接指向另一个文件,与原文件inode节点号不同,就像windows中的快捷方式
硬链接 ln file1 file2
软连接 ln -s file1 file2
十三. 介绍Linux命令执行流程
1.判断命令是否包含路径,在用户键入命令后,Linux会首先判断该命令是否包含了路径,如果命令已经存在有路径,则会直接读取该路径下的命令文件以执行,如果没有包含路径,则会进入第二步。
2.判断命令是否为别名,由于Linux系统支持别名,因此Linux要对命令是否为别名进行判断,如果发现键入的命令其实是一个别名 ,就需要找到该别名对应的命令。
3.判断命令内部命令或外部命令,在找到真正的命令后,bash解释器就需要判断该命令是内部命令还是外部命令。如果该命令是外部命令,则会返回该命令的路径,而如果该命令是内部命令,则返回XXX is a shell builtin;如果该命令是内部命令,则直接执行该命令即可,而如果该命令是外部命令,那么该命令在执行的时候就必须从磁盘中加载命令代码,当没有提供命令的绝对路径时则通过PATH环境变量查找后执行
十四. 总结标准输入,标准输出,标准错误输出的区别,并举例说明其功能。
标准输入(stdin):即指对一个应用程序或命令的输入,无论是从键盘输入还是从别的文件输入,默认接受来自终端窗口的输入。
标准输出(stdout):即指应用程序或命令产生的一些信息,默认为输出到屏幕或者说是输出到终端窗口。
标准错误输出(stderr):主要是为程序调试和系统维护目的而设置的,错误输出和标准输出分开可以让一些高级的错误信息不干扰正常的输出信息,从而方便一般用户的使用;默认为输出到屏幕或者说是输出到终端窗口。
上面的 std 表示 standard;在 BASH 中使用这些概念时将标准输入表示为0,标准输出表示为1,标准错误表示为2。简单讲,标准输入是命令的输入,默认指向键盘;标准输出是命令的输出,默认指向屏幕;标准错误是命令错误信息的输出,默认指向屏幕。输入、输出及标准错误输出主要用于 I/O 的重定向,就是说需要改变他们的默认设置;范例如:# ls > ls_result;# ls -l >> ls_result,这两个例子分别将 ls 命令的结果输出重定向到 ls_result 文件中和追加到 ls_result 文件中,而不是输出到屏幕上。">"就是输出(标准输出和标准错误输出)重定向的代表符号, ">>" 则表示不清除原来的数据而追加输出
十五. 用户,组,权限相关的一些命令及选项
1.用户
useradd命令,创建新的用户,格式:useradd 选项 用户名,
选项:-c comment 用户的注释信息;-d 指定用户家目录,如果此目录不存在,同时使用-m选项即可创建;-g 指定用户所属的主组;-G 指定用户所属的附加组;-s 指定用户的登录Shell;-u 指定用户的UID,如果同时有-o选项,则可以重复使用其他用户的标识号;-p指定加密的密码
usermod命令,修改用户属性,格式:usermod 选项 username;
选项:-u UID:更改UID;-g GID:更改主组;-G:更改附件组,会覆盖原有附加组,同时使用-a选项可保留原有附加组;-s:更改默认Shell;-l:更改用户名;-d:修改目录的任何现有的用户帐户;-c:添加注释字段;-m:从现有的家目录移动数据到新的目录;-L:锁定用户帐户。 这将锁定密码,所以我们不能使用该帐户--U:解锁用户帐户。 这将删除密码锁,并允许我们使用用户帐户;-e YYYY-MM-DD:指明用户账户过期日期;-f INACTIVE:设定宽限期
userdel命令,删除用户,格式:userdel 选项 用户名
选项:-r:删除用户的同时删除用户的家目录和邮箱;-f:强制删除用户
id命令,查看用的UID、GID等信息,格式:id 选项 用户名
选项:-u:显示UID;-g:显示GID;-G:显示附加组的ID;-n:显示用户、所属群组或附加群组的名称,需要配合前选项(ugG)使用
su命令,切换用户,格式:1)完全切换:su 选项 -用户名,登录式切换,会读取目标用户的配置文件,会切换家目录;不完全切换:su 选项 用户名,非登录式切换,不会读取目标用户的配置文件,不改变当前工作目录
选项:-l:同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境;-c 命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。
passwd命令,用于设置用户的认证信息,包括用户密码、密码过期时间等,格式:passwd 选项 用户名
选项:-d:删除密码,仅有系统管理者才能使用;-l:锁定指定用户;-u:解锁指定用户;-e:强制用户下次登录修改密码;-f:强制执行;-n mindays:指定最短使用期限;-x maxdays:指定最大使用期限;-w warndays:提前若干天开始告警;-i inactivedays:非活动期限;--stdin:从标准输入接受用户密码,ubuntu无此选项
chage命令,用于密码时效管理,可以修改帐号和密码的有效期限,格式:chage 选项 用户名
选项:-d:指定密码最后修改日期;-m:密码可以更改的最小天数,为零时代表任何时候都可以更改密码;-M:密码保持有效的最大天数;-W:密码过期前,提前收到警告信息的天数;-I:密码过期后的宽限期;-E:用户的有效期,0表示马上过期,-1表示永不过期;-l:列出用户以及密码的有效期,即显示密码策略
chown命令,修改文件的属主或属组,只需要修改属主时格式:chown 选项 OWNER 文件或目录;一并更改所有者和所属组时的格式:chown 选项 OWNER:GROUP 文件或目录;选项:-R,递归,表示连同子目录中的所有文件都更改所有者,此选项非常危险;--reference=RFILE,参考指定的属性来修改。chown 命令也支持只修改文件或目录的所属组,但修改所属组通常使用chgrp命令
chattr命令,设置文件特殊属性
chattr +i file:限制root账号删除或修改文件
chattr +a file:限制root账号删除或修改文件,但是可以追加内容
显示特殊属性命令:lsattr
2.组
groupadd命令,创建组,格式:groupadd 选项 组名
选项:-g:指定GID;-r:创建系统组,CentOS 6之前ID<500,CentOS 7以后ID<1000;
groupmod命令,修改组属性,格式:groupmod 选项 组名
选项:-n:修改组名;-g:修改GID
groupdel命令,删除组,格式:groupdel 选项 组名
选项:-f:force,强制删除,即使是用户的主组也能强制删除,但会导致无主组的用户不可用,无法登陆
gpasswd命令,修改组密码,修改附加组的成员关系,格式:gpasswd 选项 组名
选项:-a user:将user添加至指定组;-d user:从指定附加组中移除user;-A user1,user2,...:设置有管理权限的用户列表
groupmems命令,更改和查看组成员,格式:groupmems 选项 动作
选项:-g:--group groupname 更改为指定组 (只有root);-a:--add username 指定用户加入组;-d:--delete username 从组中删除用户;-p:--purge 从组中清除所有成员;-l, --list 显示组成员列表
groups命令,查询用户所在的组,格式:groups+用户名
显示每个输入的用户名所在的全部组,如果没有指定用户名则默认为当前进程用户
chgrp命令,修改文件的属组,格式:chgrp 选项 GROUP 文件或目录名
3.权限
常用权限
chmod命令,修改文件权限,使用数字修改文件权限格式:chmod 选项 权限值 文件名;使用字母修改文件权限格式:chmod who opt permission 文件或目录名(who即u或g或o或a,opt即+或-或=,permission即r或w或x)
umask命令,查看、更改umask值,指定在建立文件时预设的权限掩码,权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。范例:
[root@Rocky8 ~]#umask
0022
[root@Rocky8 ~]#umask -S
u=rwx,g=rx,o=rx
[root@Rocky8 ~]#umask -p
umask 0022
特殊权限
suid:作用于二进制可执行权限上,用户执行此程序时将继承此程序所有者的权限
chmod u+s file;chmod 4xxx file;chmod u-s
sgid:作用于二进制可执行文件上,用户执行此程序时将继承此程序所属组的权限;作用于目录上,此目录新建的文件会继承此目录的所属组
chmod g+s file;chmod 2xxx file;chmod g-s
Sticy:粘滞位,作用于目录上,此目录中的文件只能由所有者自己来删除
chmod o+s file;chmod 1xxx file;chmod o-s