Linux
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D31zcDh8-1681881672646)(D:\Typora\保存的图片\image-20230210091908931.png)]
Linux 系统启动过程
linux启动时我们会看到许多启动信息。
Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:
- 内核的引导。
- 运行 init。
- 系统初始化。
- 建立终端 。
- 用户登录系统。
内核引导
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
1.2Linux的目录结构:
1)linux只有一个根目录。/(pwd)
2)层级式的目录结构:
Linux 目录结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEBK8dcW-1681881672648)(D:\Typora\保存的图片\image-20230210100016671.png)]重点文件夹
root:该目录为该系统管理员目录,root是具有超级权限的用户
bin->usr/bin:存放系统预装的可执行程序,这里存放的可执行文件可以在系统的任何目录下执行。
usr是linux的系统资源目录,里面存放的都是一些系统可执行文件或系统以来的一些文件夹。
usr/local/bin:存放用户自己的可执行文件,同样这里存放的可执行文件可以在系统的任何目录下执行。
lib->usr/bin:这个目录存放着系统最基本的动态连接共享库,其作用类似于windows里的DDL文件,几乎所有的应用程序都需要用到这些共享库。
boot:这个目录存放启动linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
dev:dev时Device(设备)的缩写,该目录下存放的是linux的外部设备,llinux中的设备也是以文件的形式存放。
etc:这个目录存放所有的系统管理所需要的配置文件。
home: 用户的主目录,在linux中,每个用户都有一个自己的目录,一般该目录名以用户的账号命名,叫作用户的根目录,用户登录以后,默认打开自己的根目录。
mnt:系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
opt:存档额外安装的软件,相当于windows系统的program files目录。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nnzi6T2z-1681881672649)(D:\Typora\保存的图片\image-20230210100145102.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YksywJE8-1681881672649)(D:\Typora\保存的图片\image-20230210100748594.png)]
Linux操作权限
一、快速入门
更改文件权限 (chmod命令)
一般使用格式
chmod [可选项] <mode> <file...>
参数说明:
[可选项]
-c, --changes like verbose but report only when a change is made (若该档案权限确实已经更改,才显示其更改动作)
-f, --silent, --quiet suppress most error messages (若该档案权限无法被更改也不要显示错误讯息)
-v, --verbose output a diagnostic for every file processed(显示权限变更的详细资料)
--no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/'
--reference=RFILE use RFILE's mode instead of MODE values
-R, --recursive change files and directories recursively (以递归的方式对目前目录下的所有档案与子目录进行相同的权限变更)
--help 显示此帮助信息
--version 显示版本信息
[mode]
权限设定字串,详细格式如下 :
[ugoa...][[+-=][rwxX]...][,...],
其中
[ugoa...]
u 表示该档案的拥有者,
g 表示与该档案的拥有者属于同一个群体(group)者,
o 表示其他以外的人,
a 表示所有(包含上面三者)。
[+-=]
+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。
[rwxX]
r 表示可读取,
w 表示可写入,
x 表示可执行,
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
[file...]
文件列表(单个或者多个文件、文件夹)
范例:
设置所有用户可读取文件 a.conf
chmod ugo+r a.conf
或
chmod a+r a.conf
设置 c.sh 只有 拥有者可以读写及执行
chmod u+rwx c.sh
设置文件 a.conf 与 b.xml 权限为拥有者与其所属同一个群组 可读写,其它组可读不可写
chmod a+r,ug+w,o-w a.conf b.xml
设置当前目录下的所有档案与子目录皆设为任何人可读写
chmod -R a+rw *
数字权限使用格式
在这种使用方式中,首先我们需要了解数字如何表示权限。 首先,我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1 。此时其他的权限组合也可以用其他的八进制数字表示出来,
如:
rwx = 4 + 2 + 1 = 7
rw = 4 + 2 = 6
rx = 4 +1 = 5
即
若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7
若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为 4 + 2 = 6
若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5
上面我们提到,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :
chmod <abc> file...
其中
a,b,c各为一个数字,分别代表User、Group、及Other的权限。
相当于简化版的
chmod u=权限,g=权限,o=权限 file...
而此处的权限将用8进制的数字来表示User、Group、及Other的读、写、执行权限
范例:
设置所有人可以读写及执行
chmod 777 file (等价于 chmod u=rwx,g=rwx,o=rwx file 或 chmod a=rwx file)
设置拥有者可读写,其他人不可读写执行
chmod 600 file (等价于 chmod u=rw,g=---,o=--- file 或 chmod u=rw,go-rwx file )
更改文件拥有者(chown命令)
linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。
语法格式:
chown [可选项] user[:group] file...
使用权限:root
说明:
[可选项] : 同上文chmod
user : 新的文件拥有者的使用者
group : 新的文件拥有者的使用者群体(group)
范例:
设置文件 d.key、e.scrt的拥有者设为 users 群体的 tom
chown tom:users file d.key e.scrt
设置当前目录下与子目录下的所有文件的拥有者为 users 群体的 James
chown -R James:users *
二、Linux权限详解
Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。这也是Linux有别于Windows的机制,也是基于这个权限机制,Linux可以有效防止病毒自我运行,因为运行的条件是必须要有运行的权限,而这个权限在Linux是用户所赋予的。
Linux的文件权限有以下设定:
Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
Linux下权限的属组有 拥有者 、群组 、其它组 三种。每个文件都可以针对这三个属组(粒度),设置不同的rwx(读写执行)权限。
通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
十位权限表示
常见的权限表示形式有:
-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。
后九位解析: 我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。(后九位的前3位对应拥有者权限、4-6位对应群组权限、7-9对应其他组权限)
实际上,后九位每个位置的意义(代表某个属组的某个权限)都是固定的,如果我们将各个位置权限的有无用二进制数 1和 0来代替,则只读、只写、只执行权限,可以用三位二进制数表示为
r-- = 100
-w- = 010
--x = 001
--- = 000
转换成八进制数,则为 r=4, w=2, x=1, -=0(这也就是用数字设置权限时为何是4代表读,2代表写,1代表执行)
实际上,我们可以将所有的权限用二进制形式表现出来,并进一步转变成八进制数字:
rwx = 111 = 7
rw- = 110 = 6
r-x = 101 = 5
r-- = 100 = 4
-wx = 011 = 3
-w- = 010 = 2
--x = 001 = 1
--- = 000 = 0
十二位权限(Linux附加权限)
附加权限相关概念
linux除了设置正常的读写操作权限外,还有关于一类设置也是涉及到权限,叫做Linxu附加权限。包括 SET位权限(suid,sgid)和粘滞位权限(sticky)。
SET位权限:
suid/sgid是为了使“没有取得特权用户要完成一项必须要有特权才可以执行的任务”而产生的。
一般用于给可执行的程序或脚本文件进行设置,其中SUID表示对属主用户增加SET位权限,SGID表示对属组内用户增加SET位权限。
执行文件被设置了SUID、SGID权限后,任何用户执行该文件时,将获得该文件属主、属组账号对应的身份。
suid(set User ID,set UID)的意思是进程执行一个文件时通常保持进程拥有者的UID。然而,如果设置了可执行文件的suid位,进程就获得了该文件拥有者的UID。
sgid(set Group ID,set GID)意思也是一样,只是把上面的进程拥有者改成了文件拥有组(group)。
在许多场景下,使用suid 和 sgid 非常实用,但是不恰当地使用这些权限可能为系统带来安全风险。所以应该尽量避免使用SET位权限程序。(passwd 命令是为数不多的必须要使用“suid”的命令之一)。
SET位权限表示形式(10位权限):
如果一个文件被设置了suid或sgid位,会分别表现在所有者或同组用户的权限的可执行位上;如果文件设置了suid还设置了x(执行)位,则相应的执行位表示为s(小写)。但是,如果没有设置x位,它将表示为S(大写)。如:
1、-rwsr-xr-x 表示设置了suid,且拥有者有可执行权限
2、-rwSr--r-- 表示suid被设置,但拥有者没有可执行权限
3、-rwxr-sr-x 表示sgid被设置,且群组用户有可执行权限
4、-rw-r-Sr-- 表示sgid被设置,但群组用户没有可执行权限
设置方式:
SET位权限可以通过chmod命令设置,给文件加suid和sgid的命令如下(类似于上面chmod赋予一般权限的命令):
chmod u+s filename 设置suid位
chmod u-s filename 去掉suid设置
chmod g+s filename 设置sgid位
chmod g-s filename 去掉sgid设置
粘滞位权限:
粘滞位权限即sticky。一般用于为目录设置特殊的附加权限,当目录被设置了粘滞位权限后,即便用户对该目录有写的权限,也不能删除该目录中其他用户的文件数据。设置了粘滞位权限的目录,是用ls查看其属性时,其他用户权限处的x将变为t。 使用chmod命令设置目录权限时,+t、-t权限模式可分别用于添加、移除粘滞位权限。
粘滞位权限表示形式(10位权限):
一个文件或目录被设置了粘滞位权限,会表现在其他组用户的权限的可执行位上。如果文件设置了sticky还设置了x(执行)位,其他组用户的权限的可执行位为t(小写)。但是,如果没有设置x位,它将表示为T(大写)。如:
1、-rwsr-xr-t 表示设置了粘滞位且其他用户组有可执行权限
2、-rwSr--r-T 表示设置了粘滞位但其他用户组没有可执行权限
设置方式:
sticky权限同样可以通过chmod命令设置:
chmod +t <文件列表..>
1.3Linux的远程操作:
1)常用软件Xshell:linux的终端模拟软件。
2)Xftp:文件传输软件
2.vi和vim编辑器的基本使用
是Linux中的文本编辑器,用来在Linux中创建,查看或者编辑文本文件,就比方windows中的记事本一样。
基本指令:
创建目录:mkdir
进入目录:cd
查看目录下的文件:ls
创建,查看文本文件:vi(vim)+文件名
vi和vim的使用有三种模式:
**1.一般模式:**用vi或vim命令打开文件(vi(vim) test.txt),进入一般模式,可以查看文件内容,并且可以通过上下左右键移动光标,查看文件某一部分,但不能编辑。
**2.编辑模式:**在一般模式下,按i键或者a键,进入编辑模式,可以编辑文件内容,但不能保存编辑的内容;返回一般模式,按下Esc。
**3.命令行模式:**在一般模式下,按shift+:,进入命令行模式;输入q!+回车:不保存,强制退出;输入wq:保存并且退出。
vi和vim常用的快捷键:
1.复制粘贴当前行:在一般模式下,按yy,把光标行复制到剪切板;按p,把剪切板中的内容粘贴到光标所在的下一行;
2.复制当前行往下5行:在一般模式下,按5yy,把光标所在行往下5行复制到剪切板;
3.在文本文件中查找关键字:在命令行模式,输入/关键字+回车,按n表示光标查找下一个关键字;
4.删除光标所在当前行:在一般模式下,按dd,删除光标所在行;
5.删除光标所在行往下5行:在一般模式下,按5dd;
6.撤销上次编辑的内容:在一般模式下,按u;
7.**显示行号:**在命令行模式下,设置文件的行号,取消文件的行号;(:set nu)和(:set nonu)
3.Linux中的用户管理–重点
1)任何使用linux的系统资源的用户,必须使用一个合法的账号和密码;账号和密码一般都是向系统管理员申请。
root是linux系统安装时默认创建的系统管理员账号,由root创建普通账号。
2)添加用户: useradd +用户名;创建一个用户后,在/home下会自动创建该用户的根目录,目录名称默认跟用户名相同;在linux中任何一个用户都至少属于一个组,新建用户时如果不指定组,则会新建一个组,组名与用户名相同。
3)给用户设置密码: passwd +用户名。
**4)删除用户: ** userdel +用户名;删除用户的同时级联删除用户的主目录,userdel -r 用户名。
5)查看用户信息: id+ 用户名
**6)切换用户: ** su +用户名
4.Linux中的组管理–重点
1)linue中的组相当于角色的该奶奶,可以对有共性的用户进行统一管理;每一个用户至少属于一个组,不能独立于组存在,也可以属于多个组;新建用户时如果不指定组,则会新建一个组,组名与用户名相同。
2)添加组:groupadd 组名
3)删除组:groupdel 组名
4)把用户添加到组中:gpasswd -a 用户名 组名
5)把用户从组中移除:gpasswd -d 用户名 组名
6)创建用户时,指定所属的组(主组):useradd -g 组名 用户名
5.Linux中的帮助命令
1) man:用来查看linux系统手册上的帮助信息,man+命令;分屏显示,按回车翻一行,按空格翻一页,按q退出查看。
2)help:用来查看命令的内置帮助信息,help+命令
6.Linux中的文件和目录操作的命令
1)**pwd:**查看当前所在目录
2)查看当前或指定目录下所有子目录或者文件列表:ls,
**ls -l/home:**以列表的形式显示,
**ls -a/home:**显示指定目录下所有·的子目录和文件(包括虚拟的目录) ,
**ls -al/home:**以列表形式显示指定目录下所欲的子目录和文件(包括虚拟的目录)
3)cd:切换目录,例:cd 目录名;
**绝对目录:**以盘符开始的目录叫绝对目录;
**相对目录:**以目录名开始的目录叫相对目录;
**cd … 😗*返回上一级目录
4)mkdir:创建目录
5)rmdir:删除一个空目录
6)**touch:**创建一个或多个空文件,touch 文件名列表(文件名之间用空格隔开)
7)**cp:**复制文件,cp+source(源)+dest(目标),复制目录:cp -r 源目录 目标目录
8)**rm:**删除文件或目录,rm 文件名或目录名(提示删除);
rm -f 文件名或目录名(强制删除)
9)**mv:**移动目录或文件,mv+source(源)+dest(目标)
查看文件
10)**cat :**查看文件内容,cat 文件名;cat -n 文件名(显示行号)
11)**more:**分页查看文件内容,more 文件名;一次性加载文件所有内容到内存。
12)**less:**分页查看文件内容,less 文件名;分页加载文件所有内容到内存。
13)**head:查看文件的头10行;head 文件名;head -n 5 文件名
14)tail:**查看文件的尾10行;tail 文件名;tail -n 5 文件名
15)echo:输出系统变量或者常量的值到命令行终端;
例:echo JAVA_HOME
">"把前一个查看命令的结果输出到指定的文件中,查看命令+>文件名
7.Linux中关于日期和时间的操作命令
date:查看或者设置系统的时间或者日期
date +%Y :系统当前的年份
date +%m:系统当前的月份
date +%d:系统当前的日期
date ‘+%Y-%m-%d %H:%M:%S’:按照yyyy-MM-dd HH:mm:ss格式显示
date -S ‘2021-3-7 15:25:30’ :设置当前的系统时间
8.Linux中关于搜索文件或者目录的命令
find 关键字,find *.txt:搜索当前目录下的txt文件;
find /etc -size +5M:搜索etc下所有大于5M的文件;
find /user 用户名 :搜索etc下所有的所有者是该用户名的文件和目录;
9.Linux中关于压缩和解压的命令
1)压缩或者解压单个文件(只能操作单个文件,不能操作目录):
**gzip:**压缩单个文件,自动生成一个.gz的压缩包,并且把原来的文件删除;
**gunzip:**解压单个文件
2)压缩或者解压多个文件:
zip 文件或者目录列表,可以选择目标压缩包名称(通常使用.zip压缩包);
unzip 压缩包名(.zip),将指定的.zip压缩包解压到当前目录下;
unzip 压缩包名 -d 文件名:压缩到指定文件
3)压缩或者解压多个文件:tar 目标压缩包名称(xxx.tar.gz)
tar -c+xxx.tar.gz+文件或者目录列表:打包或者解压
tar -x:解压
tar -zcvf xxx.tar.gz 文件或目录列表
tar -zxvf xxx.tar.gz -c 解压到所在的目录名
10.Linux中文件与组的关系
1)文件或者目录通过组来控制哪些用户可以对它进行那些操作,即文件或者目录的访问权限;在文件或目录看来,linux系统中所有的用户分为三类:
所有者:默认情况下,文件或者目录的所有者都是创建者(可以修改)。
同组用户:跟文件或目录属于用一个组的用户。
其他组用户:既不是文件或者目录的所有者,也不是同组用户。
2)修改文件或者目录的所有者: chown 新的所有者 文件名;chown 新的所有者:新的组 文件名。
3)修改文件或者目录的所在组:chgrp 新的组 文件名或者目录名
13.Linux中的进程管理
线程:一个程序的线路
进程:一个程序的执行,一个进程占用一个端口
查看进程:ps(只会显示应用进程);
ps -e(显示所有进程);
ps -ef(以全格式的形式显示所有进程)
14.Linux中的服务管理
1)服务是支持linux运行的一些必要程序,本质上也是进程,叫守护进程,守护进程默默运行在后台,为应用程序提供必要支持,比如:sshd,防火墙等。
2)操作服务:systemctl [选项] 服务名称(选项:start, stop,reload,status,enable)
15.Linux中软件包的管理
1)RPM包:一个linux的软件包的打包和安装工具,它操作的软件包都是.rpm结尾。
2)使用RPM
查看当前系统中已经安装的rpm软件包:rpm -qa
卸载rpm软件包:rpm -e
安装rpm包:rpm -ivh xxx.rpm
3)**YUM包管理:**是一种基于RPM的软件包管理工具,它能够从指定的服务器上自动下载rpm包并自动安装,可以自动处理软件包之间的依赖关系。
查看当前系统中已经安装的rpm软件包:yum list install
卸载rpm软件包:yum remove
ps -e(显示所有进程);
ps -ef(以全格式的形式显示所有进程)
14.Linux中的服务管理
1)服务是支持linux运行的一些必要程序,本质上也是进程,叫守护进程,守护进程默默运行在后台,为应用程序提供必要支持,比如:sshd,防火墙等。
2)操作服务:systemctl [选项] 服务名称(选项:start, stop,reload,status,enable)
15.Linux中软件包的管理
1)RPM包:一个linux的软件包的打包和安装工具,它操作的软件包都是.rpm结尾。
2)使用RPM
查看当前系统中已经安装的rpm软件包:rpm -qa
卸载rpm软件包:rpm -e
安装rpm包:rpm -ivh xxx.rpm
3)**YUM包管理:**是一种基于RPM的软件包管理工具,它能够从指定的服务器上自动下载rpm包并自动安装,可以自动处理软件包之间的依赖关系。
查看当前系统中已经安装的rpm软件包:yum list install
卸载rpm软件包:yum remove
安装rpm包:yum install