Linux教程

Linux基础

本文主要是介绍Linux基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

        

        # 今天带来Linux入门的一些基础的笔记,科班出身的同学们,Linux已经成为了必修课了,下面我带来关于Linux的相关入门知识以及Linux简单的介绍!

Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
————————————————
版权声明:本文为CSDN博主「一杯码农」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38407447/article/details/90581454

Linux概述
1.1 Unix历史
我们要讲的不是Linux吗?怎么蹦出个Unix,虽然它和Linux长得有点像。因为它们确实有很深的渊源!
Unix 是在1969年美国贝尔实验室的 肯.汤普森开发出来的一款操作系统,什么是操作系统?
大家正在玩的 Windows 和 Max OS就是两个操作系统。操作系统是用户和计算机的接口,同时也是计算机硬件和应用程序的接口,
也就是说我们和计算机打交道以及计算机底层硬件和应用程序打交道都是通过操作系统。如下所示:

而我们所说的Unix也是一个操作系统,其源代码大部分都是用C语言写的。它是一个强大的多用户、多任务操作系统,
而且支持多种处理器架构。在1984年,Unix用户协会颁发了使用标准。
后来IEEE为此制定了POSIX标准(即IEEE1003标准)国际标准名称为ISO/IEC9945,它通过一组最小的功能定义了
在UNIX操作系统和应用程序之间兼容的语言接口。这个标准很重要,后面很多系统的开发都是遵循这个标准来的。


虽然Unix系统这么好用,但是很不幸,它是一个对源代码实行知识产权保护的传统商业软件,也就是说Unix系统
源代码不开源,而且Unix系统也是一个收费软件。这也直接导致了Linux系统的诞生。

1.2 Linux历史
UNIX 最初免费发布,在1990年,UNIX 在服务器市场尤其是大学校园成为主流操作系统,许多校园都有 UNIX 主机,
当然还包括一些研究它的计算机系的学生。这些学生都渴望能在自己的电脑上运行 UNIX 。。不幸的是,从那时候开始,
UNIX 开始变得商业化,它的价格也变得非常昂贵。而唯一低廉的选择就是 MINIX ,这是一个功能有限的类似 UNIX 的
操作系统,作者 Andrew Tanebaum 开发它的目的是用于教学。

1991 年 10 月,Linus Torvalds(Linux 之父)在赫尔辛基大学接触 UNIX ,他希望能在自己的电脑上运行一个类似的操作系统。
可是 UNIX 的商业版本非常昂贵,于是他从 MINIX 开始入手,而 Linus Torvalds 对Minix不是很满意,于是决定自己编写软件。
他以学生时代熟悉的Unix作为原型,在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果
通过互连网与其他同学共享,主要用于学术领域。他第一次发行的版本很快吸引了一些黑客。尽管最初的 Linux 并没有多少用处,
但由于一些黑客的加入使它很快就具有了许多吸引人的特性,甚至一些对操作系统开发不感兴趣的人也开始关注它。每当出现新
问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。得注意的是Linux并没有包括Unix源码,
它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。

命令格式: 命令 [选项] [参数]

ls -a -l -lh -ld

Linux操作系统

快捷键

 # ctrl shift +
 # ctrl -
 # ctrl shift c
 # ctrl shift v
 # ctrl l / clear
 # ctrl shift t
 # alt 1
 # ctrl alt ←
 # ctrl c
 # ctrl d
 # ctrl z
 ​
 ​
 ctrl w 删除前面单词
 ctrl d 删除后面字母
 ​
 # ctrl alt f1       //切换图形化
 # ctrl alt f2-f6     //切换字符
 ​

su,su -

 # [centos@localhost ~]$ su user1
 Password: 
 [user1@localhost centos]$
 ​
 # [centos@localhost ~]$ su - user1
 Password: 
 Last login: Tue Sep 14 00:51:14 PDT 2021 on pts/0
 [user1@localhost ~]$ 
 ​

前导符

 [root@loaclhost~] #
 root:用户名
 @:间隔符
 loaclhost:主机名
 ~:表示当前工作目录,~表示家目录
 #:当前用户身份,#代表管理员,$代表普通用户

tab

命令补全,常用tab键,如果按一次出不来就按两次,此时表示命令不唯一,如果超过两次还没有出来就表示命令错误。

man

man + 命令 ----- man ls

history

 # history
 !num ----  !60
 !cmd ----  !rm

alias

 [root@localhost ~]# alias wk='pwd'
 ​
 [root@localhost ~]# alias 
 alias cp='cp -i'
 alias egrep='egrep --color=auto'
 alias fgrep='fgrep --color=auto'
 alias grep='grep --color=auto'
 alias l.='ls -d .* --color=auto'
 alias ll='ls -l --color=auto'
 alias ls='ls --color=auto'
 alias mv='mv -i'
 alias rm='rm -i'
 alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
 alias wk='pwd'
 ​
 [root@localhost ~]# wk
 /root
 ​
 [root@localhost ~]# pwd
 /root

作业:将自己名字(全称拼音)设置成history,并查看

基本命令

ls

 Linux下一切皆文件
 ​
 命令格式:
     ls
 # ls //显示当前路径下的文件
 ​
 命令格式:
     ls [OPTION]
     
 # ls -a   //显示所有文件(包含以.或..开头的隐藏文件)
 # ls --all
 # ls -l  //长格式显示文件信息
 -rw-------. 1 root root 2770 Sep  7 01:36 anaconda-ks.cfg
 文件类型:
     -:普通文件(黑色)
     d:目录/文件夹(蓝色)
     l:链接文件(天蓝色)
 rw-------:文件权限
 1:节点数
 root:用户名
 root:组名
 2770:文件大小
 Sep  7 01:36:最后一次修改时间
 anaconda-ks.cfg:文件夹
 ​
 # ls -lh 人性化显示文件大小,必须配合-l使用
 # ls -ld 显示自身属性,必须配合-l使用
 ​
 ​
 命令格式:
     ls [选项]... [FILE] 
     
 查看文件和文件夹的长格式信息(文件夹的长格式信息要多加一个d)
 [root@localhost ~]# ls -l anaconda-ks.cfg 
 -rw-------. 1 root root 2770 Sep  7 01:36 anaconda-ks.cfg
 [root@localhost ~]# ls -l Documents 
 total 0
 [root@localhost ~]# ls -ld Documents 
 drwxr-xr-x. 2 root root 6 Sep 14 22:32 Documents
 ​
 # pwd(print working directory)   打印当前工作目录

绝对、相对路径

 绝对:从/开始,具有唯一性
     湖北省武汉市洪山区光谷广场
 相对:从半路开始
     洪山区光谷广场

cd 更改目录

  cd  (change directory)
 ​
 # cd /etc/sysconfig/network-scripts/
 # cd ..  返回上一层目录
 ​
 # cd /tmp
 # cd /var
 # cd /etc
 # cd - 返回上一次进入的目录(相当于遥控器的返回键)
 1    115     117
 /tmp  /var   /etc   cd
 ​
 # cd 返回到家目录

cat、more、less 查看文件内容

 cat 只适合查看短文件
 命令格式:cat [选项] 文件名
 # cat /etc/passwd
 ​
 命令格式:more 文件名
 more 只能下翻,不能上翻
 # more /etc/passwd
 ​
 命令格式:less 文件名
 less 既可上翻,又可下翻
 # less /etc/passwd

head、tail 查看文件内容

 命令格式:head [选项] 文件名
 # head /etc/passwd
     # head  -n 3/etc/passwd
     
 命令格式:tail [选项] 文件名
 # tail /etc/passwd
     # tail -n /etc/passwd

touch:1.创建文件;2.刷新时间戳

 命令格式:touch 文件名
 [root@localhost ~]# touch 1.txt
 [root@localhost ~]# ls -l 1.txt 
 -rw-r--r--. 1 root root 0 Sep 15 01:37 1.txt
 ​
 [root@localhost ~]# touch 1.txt
 [root@localhost ~]# ls -l 1.txt 
 -rw-r--r--. 1 root root 0 Sep 15 01:39 1.txt

mkdir:创建文件夹

(建议创建在/下面)

 命令格式: mkdir  [选项] 目录名
 # mkdir /test2
 # mkdir /test2/test20
 # ls -ld /test2/test20/
 ​
 # mkdir /test3/test30    || no
 # echo $?
 # mkdir -p /test3/test30  || yes

rmdir:删除空文件夹

 命令格式:mkdir 文件名
 [root@localhost /]# ls /test2/test20/
 [root@localhost /]# ls /test3/test30/
 [root@localhost /]# ls /test40/
 [root@localhost /]# rmdir /test2
 rmdir: failed to remove ‘/test2’: Directory not empty
 [root@localhost /]# rmdir /test2/test20/
 [root@localhost /]# rmdir /test40

rm

-r 递归

-f 强制

 命令格式:rm [选项] 文件名
 [root@localhost ~]# ls /test3/test30
 [root@localhost ~]# rm /test3
 rm: cannot remove ‘/test3’: Is a directory
 [root@localhost ~]# rm -f /test3
 rm: cannot remove ‘/test3’: Is a directory
 [root@localhost ~]# rm -r /test3
 rm: descend into directory ‘/test3’? y
 rm: remove directory ‘/test3/test30’? y
 rm: remove directory ‘/test3’? ^C
 [root@localhost ~]# rm -rf /test3/
 [root@localhost ~]# echo $?
 0

date

 [root@localhost ~]# date
 Wed Sep 15 01:40:00 PDT 2021
 ​
 date  月日时分年点秒
 [root@localhost ~]# date 091516412021.50
 Wed Sep 15 16:41:50 PDT 2021
 [root@localhost ~]# date
 Wed Sep 15 16:41:55 PDT 2021

dd

案例1:cpu爆满

 [root@localhost ~]# dd if=/dev/zero of=/dev/null
 [root@localhost ~]# top

案例2:制作指定大小的文件

[root@localhost ~]# dd if=/dev/zero  of=4M bs=2M count=2

6M(bs大小)  8M(数量) 10M

[root@localhost ~]# dd if=/dev/zero  of=6M bs=6M count=1

[root@localhost ~]# dd if=/dev/zero  of=8M bs=4M count=2

[root@localhost ~]# dd if=/dev/zero  of=10M bs=5M count=2

echo回显

[root@localhost ~]# echo "123"
123
[root@localhost ~]# echo "456"
456
[root@localhost ~]# echo 456

cp (copy)复制

默认复制文件

 命令格式:
     cp [选项] 源文件  目标文件
 [root@localhost ~]# cp 2M /tmp/ 
     
 [root@localhost ~]# cp test1 /mnt/
 cp: omitting directory ‘test1’
 [root@localhost ~]# 
 [root@localhost ~]# cp -r test1 /mnt/
 ​
 [root@localhost ~]# echo "123456" > 1.txt
 [root@localhost ~]# echo "456" > 2.txt
 [root@localhost ~]# cat 2.txt 
 456
 [root@localhost ~]# cp 1.txt 2.txt
 cp: overwrite ‘2.txt’? y
 [root@localhost ~]# cat 2.txt 

mv(remove)

 命令格式:
     mv 源文件  目标文件
 [root@localhost ~]# mv 2M /mnt
 [root@localhost ~]# ls
 1.txt            Desktop    original-ks.cfg  test1
 2.txt            Documents  Pictures         Videos
 4M               Downloads  Public
 anaconda-ks.cfg  Music      Templates
 ​
 [root@localhost ~]# ls
 1.txt            Desktop    original-ks.cfg  test1
 2.txt            Documents  Pictures         Videos
 4M               Downloads  Public
 anaconda-ks.cfg  Music      Templates
 [root@localhost ~]# mv 4M /mnt/10M

破解密码

1.重启虚拟机
2.按↑↓键暂停到启动界面吗,按e进入启动程序
3.找到linux16,并按end跳到行尾,添加rd.break
4.按ctrl x进入系统
5.mount -o remount,rw /sysroot    //以读写方式重新挂载系统
6.chroot /sysroot				  //切换到/sysroot
7.echo "123456" | passwd --stdin root   //设置root的密码为123456
8.touch /.autorelabel             //给selinux打上下文关系标签
9.exit							  //退出
10.reboot						  //重启

|(管道符):将左边的执行结果传到右边

wc统计

命令格式:wc [选项] 文件名
	-l 统计行数
	-c 统计字符数
	-w 统计单词

grep:过滤

命令格式:grep 关键字  文件名
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@localhost ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# grep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
centos:x:1000:1000:Centos7:/home/centos:/bin/bash
1.	vim 1.txt
2.	i
3.	输入内容
4.	esc
5.	:wq

原文件:
[root@localhost ~]# cat 1.txt 
123  we r tt uy u
root

#root
ROOT
-----------------------------------------------------
-i 忽略大小写
[root@localhost ~]# grep root 1.txt 
root
#root
[root@localhost ~]# grep -i root 1.txt 
root
#root
ROOT
-----------------------------------------------------
-v 取反
[root@localhost ~]# grep -v root 1.txt 
123  we r tt uy u

ROOT
-----------------------------------------------------
^$ 过滤空行
[root@localhost ~]# grep ^$ 1.txt 

-----------------------------------------------------
[root@localhost ~]# grep -v ^$ 1.txt 
123  we r tt uy u
root
#root
ROOT
----------------------------------------------------
[root@localhost ~]# grep -v "^$|^#" 1.txt 
123  we r tt uy u
root

#root
ROOT
[root@localhost ~]# grep -Ev "^$|^#" 1.txt 
123  we r tt uy u
root
ROOT
1.关键字
2.^关键字
3.关键字$
4.-i
5.-v
6.^$  -v

作业:

	1.统计root家目录下有多少文件
	[root@localhost ~]# ls | wc -l
	11
	
​   2.统计anaconda-ks.cfg文件有多少单词和字符
	[root@localhost ~]# wc -w anaconda-ks.cfg 
	283 anaconda-ks.cfg
	[root@localhost ~]# wc -c anaconda-ks.cfg 
	2770 anaconda-ks.cfg

​   3.过滤出/etc/shadow文件下带centos的行
	[root@localhost ~]# grep centos /etc/shadow
	centos:$1$c1ZA1AN5$lMitJP.Gyltx2Vo8on8NP0:18877:0:99999:7:::

​	4.过滤出/etc/shadow文件下以centos开头的行
	[root@localhost ~]# grep ^centos /etc/shadow
	centos:$1$c1ZA1AN5$lMitJP.Gyltx2Vo8on8NP0:18877:0:99999:7:::

基本命令作业

1.将环境的主机名改为你的姓名,如wangke
2.进入/tmp目录并显示当前工作目录
3.查看/etc/group文件的前3行和后5行
4.在/root下创建10.txt和100.txt,并用长格式显示文件信息
5.修改系统时间,与windows时间保持一致
6.创建文件夹qwer,并在qwer下创建qaz的文件夹
7.在/qwer/qaz下面创建xinchuang20303-4的文件
8.删除qwer目录
9.创建wangke文件夹,并删除
10.将/root下的10.txt复制到/tmp下
11.将/root下的100.txt3到/mnt下并重命名为200.txt
12.过滤出/etc/login.defs的空行和注释行
13.破解密码,将系统密码改为qwer,(把输入的命令截图)

参考答案

 # cd
 # head -n 3 /etc/group
 # tail -n 5 /etc/group
 # pwd
 # touch {10,100}.txt
 # ls
 # ls -l 10.txt
 # ls -l 100.txt
 # date
 # date 100613532021.45
 # date
 # mkdir /qwer/qaz
 # mkdir -p /qwer/qaz
 # touch /qwer/qaz/xinchuang20303-4
 # cd /qwer/qaz/
 # ls
 # rm -rf /qwer/
 # cd
 # mkdir /wangke
 # rmdir /wangke/
 # ls
 # ls | grep 10/txt
 # ls | grep 10.txt
 # cp 10.txt /tmp/
 # cd /tmp/
 # ls | grep 10.txt
 # cd
 # mv /root/100.txt /mnt/200.txt
 # pwd
 # ls | grep 100.txt
 # cd /mnt/
 # ls | grep 200.txt
 # cd
 # grep "^$|^#" /etc/login.defs
 # grep -E "^$|^#" /etc/login.defs
 # grep -E -v "^$|^#" /etc/login.defs
 # history -a

通配符

*:匹配一个或多个任意字符

 [root@wangke mnt]# ls
 1.txt   a.txt  b.txt
 ab.txt  A.txt  B.txt
 [root@wangke mnt]# ls *.txt
 1.txt   a.txt  b.txt
 ab.txt  A.txt  B.txt

?:匹配单个字符

 [root@wangke mnt]# ls ?.txt
 1.txt  A.txt  B.txt
 a.txt  b.txt
 [root@wangke mnt]# ls ??.txt
 ab.txt

[]:匹配[]内的任意单个字符

 [root@wangke mnt]# ls [abc].txt
 a.txt  b.txt

[^]、[!]:不匹配[]的任意单个字符

 [root@wangke mnt]# ls
 1.txt   a.txt  b.txt
 ab.txt  A.txt  B.txt
 [root@wangke mnt]# ls [ac].txta.txt
 [root@wangke mnt]# ls [!ac].txt
 1.txt  A.txt  b.txt  B.txt
 [root@wangke mnt]# ls [^ac].txt
 1.txt  A.txt  b.txt  B.txt

{}

{a..f}:a到f
[root@wangke mnt]# touch {a..f}.txt
[root@wangke mnt]# ls
a.txt  b.txt  c.txt  d.txt  e.txt  f.txt

{A,C}:A和C
[root@wangke mnt]# touch {A,C}.txt
[root@wangke mnt]# ls
a.txt  b.txt  C.txt  e.txt
A.txt  c.txt  d.txt  f.txt

vim:创建、查看、编辑文件

vi和vim的区别

vim的vi的升级版
vim有高亮显示

vim的三种模式

命令模式:直接用vim打开文件就是命令模式,标识符:1.光标闪动,2.左下角有文件名、行数、字符数
输入模式:按aio任意字符即可进入输入模式,标识符:输入/中,insert/英文
末行模式:最后一行输入保存退出内容,标识符:”:(冒号)“

三种模式的切换

命令模式 aio ---->输入模式
		<-----Esc
		
命令模式  :------>末行模式
		<------Esc

aio

命令模式
	a:光标所在字符后面输入
	A:光标所在行行尾输入
	I:光标所在行行首输入
	i:光标所在字符前面输入
	o:光标所在行下一行输入
	O:光标所在行上一行输入

保存、退出

末行模式
	w(保存)
	q(退出)
	wq/x(保存退出)
	!表示强制
命令模式
	ZZ(大写)(保存退出)

光标的移动

# vim /etc/passwd
命令模式
	h:左
	j:下
	k:上
	l:右
上下左右方向键

行内跳转

命令模式
	^/home:到行首
	$/end:到行尾
	w:单词跳转

行间跳转

命令模式	
	gg:跳转到首行
	G:跳转到尾行
	3gg:跳转到第3行
末行模式
	:20:跳转到到第20行
	:%:跳转到最后一行

页面跳转

pageup:向上翻页
pagedown:向下翻页

复制

命令模式
	yy:复制光标所在行
	2yy:复制光标所在的2行,包含光标所在行
	yw:复制单词
末行模式
	:3,6y:复制3到6行
	:%:复制全文
	:7y:复制第7行

粘贴

命令模式
	p(小写):光标下一行粘贴
	P(大写):粘贴到光标上一行

apache网站

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
:set nu
G
ww
dw
a
将ONBOOT=NO改为ONBOOT=yes

[root@localhost ~]# systemctl restart network


1.ping通百度
2.安装软件
	[root@localhost ~]# yum repolist 
	[root@localhost ~]# yum install -y httpd
3.关闭防火墙
	[root@localhost ~]# systemctl stop firewalld.service 
4.关闭selinux
	[root@localhost ~]# setenforce 0
5.开启服务
[root@localhost ~]# systemctl restart httpd

6.自定义网站
[root@localhost ~]# echo 123456 > /var/www/html/index.html

删除

命令模式
dd:删除光标所在行
dw:删除单词
5dd:删除5行(包含光标所在行)
x/del:删除光标所在字符
D:删除光标所在行后半部分的字符(包含光标所在字符)
dgg:删除光标之前的所有行
dG:删除光标之后的所有行

末行模式:
:4d:删除第4行
:1,9d:删除1到9行
:%d:删除全文

撤回

命令模式
u:一步步撤回

查找

命令模式
/root:查找root
	n:往下查找
	N:往上查找
?root:
	n:往上查找
	N:往下查找

行号

末行模式
:set nu
:set nonu
:noh:取消高亮

替换

末行模式
:s/root/qq   将光标所在行的第一个root替换为qq
:s/root/qq/g 将光标所在行的所有root都替换为qq
:1,3s/root/qq/g 将1到3行的所有root都替换为qq
:%s/root/qq/g

批量注释

1.Ctrl v  进入可视化块模式
2.选中你要注释的行
3.按I(大写)
4.按#
5.esc(两下)

取消批量注释

1.ctrl v
2.选中你要取消注释的行
3.按d

读入、写入

末行模式
:r /etc/hosts   将/etc/hosts文件的内容读入当前文件里面光标所在行下一行

:w /tmp/2.txt  将此文件内容另存为到/tmp/2.txt文件里面

vim练习

1.创建1.txt并在里面写上两行内容(自定义)
2.将/etc/hosts文件内容读入此文件
3.将此文件另存为到/mnt/qq.txt

自动设置行号

1.vim /etc/vimrc
2.G 
3.o
添加set number

管理本地用户和组

1.用户分类
	root:0
	普通用户
		RHEL6:500
		RHEL7:1000
	系统用户(程序用户)
1.UID1000
2。home
shell

useradd:创建用户

root:x:0:0:root:/root:/bin/bash
root:用户名
x:密码占位符
0:uid
0:gid
root:描述信息
/root:家目录
/bin/bash:登录shell(/bin/bash允许用户登录,/sbin/nolgin不允许用户登录)
命令格式:
useradd [选项] 用户名
[root@localhost ~]# useradd user1
[root@localhost ~]# tail -n 1 /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash

-u 指定uid
localhost ~]# useradd -u 1010 user3
user3:x:1010:1010::/home/user3:/bin/bash

-d 指定家目录
[root@localhost ~]# useradd -d /home/qq user4
[root@localhost ~]# tail -n 3 /etc/
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1010:1010::/home/user3:/bin/bash
user4:x:1011:1011::/home/qq:/bin/bash

-s 指定登录shell
[root@localhost ~]# useradd -s /sbin/nologin user5
[root@localhost ~]# tail  -n 1 /etc/passwd
user5:x:1012:1012::/home/user5:/sbin/nologin

验证:
[root@localhost ~]# su - user5
This account is currently not available.

-c 指定描述信息
[root@localhost ~]# useradd -c testuser user6
[root@localhost ~]# tail  -n 1 /etc/passwd
user6:x:1013:1013:testuser:/home/user6:/bin/bash


-g 将用户加入到主组(1个)
id 查看用户信息

[root@localhost ~]# groupadd group1
[root@localhost ~]# groupadd group2
[root@localhost ~]# useradd -g group1 user7
[root@localhost ~]# id user7
uid=1014(user7) gid=1014(group1) 组=1014(group1)
[root@localhost ~]# id user6
uid=1013(user6) gid=1013(user6) 组=1013(user6)
[root@localhost ~]# 

-G 将用户加入到附加组
[root@localhost ~]# useradd -G group2  user8
[root@localhost ~]# id user8
uid=1015(user8) gid=1016(user8) 组=1016(user8),1015(group2)

useradd里面的-u是指定uid,-g将用户加入到主组,-G将用户加入到附加
groupadd里面的-g才是指定gid

练习题目

创建组sysadm
创建用户harry,natasha,tom
	要求harry,natasha的附加组为sysadm
	要求tom用户的登陆shell为非交互式shell
	三个用户的密码为redhat
	
	
创建用户user100
	1.描述信息为ptyh
	2.家目录为/home/wx
	3.uid为6666
	4.登录shell为/sbin/nologin
	
[root@localhost ~]# useradd -c ptyh -d /home/wx -u 6666 -s /sbin/nologin user100
[root@localhost ~]# tail -n 1 /etc/passwd
user100:x:6666:6666:ptyh:/home/wx:/sbin/nologin

usermod:修改用户

[root@localhost ~]# usermod -c testc -u 1515 -d /qwer c
[root@localhost ~]# tail -n 1 /etc/passwd
c:x:1515:1000:testc:/qwer:/bin/bash
[root@localhost ~]# id c
uid=1515(c) gid=1000(c) 组=1000(c),10(wheel)
[root@localhost ~]# groupadd group1
[root@localhost ~]# groupadd group2
[root@localhost ~]# usermod -g group1 -G group2 c
[root@localhost ~]# id c
uid=1515(c) gid=1001(group1) 组=1001(group1),1002(group2)
[root@localhost ~]# 

-u
-c
-g
-G
-s
-d

useradd user1
echo “123” | passwd --stdin user1

-L:锁定
[root@localhost ~]# usermod  -L user1
[root@localhost ~]#

-U:解锁
[root@localhost ~]# usermod  -U user1
解锁之后可以登录
[root@localhost ~]# su - c
su: 警告:无法更改到 /qwer 目录: 没有那个文件或目录
[c@localhost root]$ su - user1
密码:
[user1@localhost ~]$

userdel:删除用户

-r 递归删除(从用户邮箱删除)
练习:
	1.创建user2
	2.分别检查3个文件中是否有user1和user2  (/etc/passwd  /etc/shadow  /etc/group   cd /var/spool/mail ----- ls)
	3.userdel  user1  -----重复第2步  ----- 只能从3个文件中将用户删除,并不能删除邮箱(路径)---rmdir(空)---rm -rf 文件和目录
	4.userdel -r user2 ----重复第2步  -----删除更加干净

groupadd:创建组

 -g 指定gid
 [root@localhost ~]# groupadd -g 6666 group4
 [root@localhost ~]# tail -n 3 /etc/group
 group2:x:1002:c
 group3:x:1003:
 group4:x:6666:

groupmod:修改组

 -g 修改gid
 [root@localhost ~] # groupmod -g 7777 group4
 [root@localhost ~]# tail -n 3 /etc/group
 group2:x:1002:c
 group3:x:1003:
 group4:x:7777:
 ​
 -n 修改组名
 [root@localhost ~]# groupmod  -n testgroup4 group4
 [root@localhost ~]# tail -n 3 /etc/group
 group2:x:1002:c
 group3:x:1003:
 testgroup4:x:7777:

groupdel:删除组

[root@localhost ~]# groupdel testgroup4 

补充:将用户加入到组

 1.创建用户的时候将用户加入到组
 [root@localhost ~]# groupadd group10
 [root@localhost ~]# groupadd group20
 [root@localhost ~]# groupadd group30
 [root@localhost ~]# useradd -g group10 user10
 [root@localhost ~]# usermod -g group20 user10
 ​
 2.修改用户的组
 ​
 3.直接将已存在的用户加入到组
 [root@localhost ~]# gpasswd -a user10 group10
 正在将用户“user10”加入到“group10”组中
 [root@localhost ~]# tail -n 5 /etc/group
 group2:x:1002:c
 group3:x:1003:
 group10:x:1004:user10
 group20:x:1005:
 group30:x:1006:
 ​
 [root@localhost ~]# gpasswd -d user10 group10
 正在将用户“user10”从“group10”组中删除
 ^[[A[root@localhost tail -n 5 /etc/groupup10
 group2:x:1002:c
 group3:x:1003:
 group10:x:1004:
 group20:x:1005:
 group30:x:1006:
 [root@localhost ~]# 

Openssh

 查看信息
 1.查看地址
     ip a = ip address show 
     ifconfig
 2.查看网关
     ip r = ip route

思路

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
1.将ONBOOT修改为yes
2.启用windows上面的vmnet8网卡
3.windows和Linux做互通
4.远程到Linux
	ssh root@192.168.184.128  

文件权限

 [root@localhost ~]# ls -l anaconda-ks.cfg 
 -rw-------. 1 root root 1225 11月 18 2020 anaconda-ks.cfg
 ​
 权限:
 rw-------:一共9个字符,分3段
 第一段(前3个字符):拥有人、所属者:user:u
 第二段(中间3个字符):拥有组、所属组:group:g
 第三段(后3个字符):其他人:other:o
 ​
 r:read:读权限:4
 w:write:写权限:2
 x:execute:执行权限:1
 -:无权限
 所属关系
 root:拥有人、所属者
 root:拥有组、所属组
权限对文件的影响对目录的影响
r (读)可以读取文件的内容可以列出目录的内容(文件名) (列出目录下的文件名)
w(写)可以更改文件的内容可以创建或删除目录中的任一文件
x(执行)可以作为命令执行文件可以访问目录的内容 (点进目录下目录)

修改普通权限

 rw-------:chmod---修改权限
 root root:chown---修改所属
 ​
 修改权限的两种方式
     1.用字符修改
         命令格式:chmod ugoa +-= rwx filename
         原:rw-------
         现:rwxrw-rw-
         chmod u+x,g=rw,o+rw anac
         
         练习:
         原:rwx   rw-   rw-
         现:rwx   r--   ---
         [root@localhost ~]# chmod g-w,o=- anaconda-ks.cfg 
         [root@localhost ~]# ls -l anaconda-ks.cfg 
         -rwxr-----. 1 root root 1225 11月 18 2020 anaconda-ks.cfg
 ​
         原:rwx   r--   ---       
         现:r--   r--   r--
         [root@localhost ~]# chmod a=r anaconda-ks.cfg 
         [root@localhost ~]# ls -l anaconda-ks.cfg 
         -r--r--r--. 1 root root 1225 11月 18 2020 anaconda-ks.cfg
 ​
     2.用数字修改
         命令格式:chmod nnn filename
         原:r--   r--   r--
         现:rwx   rw-   rw-
             7    6     6
         [root@localhost ~]# chmod 766 anaconda-ks.cfg 
         [root@localhost ~]# ls -l anaconda-ks.cfg 
         -rwxrw-rw-. 1 root root 1225 11月 18 2020 anaconda-ks.cfg
 ​
         原:rwx   rw-   rw-
         现:rw-   rw-   rw-
         chmod u-x  anac
         chmod 666  anac

修改所属关系

 root root:chown---修改所属
 命令格式:chown user|(.|:)group filename
 修改用户命令格式:chown user filename 
 修改组令格式:chown 【.|:】group filename 
 ​
 修改所属者
 [root@localhost ~]# ls -l anaconda-ks.cfg 
 -rwxrw-rw-. 1 root root 1225 11月 18 2020 anaconda-ks.cfg
 [root@localhost ~]# ls -l anaconda-ks.cfg 
 -rwxrw-rw-. 1 user4 root 1225 11月 18 2020 anaconda-ks.cfg
 ​
 用.修改所属组
 [root@localhost ~]# chown .c anaconda-ks.cfg 
 [root@localhost ~]# ls -l anaconda-ks.cfg 
 -rwxrw-rw-. 1 user4 c 1225 11月 18 2020 anaconda-ks.
 ​
 用:修改所属组
 cfg[root@localhost ~]# chown :root anaconda-ks.cfg 
 [root@localhost ~]# ls -l anaconda-ks.cfg 
 -rwxrw-rw-. 1 user4 root 1225 11月 18 2020 anaconda-ks.cfg
 ​
 ​
 [root@localhost ~]# chown user10:user10 anaconda-ks.cfg 
 [root@localhost ~]# ls -l anaconda-ks.cfg 
 -rwxrw-rw-. 1 user10 user10 1225 11月 18 2020 anaconda-ks.cfg
 [root@localhost ~]# 
 ​
 ​
 练习:
 1.创建用户user10和user20
     useradd user10
     useradd user20
 2.创建文件1.txt,2.txt
     touch {1,2}.txt
 3.将1.txt和2.txt的所属者改为c
     chown c 1.txt
     chown c 2.txt
 4.将1.txt所属组改为user10 (要求用.修改)
     chown .user10 1.txt
 5.将2.txt所属组改为user20 (要求用:修改)
     chown :user20 2.txt
     
 更改目录所属关系:
     [root@localhost ~]# ls -ld /test1
     drwxr-xr-x. 2 root root 6 11月  3 04:10 /test1
     [root@localhost ~]# touch /test1/test.txt
     [root@localhost ~]# ls -ld /test1/test.txt 
     -rw-rw-r--. 1 root root 0 11月  3 04:16 /test1/test.txt
     
     [root@localhost ~]# chown c:user10 /test1
     [root@localhost ~]# ls -ld /test1
     drwxr-xr-x. 2 c user10 22 11月  3 04:16 /test1
     [root@localhost ~]# ls -ld /test1/test.txt 
     -rw-rw-r--. 1 root root 0 11月  3 04:16 /test1/test.txt
     
     -R 递归
     [root@localhost ~]# chown -R user10:c /test1/
     [root@localhost ~]# ls -ld /test1
     drwxr-xr-x. 2 user10 c 22 11月  3 04:16 /test1
     [root@localhost ~]# ls -ld /test1/test.txt 
     -rw-rw-r--. 1 user10 c 0 11月  3 04:16 /test1/test.txt
 ​

默认权限

文件夹:755=777-022
文件:644=666-022
[root@localhost ~]# umask 
0022
[root@localhost ~]# umask 0002
[root@localhost ~]# touch 2.txt
[root@localhost ~]# ls -l 2.txt 
-rw-rw-r--. 1 root root 0 11月  3 04:13 2.txt
[root@localhost ~]# mkdir /test2
[root@localhost ~]# ls -ld /test2
drwxrwxr-x. 2 root root 6 11月  3 04:14 /test2

ACL权限

 setfacl:
 getfacl:
 ​
 命令格式
     setfacl [选项] user:username:rwx |group:groupname:rwx  filename
     
 file:xinchuang20303-4
 user:banzhang(rwx),tuanzhishu(rw),xuexiweiyuan(rw)
 group:diyizu(rwx),dierzu(rw),disanzu(r)
 ​
 [root@localhost ~]# touch xinchuang20303-4
 [root@localhost ~]# useradd banzhang
 [root@localhost ~]# useradd tuanzhishu
 [root@localhost ~]# useradd xuexiweiyuan
 [root@localhost ~]# groupadd diyizu
 [root@localhost ~]# groupadd dierzu
 [root@localhost ~]# groupadd disanzu
 ​
 [root@localhost ~]# 
 [root@localhost ~]# setfacl -m u:banzhang:rwx,u:tuanzhishu:rw,
 u:xuexiweiyuan:rw xinchuang20303-4 
 ​
 [root@localhost ~]# setfacl -m g:diyizu:rwx,g:dierzu:rw,g:disa
 nzu:r xinchuang20303-4 [root@localhost ~]# getfacl xinchuang20303-4 
 # file: xinchuang20303-4
 # owner: root
 # group: root
 user::rw-
 user:banzhang:rwx
 user:tuanzhishu:rw-
 user:xuexiweiyuan:rw-
 group::r--
 group:diyizu:rwx
 group:dierzu:rw-
 group:disanzu:r--
 mask::rwx
 other::r--
 ​
 -x 一步步移除
 [root@localhost ~]# setfacl -x g:diyizu xinchuang20303-4
 [root@localhost ~]# setfacl -x g:diyizu xinchuang20303-4 
 ​
 [root@localhost ~]# getfacl xinchuang20303-4 
 # file: xinchuang20303-4
 # owner: root
 # group: root
 user::rw-
 user:tuanzhishu:rw-
 user:xuexiweiyuan:rw-
 group::r--
 group:dierzu:rw-
 group:disanzu:r--
 mask::rw-
 other::r--
 ​
 -b一次性移除
 [root@localhost ~]# setfacl -b xinchuang20303-4 
 [root@localhost ~]# getfacl xinchuang20303-4 
 # file: xinchuang20303-4
 # owner: root
 # group: root
 user::rw-
 group::r--
 other::r--

练习

 1.创建文件1.txt
 2.创建用户user1,user2
 3.创建组group1、group2
 4.给1.txt设置acl权限
     user1(rwx)
     user2(r)
     group1(rw)
     group2(r)
 5.移除group2的权限
 6.移除所有权限

特殊权限

 suid
     作用:文件的有效身份为文件的拥有者而非执行者
     u+s
     4
 sgid
     作用:文件的有效身份为文件的拥有者而非执行者
         继承所属组
     g+s
     2
 sticky(t位)
     
     o+t
     1
     
 1.txt:默认文件权限:chmod 4644 1.txt

suid案例

作用:文件的有效身份为文件的拥有者而非执行者 字符表示法:u+s 数字表示法:4

 1.用root身份:查看/etc/passwd的文件权限  ----644 
     [root@localhost ~]# ls -l /etc/passwd
     -rw-r--r--. 1 root root 2650 11月 10 00:46 /etc/passwd
 ​
 2.用户c身份:cat /etc/passwd -----能看
     [root@localhost ~]# su - c
     [c@localhost ~]$ cat /etc/passwd
     root:x:0:0:root:/root:/bin/bash
     
 3.用root身份:将查看/etc/passwd的文件权限修改为640
     [root@localhost ~]# chmod 640 /etc/passwd
     [root@localhost ~]# ls -l /etc/passwd
     -rw-r-----. 1 root root 2650 11月 10 00:46 /etc/passwd
 ​
 4.用户c身份:cat /etc/passwd -----不能看
     [c@localhost ~]$ cat /etc/passwd
     cat: /etc/passwd: 权限不够
 ​
 5.用root身份:查看cat的二进制文件路径
     [root@localhost ~]# which cat
     /usr/bin/cat
     
 6.用root身份:查看/usr/bin/cat的文件权限
     [root@localhost ~]# ls -l /usr/bin/cat
     -rwxr-xr-x. 1 root root 51856 5月  11 2019 /usr/bin/cat
     
 7.用root身份:将/usr/bin/cat的文件权限加晚上suid权限
     [root@localhost ~]# chmod 4755 /usr/bin/cat 
     [root@localhost ~]# ls -l /usr/bin/cat
     -rwsr-xr-x. 1 root root 51856 5月  11 2019 /usr/bin/cat
 ​
 8.用户c身份:cat /etc/passwd -----能看(因为c在使用cat命令时调用了拥有人的权限)
     [c@localhost ~]$ cat /etc/passwd
     root:x:0:0:root:/root:/bin/bash
 ​

sgid案例

作用:

1.文件的有效身份为文件的拥有组而非执行组

2.继承权限

字符表示法:g+s ​ 数字表示法:2

 1.用root身份:查看/etc/passwd的文件权限  ----644 
     [root@localhost ~]# ls -l /etc/passwd
     -rw-r--r--. 1 root root 2650 11月 10 00:46 /etc/passwd
 ​
 2.用户c身份:cat /etc/passwd -----能看
     [root@localhost ~]# su - c
     [c@localhost ~]$ cat /etc/passwd
     root:x:0:0:root:/root:/bin/bash
     
 3.用root身份:将查看/etc/passwd的文件权限修改为640
     [root@localhost ~]# chmod 640 /etc/passwd
     [root@localhost ~]# ls -l /etc/passwd
     -rw-r-----. 1 root root 2650 11月 10 00:46 /etc/passwd
 ​
 4.用户c身份:cat /etc/passwd -----不能看
     [c@localhost ~]$ cat /etc/passwd
     cat: /etc/passwd: 权限不够
 ​
 5.用root身份:查看cat的二进制文件路径
     [root@localhost ~]# which cat
     /usr/bin/cat
     
 6.用root身份:查看/usr/bin/cat的文件权限
     [root@localhost ~]# ls -l /usr/bin/cat
     -rwxr-xr-x. 1 root root 51856 5月  11 2019 /usr/bin/cat
     
 7.用root身份:将/usr/bin/cat的文件权限加晚上suid权限
     [root@localhost ~]# chmod 2755 /usr/bin/cat 
     [root@localhost ~]# ls -l /usr/bin/cat
     -rwsr-xr-x. 1 root root 51856 5月  11 2019 /usr/bin/cat
 ​
 8.用户c身份:cat /etc/passwd -----能看(因为c在使用cat命令时调用了拥有人的权限)
     [c@localhost ~]$ cat /etc/passwd
     root:x:0:0:root:/root:/bin/bash
 ​

案例2:继承权限

 1.创建目录/test1
     [root@localhost ~]# mkdir /test1
     [root@localhost ~]# ls -ld /test1/
     drwxr-xr-x. 2 root root 6 11月 10 02:36 /test1/
 2.在目录下创建1.txt
     [root@localhost ~]# touch /test1/1.txt
 ​
 3.分别查看/test1和/test1/1.txt的权限和所属
     [root@localhost ~]# ls -ld /test1/
     drwxr-xr-x. 2 root root 6 11月 10 02:36 /test1/
     
     [root@localhost ~]# ls -l /test1/1.txt 
     -rw-r--r--. 1 root root 0 11月 10 02:37 /test1/1.txt
 ​
 4.修改目录的sgid权限
     [root@localhost ~]# chmod g+s /test1/
     [root@localhost ~]# ls -ld /test1/
     drwxr-sr-x. 2 root root 19 11月 10 02:37 /test1/
     
 5.修改目录的所属组为c
     [root@localhost ~]# chown c:c /test1/
     [root@localhost ~]# ls -ld /test1/
     drwxr-sr-x. 2 c c 19 11月 10 02:37 /test1/
 ​
 6.分别查看/test1和/test1/1.txt所属关系
     [root@localhost ~]# ls -ld /test1/
     drwxr-sr-x. 2 c c 19 11月 10 02:37 /test1/
     [root@localhost ~]# ls -l /test1/1.txt 
     -rw-r--r--. 1 root root 0 11月 10 02:37 /test1/1.txt
 ​
 7.在/test1/目录下创建新的文件
     [root@localhost ~]# touch /test1/2.txt
     
 8.查看的新文件的所属关系--------已经继承
     [root@localhost ~]# ls -l /test1/2.txt 
     -rw-r--r--. 1 root c 0 11月 10 02:42 /test1/2.txt

sticky(t位)案例

作用:自己只能删除自己上传的文件,不能删除别人的文件

字符表示方式:o+t

数字表示方法:1

 1.用root身份:创建用户b
     [root@localhost ~]# useradd b
     
 2.用b身份:在/tmp下创建b.txt
     [root@localhost ~]# su - b
     [b@localhost ~]$ touch /tmp/b.txt
     
 3.用c身份:在/tmp下创建c.txt
     [c@localhost ~]$ touch /tmp/c.txt
 ​
 4.分成查看b.txt和c.txt所属关系是谁
     [b@localhost tmp]$ ls -ld c.txt 
     -rw-rw-r--. 1 c c 0 11月 10 03:20 c.txt
     [b@localhost tmp]$ ls -ld b.txt 
     -rw-rw-r--. 1 b b 0 11月 10 03:20 b.txt
 ​
 5.用b身份删除c.txt文件
     [b@localhost tmp]$ rm -rf c.txt 
     rm: 无法删除'c.txt': 不允许的操作
     [b@localhost tmp]$ 
     
 6.用c身份删除b.txt文件
     [c@localhost ~]$ cd /tmp/
     [c@localhost tmp]$ rm -rf b.txt 
     rm: 无法删除'b.txt': 不允许的操作

给目录设置t位

 用数字法(建议)
 [root@localhost ~]# chmod 1777 /test1/
 [root@localhost ~]# ls -ld /test1/
 drwxrwxrwt. 2 c c 32 11月 10 02:42 /test1/
 ​
 用字符法
 [root@localhost ~]# chmod o+t /test1
 [root@localhost ~]# ls -ld /test1/
 drwxrwxrwt. 2 c c 32 11月 10 02:42 /test1/

进程

 1.前后台任务调度
 jobs:查看后台任务
  调入后台
     1.ctrl z (暂停)
     2.cmd & (运行)
 ​
  调入前台
     fg %作业号  (作业号用jobs查看)
 2.查看进程
     ps -aux
     
 [root@localhost ~]# ps -aux | head
 USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
 root          1  0.1  0.5 244780  4164 ?        Ss   03:13   0:01 /usr/lib/systemd/systemd --switched-root 
 root          2  0.0  0.0      0     0 ?        S    03:13   0:00 [kthreadd]
 ​
 解释
 USER:用户
 PID:进程号
 %CPU:cpu占用率
 %MEM:mem占用率
 VSZ:申请地址空间   
 RSS:实际使用空间
 TTY:终端,pts/0本地终端,pts/2远程终端
 STAT:状态
 START:时间
 TIME:使用cpu时间
 COMMAND:命令
 ​
 3.杀死进程
     kill -9 %作业号
     kill -9  进程号

网络管理

三种模式

1.仅主机模式(vmnet1):只能和内网(vm开头)进行通信,不能上外网。外网:百度、淘宝、本地连接、WiFi
2.nat模式(vmnet8):能够上外网,进行地址转换
2.桥接模式(vmnet0):直接桥到本地连接

192.168.1.1/24  ---- ping 百度  (nat)  ----202.202.200.200
192.168.1.1/24  ---- ping 百度  (桥接) 

网络分类

A类(掩码:8)
	地址范围:1-126
	第一位为网络位,后三位为主机位
	网段:网络位照抄,主机位归零
	eg:10.1.1.1/8  网段:10.0.0.0/8
B类(掩码:16)
	地址范围:128-191
	前两位为网络位,后两位为主机位
	网段:网络位照抄,主机位归零
	eg:191.10.1.1/16  网段:191.10.0.0/16
C类(掩码:24)
	地址范围:192-223
	前三位为网络位,后一位为主机位
	网段:网络位照抄,主机位归零
	eg:192.168.1.1/24  网段:192.168.1.0/24
D类
	用于科研
E类
	保留

网络互通

1.查看IP
ip a = ip address show
ifconfig  (linux)/ipconfig(windows)

2.查看网关
	ip r = ip route
	
3.查看DNS
	[root@localhost ~]# cat /etc/resolv.conf

配置ip

ip:192.168.1.10/24
网关:192.168.1.254
DNS:8.8.8.8

(一条命令)
[root@localhost ~]# 
	nmcli connection modify "ens33"   //连接修改ens33网卡
	ipv4.method  manual				  //手动配置ipv4
    ipv4.addresses "192.168.1.10/24"  //ipv4的地址、掩码
    ipv4.gateway "192.168.1.254" 	  //ipv4的网关
    ipv4.dns "8.8.8.8"				  //ipv4的DNS
    connection.autoconnect yes		  //使用时自动连接

样例
[root@localhost ~]# nmcli connection modify "ens33" ipv4.method  manual ipv4.addresses "192.168.1.10/24" ipv4.gateway "192.168.1.254" ipv4.dns "8.8.8.8" connection.autoconnect yes

[root@localhost ~]# nmcli connection down ens33   //关闭ens33网卡
[root@localhost ~]# nmcli connection up ens33 	  //开启ens33网卡

仅主机模式

1.编辑----虚拟网络编辑器---仅主机----不勾dhcp
2.设置---网络适配器---仅主机模式
3.配置linux地址
	ip:192.168.1.10/24
	网关:192.168.1.254
	DNS:8.8.8.8
	
网段:192.168.1.0/24
4.配置windows中vmnet1的网卡ip
	ip:192.168.1.20/24
	网关:192.168.1.254
	DNS:192.168.1.10
	注意:windows和linux要保持同一网段,同一网关
5.测试互通
	windows ping linux
	linux ping windows
	
注意:如果单方面不通,95%是防火墙的原因,关闭防火墙即可。

桥接模式

vmnet0---本地连接
1.编辑----虚拟网络编辑器---桥接模式----自动/指定具体网卡
2.设置---网络适配器---桥接模式
3.查看windows地址	
	ip:10.80.1.50/24
	网关:10.80.1.254
	DNS:8.8.8.8
	
网段:10.80.1.0/24
4.配置linux的地址
	ip:10.80.1.250/24
	网关:10.80.1.254
	DNS:8.8.8.8
[root@localhost ~]# nmcli connection modify "ens33" ipv4.method manual ipv4.addresses "10.80.1.250/24" ipv4.gateway "10.80.1.254" ipv4.dns "8.8.8.8" connection.autoconnect yes

检查:ip、掩码、网关、dns

5.测试互通
	windows ping linux
	linux ping windows
	ping dns
	ping baidu

nat模式

1.编辑----虚拟网络编辑器---nat模式
2.设置---网络适配器---nat模式
3.自动获取linux地址
	[root@localhost ~]# nmcli connection modify "ens33" ipv4.method auto connection.autoconnect yes
4.自动获取windows地址
5.互ping
6.ping 百度

文件系统

分区、格式化、挂载

1.一块硬盘只能有4个主分区
如果你想分7个分区:
	1.分3个主分区
	2.分1个扩展分区(不能做格式化挂载)
	3.分3个逻辑分区
2.硬盘存放在/dev/目录下
	第一块硬盘:/dev/sda
		第一块硬盘的第一个分区:/dev/sda1
		第一块硬盘的第二个分区:/dev/sda2
	第二块硬盘:/dev/sdb
		第二块硬盘的第一个分区:/dev/sdb1
		第二块硬盘的第二个分区:/dev/sdb2
hd 表示IDE设备
sd 表示SCSI/SATA/PATA设备

SCSI:/dev/sda---/dev/sdzz

分区

[root@localhost ~]# fdisk -l
命令(输入 m 获取帮助):m

帮助:
  常规
   d   删除分区
   F   列出未分区的空闲区
   l   列出已知分区类型
   n   添加新分区
   p   打印分区表
   t   更改分区类型
  保存并退出
   w   将分区表写入磁盘并退出
   q   退出而不保存更改
   
[root@localhost ~]# fdisk /dev/sdb  

格式化

[root@localhost ~]# mkfs.xfs /dev/sdb1
[root@localhost ~]# blkid  //查看格式化类型和UUID

挂载

mkdir /mnt/dev
1.挂载文件系统
	mount /dev/sdb1 /mnt/dev
2.挂载UUID
	mount UUID="eeaefbac-354d-49a6-8ed3-c15c55b71f01" /mnt/dev
	
df -h查看挂载情况                

取消挂载

1.取消文件系统
	[root@localhost ~]# umount /dev/sdb1
2.取消挂载点
	[root@localhost ~]# umount /mnt/dev

作业

1.添加一块40G硬盘
2.创建一个3G的主分区,分区号默认
3.创建一个5G的主分区
4.创建一个20G扩展分区
5.创建一个10G的逻辑分区
6.将2号分区类型更改为swap分区
7.将5号分区类型更改为LVM分区
8.格式化1号分区为xfs
9.创建挂载点/test1
10.用文件系统进行挂载
11.用文件系统进行卸载
12.用UUID挂载
13.用挂载点卸载

模拟错误

1.先做永久挂载
vim /etc/fstab
/dev/sdb1               /mnt/dev                xfs     defaults        0 0

2.临时验证
mount -a 

3.模拟错误
vim /etc/fstab
/dev/sdb1               /mnt/dev                xfs     defaul        0 0

4.重启机器
reboot

swap:虚拟,交换分区

 [root@localhost ~]# mkswap /dev/sdb2   //格式化swap分区
 ​
 [root@localhost ~]# swapon  -a    //重新加载交换分区
 [root@localhost ~]# swapon  -s    //查看swap分区的使用情况
 文件名             类型      大小  已用  权限
 /dev/dm-1                               partition   2097148 562324  -2
 /dev/sdb2                               partition   5242876 0   -3
 ​
 [root@localhost ~]#  swapon /dev/sdb2    //开启swap分区
 [root@localhost ~]#  swapoff /dev/sdb2    //关闭swap分区

LVM

 pvcreate /dev/sdc1
 vgcreate  vg01 /dev/sdc1 
 lvcreate -n lv01 -L +3G /dev/vg01
 mkfs.ext4 /dev/vg01/lv01
 mount /dev/vg01/lv01 /opt/
 df -h
 lvextend -L +2G /dev/mapper/vg01-lv01
 df -h
 //格式化类型为ext3、ext4等使用resize2fs刷新
 resize2fs /dev/mapper/vg01-lv01   
 ​
 //格式化类型为xfs等使用xfs_growfs刷新
 xfs_growfs /dev/mapper/vg01-lv01   
 df -h

RPM

 使用RPM进行软件包的安装,需要注意以下2两点
 1.进入完整的包路径
 2.安装时保证软件包名称完整
 ​
 1.导入光盘并连接
 2.挂载光盘(/dev/cdrom)
 [root@localhost Packages]# mount /dev/cdrom /mnt
 ​
 3.进入光盘路径
 [root@localhost Packages]# cd /mnt/Packages
 [root@localhost Packages]# ls
 ​
 rpm -ivh
 -i install  安装
 -v verbose 详细信息
 -h hash 显示带#的进度条
 ​
 [root@localhost Packages]# rpm -ivh zsh-5.5.1-6.el8.x86_64.rpm 
 警告:zsh-5.5.1-6.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
 Verifying...                          ################################# [100%]
 准备中...                          ################################# [100%]
 正在升级/安装...
    1:zsh-5.5.1-6.el8                  ################################# [100%]
 ​
 ​
 [root@localhost Packages]# ls | grep samba
 --force --nodeps  强制安装
 [root@localhost Packages]# rpm -ivh samba-4.9.1-8.el8.i686.rpm --force --nodeps
 警告:samba-4.9.1-8.el8.i686.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
 Verifying...                          ################################# [100%]
 准备中...                          ################################# [100%]
 正在升级/安装...
    1:samba-0:4.9.1-8.el8              ################################# [100%]
   
  
 -q 查询软件包是否安装
 [root@localhost Packages]# rpm -q samba
 samba-4.9.1-8.el8.i686
 [root@localhost Packages]# rpm -q httpd
 未安装软件包 httpd 
 ​
 -ql 查询软件包是相关文件
 [root@localhost Packages]# rpm -ql samba
 ​
 -qc 查询软件包的主配置文件
 [root@localhost Packages]# rpm -qc samba 
 /etc/openldap/schema/samba.schema
 /etc/pam.d/samba
 ​
 -qf 查询路径来自哪个软件包
 [root@localhost Packages]# rpm -qf /etc/pam.d/samba
 samba-4.9.1-8.el8.i686
 ​
 -qa 查询已安装的软件
 [root@localhost Packages]# rpm -qa | wc -l
 1332
 ​
 -i 详细信息
 [root@localhost Packages]# rpm -qi samba
 ​
 -e 卸载
 [root@localhost Packages]# rpm -e samba

YUM

 1.挂载光盘
 //进入仓库路径
 [root@localhost ~]# cd /etc/yum.repos.d/    
 [root@localhost ~]# ls
 ​
 //做备份
 [root@localhost yum.repos.d]# #cp CentOS-Base.repo CentOS-Base.repo.bak
 [root@localhost yum.repos.d]# cp CentOS-Base.repo{,.bak}
 ​
 //编写yum仓库
 [root@localhost yum.repos.d]# vim CentOS-Base.repo
     :set nu
     :1,12d
     :3d
     x
     ww
     D
     a
     添加file:///mnt
     
 //更改之后的详见下文

7版本仓库

 [BaseOS]
 name=CentOS-$releasever - Base
 baseurl=file:///mnt
 gpgcheck=0
 enabled=1

8版本仓库

   1 [BaseOS]
   2 name=CentOS-$releasever - Base
   3 baseurl=file:///mnt/BaseOS
   4 gpgcheck=0
   5 enabled=1
   6 
   7 [AppStream]
   8 name=CentOS-$releasever - AppStream
   9 baseurl=file:///mnt/AppStream
  10 gpgcheck=0
  11 enabled=1
 ​

清理缓存、安装软件

 [root@localhost yum.repos.d]# yum clean all 
 Repository AppStream is listed more than once in the configuration
 0 文件已删除
 [root@localhost yum.repos.d]# yum makecache 
 ​
 //安装软件
 [root@localhost yum.repos.d]# yum install -y httpd
 //卸载软件
 [root@localhost yum.repos.d]# yum erase  httpd
这篇关于Linux基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!