Ubuntu是一个以桌面应用为主的Linux操作系统.一般叫做乌班图
什么叫操作系统?
widows,用于个人桌面
macOS,用于个人桌面
Linux,主要用于服务器,商务部署
创建虚拟机安装Ubuntu网络安全学习笔记——创建虚拟机_不知天文,不知地理的博客
创建虚拟机的硬件条件
CPU:i5/i7
内存:8G
硬盘:固体
安装完毕有俩个虚拟网卡
提示:按Ctrl+Alt可以令虚拟机释放鼠标,回到你的主系统中
宿主机必须保持联网:因为在安装的过程中,需要联网下载一些软件包
如果Ubuntu有问题,如何重装
直接删除目录
虚拟机内的操作,不会影响到宿主机
启动关机:power off关机
挂起/恢复:将当前状态冻结,以便快速恢复
更多的虚拟机操作
硬件参数设置Ctrl+D或者在虚拟机菜单栏上的设置进行修改
注意:先关机后设置
状态栏
右下角一排状态按钮,表示硬件状态
快照与系统恢复
重装系统(目录下的文件全删掉,然后重新装一个)
使用系统快照(备份)
桌面环境
Ubuntu的桌面环境和Windows相似
上部:状态栏
左侧:收藏夹,常用的应用程序
左上角:查看正在 活动的程序activities
左下角:查看所有的应用程序
右上角:系统状态,用户,系统设置,关机与注销
Ubuntu上可以看视频,听音乐都可以
Linux可以作为个人桌面,但主要用于服务器环境
收藏夹
收藏一些常用的程序
以下三个程序
文件管理器
命运行终端
文本编辑器 常用 放进收藏夹
文件系统
对于Linux来说,使用统一的目录树结构
/
/home/shaofa
/root
/bin
/mnt
/usr
/etc
注意:Linux下没有C:D:这个盘符的概念
一级子目录
用户目录,就是用户自己的目录
Linux系统上支持多个用户,每个用户一个目录
特例:超级用户root,其用户目录为/root
权限机制:对于普通用户来说,他能操作的目录就只有用户目录
root用户没有权限,可以操作任意文件和目录
创建目录和文件
目录操作:创建目录/删除/重命名
文件操作:编辑文本文件
以上所有的操作,都是在用户目录下操作的
文件列表
ls,即list,列出目录下的所以项
示例
参看目录
参看/home/buzhitianwenbuzhidili 目录
ls /home/buzhitianwenbuzhidili
注意ls空格然后目录
以详细模式参看
ls -l /home/shaofa
其中,
-l为参数,参数一般以-开头
权限 子文件夹的内容 创建者 组 大小 最后一个表示项目名字
细节:在输入命令和路径时,按tab键都可以自动补全
ls/ho > ls /home
2.输入历史可以翻阅
按↑,↓箭头键可以上下翻阅
3.宿主机与虚拟机之间可以拷贝粘贴
一般情况下,文本和文件都可以拷贝的
虚拟机Ctrl+V不行,要右击
切换目录
pwd,即print working directory 显示当前工作目录
cd,即change directory,切换目录
切换到某个目录
cd /home/buzhitianwendili/Downloads/
几个特殊的目录写法:
~代表当前用户的主目录
.代表当前目录
..代表上一级目录
cd ~ 切换到主目录
cd ~/example 切换到主目录下的example目录
cd ../www 切换到上级目录,再到www子目录
在ls命令中,也可以使用~. ..表示目录
在Ubuntu下打不出~可以使用shift+|键输出~
目录操作
mkdir,即make directory创建目录
mkdir abc
mkdir -p abc/123/test
使用-p参数,可以将路径的层次目录全部创建
rmdir,即remove directory删除空目录
rmdir abc
如果目录非空,则删除失败
rm,即remove删除文件或目录
rm -rf abc
删除abc目录,和子项一并删除
其中,r表示recursive(递归删除),f表示force(强制删除)
使用这个rm -rf 命令时要小心这是强制删除的
一个程序员界的玩笑:rm -rf /* 删库跑路?
cp,即copy复制文件或者目录
cp -rf example example2
mv,即mover,移动文件或目录(重命名)
move hello hellowirld
对于文件,rm/cp/mv这三个命令同样适用
归档压缩
tar,即tape(磁带) archive(档案)档案打包
创建档案包
tar -cvf example.tar example
其中,
c,表示create创建档案
v,表示verbose显示详情
f,表示file
也可以多个目录打包 tar-cvf xxx.tar file1 file2 file3
还原档案包
tar -xvf example.tar
taar -xvf example.tar -C outdir
其中,-C参数指定目标目录,默认解到当前目录下
先前的tar格式并没有压缩,体积较大
并档并压缩
tar -czvf example.tar.gz example
解压缩
tar -xzvf example.tar.gz
tar -xzcf example.tar.gz -C outdir
通常我们所见的,都是*。tar.gz这种格式
软链接
软链接,即Windows下的快捷方式
使用ln命令(link)来创建软链接
ln -s source link
其中,-s表示soft软链接(默认为硬)
比如
ln -s example example2
软链接的特点:
删除软链接,对原文件没有影响
删除原文件,则软链接失效
以ls -l 查看文件详情时,可以看到目标路径
比如:ls -l /
可以发现,/bin实际指向的是/usr/bin目录
首字母是d表示目录;l表示快捷方式;-表示文件
添加用户(需要管理员权限)
添加一个用户
sudo useradd -m test1
其中,sudo表示以管理员身份执行
添加用户
useradd -m test1
其中,-m参数表示在/home下添加用户目录
2.修改用户密码
passwd test1
3.删除用户
userdel test1
注意在Linux下输入密码是不显示的
1.在登陆系统时,默认不允许以root用户登录
2.只有特殊的用户,才能执行sudo
比如,buzhitianwendili可以执行sudo,但test1不行
Linux下,把能执行sudo命令的用户叫sudoer
超级用户
超级用户root
类似于Windows下的administrator用户
切换到root用户,有全部权限,可以直接useradd等命令
1.首次使用时,需要给root设置密码
sudo passwd root
2.切换到root用户
su root
其中,su表示switch user
3.退出
exit
su root 仅仅对当前会话(终端)有效不影响当前桌面环境
root权力太大,需要小心使用
用户和组
Linux下可以创建多个用户,可以用组进行管理用户。
比如:
男生组boys
ming bo gang qiang
女生组girls
fang hong yue yuan
创建组
groupadd boys
创建用户
useradd -m -g boys ming
其中,-g表示在添加用户,同时将用户加到boys组
修改现有用户到新的组
usermod -g boys shaofa
其中,usermod表示修改用户信息
如何查看用户和组?
cat /etd/group
每一行表示一个group的信息,名称+ID
如何查看用户列表?
cat /etc/passwd
每一行表示一个用户的信息
后面的数字表示id
用户不多时,管理的时候并不使用组的概念
useradd a1
useradd b1
一个root,俩个普通用户a1,b1,够用了!
默认的,会给a1用户建立一个同名的组a1,也就是说这个组里只有他一个人
以root登陆桌面
默认的,Ubuntu不允许以root登陆桌面环境。(root已经设置了密码)
1:su root
2:gedit /etc/pam.d/gdm-autologin
加# #auth required pam_succeed_if.so user != root quiet_success保存,在Linux下#相当于注释行
3.:gedit /etc/pam.d/gdm-password
注释这个行#auth required pam_succeed_if.so user != root quiet_success
4.关闭虚拟机,重启后生效
在登陆界面,点下面的未列出
手动输入用户名root,登陆
文件的权限:
-owner:文件的属主owner
-r:文件是否可读read
-w:文件是否可写write
-x:文件是否可以执行excute
使用ls命令参看一个文件
ls -l simple.txt
d:目录 l:软链接 -:文件
修改文件权限
chmod,即change file mode修改文件的访问权限
比如,一个文件simple.txt,想让别人也能修改chmod o+w simple.txt
其中,
o,表示other别人
+w,表示增写write权限
减权限chmod o-w simple.txt
chmod a+w simple.txt
所有人all添加w权限
chmod a-w simple.txt
所有人减去w权限
chmod u+w simple.txt
仅用户user自己的权限+w
修改别other的权限-w
只要文件的属主或者root可以修改文件权限
省略写法
chmod +w simple.txt
chmod -w simple.txt
默认是修改自己和本组的权限
修改文件的属主
chown,即change owner修改文件的属主
一般来说,每个用户只操作自己的用户目录所以chown命令并常用
示例:
1在/opt目录下建立一个文件夹software
2将software目录分配给用户buzhitianendili
su root
mkdir /opt/software
chown -R(递归,如果目录下有子文件就一并修改了) buzhitianwendili
/opt/software/
只有文件的owner和root才有权更改属主
可执行脚本
脚本script,一种解释执行的程序
Linux下常见的三种脚本程序
shell脚本 *.sh
Perl脚本 *.pl
python脚本 *.py
脚本程序,本质是一个文本文件
1它是一个文本文件
2它具有可执行权限
脚本程序都是由解释器来执行的
shell脚本解释器:/bin/sh
perl脚本解释器:/bin/perl
python脚本解释器:/bin/python3
执行一个脚本,以下俩种方式等效
./hello.py
/bin/python3 hello.py
shell脚本
shell脚本,按shell的语法写出来的脚本
是linux自带的脚本语言
相当于Windows下的dos批处理脚本
1.编辑一个文本文件,保存为hello.sh
# !/bin/sh
echo "hello,word"
1.添加可执行权限
chmod +x hello.sh
3.执行程序
./hello.sh
1第一行必须声明解释器
# !/bin/sh
2必须有x权限,才能够执行
比如,一个程序只有自己执行,别人不能执行
rwxr--r--
3.执行程序时,必须加上路径
./hello.sh
python脚本,比shell要强大一些
对于C/java工程师,3天可以学会python
跟shell一样的步骤
SHELL中的变量--环境变量
SHELL,是一个脚本编程语言
1.定义变量
2.执行命令echo ls cd cp
3.if判断逻辑,while循环逻辑
4.自定义的函数
#!/bin/sh
#定义变量
OUTDIR=/opt
#使用变量
echo "output to : ${OUTDIR}"
IS ${OUTDIR}
1.定义一个变量
NAME=value
等号左右俩侧不要多加空格
2.使用一个变量
${NSME}
如果已经有了定界符,则可以简写为$NSME
例如echo ${NSME}/build/
环境变量
环境变量,就是存在当前环境中的变量
无论Linux,还是Windows,都是环境变量
比如,最常用的环境变量path,java_hcme
定义环境变量
export OUTDIR=/opt/
显示环境变量
echo ${OUTDIR}
查看所有环境变量
printenv
环境变量的使用
可以在当前终端中使用
可以在shell脚本中调用
演示:在shell脚本中调用一个环境变量
在命令行中定义的环境变量,只有对当前shell终端有效
用户环境变量
定义在~/.profile中
在主目录下
ls -la
其中,a表示all,显示所有文件
在Linux下,以.开头的文件为隐藏文件
1.在文本编辑器打开-/.profile
gedit ~/.profile
2.添加
export Java_HOME=/opt/jdk1.8
保存并关闭
3.注销,重新登录后生效
echo $Java_HOME
原理:当用户打开终端时,会自动运行.profile,将变量注入到当前环境中。
1.以点号.开头的文件为隐藏文件
ls -a 查看所有文件
2.此配置只对当前用户有效,因此每个用户都有自己的配置文件.profile
3.有的Linux系统上,使用.bash_profile
系统环境变量
系统环境变量:定义在/etc/profile中
此中的环境变量对所有用户有效
以root身份执行
gedit /etc/profile
但是,一般不直接修改/etc/profile
而是在/etc/profile.d/创建一个自定义的脚本
1用gedit创建一个脚本
gedit /etc/profile.d/myprofile.sh
2定义环境变量
export TOMCAT=/opt/tomcat
3注销并重新登录
重新登录后,环境变量生效
PATH环境变量
先来看一个问题,创建一个可执行脚本hello.sh
直接执行:
明明就在当前目录下,为什么提示找不到?
PATH,是最常见的一个环境变量用于描述可执行程序的搜索路径
echo $PATH
多个路径之间以冒号分隔
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
1编辑/etc/profile.d/myprofile.sh
设定PATH环境变量
export PATH=$PATH:/opt/tomcat/bin
2.注销重启
VMware网络环境
1检查虚拟网络编辑器
以管理员方式运行VMware
打开(编辑)虚拟网络编辑器
查看NAT方式下,虚拟子网的网段 如
检查虚拟网卡
控制面板,“网络与共享中心|更改适配器设置”默认地,有VMnet1和VMnet8俩个虚拟网卡
如果没有找到VMnet1和VMnet8俩个虚拟网卡,请卸载VMware重装
注意:以管理员方式运行安装程序,会更好
3检查虚拟机的网络配置:NAT模式
虚拟机联网
虚拟机联网设置:
1检查虚拟机硬件是否为NAT方式
2登陆Ubuntu系统,右上角设置
设置面板左侧,“网络”
检查IPv4/DHCP设置(默认设置即可,不需要更改)
3.检查IP地址
我的演示环境IP:192.168.43.129
4.访问外网测试
ping www.baidu.com
按CTRL+C中断
注意:宿主机本身必须已经连接外网
可以在图形界面下设置网络,也可以在终端里用命令行方式设置
与宿主机互联
参看宿主机的IP地址
手动配置网络
在终端里,以命令行方式来配置网络
常见命令:ifconfig,netstat等
默认地,Ubuntu下面不带ifconfig命令
需要使用apt软件包管理器
apt install net-tools 安装一个软件包
apt remove net-tools 移除一个软件包
apt search xxx 搜索
apt list | grep xxx 列表
这样就可以使用ifconfig命令了
1.查看网络配置
ifconfig(winds下的是ipconfig)
其中,if表示interface网络接口
会列出所有的网络接口,及各个接口的状态
2.开启/禁用网络
sudo ifconfig xxx up
sudo ifconfig xxx down
FTP服务器
思考:怎么把文件传到Ubuntu主机上?
1U盘拷贝
2网络传输
FTP
SFTP
使用FTP来传输文件。
客户机FileZilla(windows)
服务器vsftpd(ubuntu)\
SSH服务器
使用ssh协议,可以实现
1远程终端
2文件传输
1使用Xshell远程登录
2使用Xftp传输文件
vim文本编辑
vi / vim,一个基于控制台的文本编辑器
gedit,一个基于GUI的文本编辑器
其中,vim是vi的升级版,演示使用vim命令
1打开文本编辑
vim abc.txt
如果目标文件存在,则打开编辑;如果不存在,会新建一个文件
如果系统上没有vim,就安装一下:
sudo spt install vim
2切换模式
编辑模式Insert Mode :按i键
命令模式Command Mode:按ESC键
3退出编辑
(1)按ESC键,退出命令模式
(2)输入:wq 保存并退出
输入:q 退出
输入:q! 强制退出(放弃保存)
vim更多的用法
VIM的完全用法非常复杂
花样繁多,几乎键盘上的每一个都是快捷键
不建议深入研究,vim本身是一个低效率的工具
Linux文本文件的编辑
1桌面环境:gedit
2终端环境:
少量修改:vim
大量修改:在Windows上编辑,然后传到Linux
文本文件的上传
推荐:在Windows上编辑,然后上传到Linux
使用notepad++或者其他的专业编辑器
文本文件的换行符
Windows:\r\n
linux:\n
可以在notepad++里观察到此区别
视图 | 显示符号 | 显示行尾符
换行符的转换:
编辑 | 文档格式转换 | 转换为Unix格式
注意:只要在编辑shell脚本时,才需要转换
其他格式的文件一般都不需要转换,如*.xml,*.java
Java的安装
先安装java的软件包
JRE:
openjdk-8-jre-headless
JDK:
openjdk-8-jdk-headless
其中,openjdk是jdk的免费版本,推荐jdk8
运行java程序
安装openjdk-8-jre-headless
ls /usr/bin/java
默认放在/usr/bin下,不需要额外设置PATH
提示:如果放在自定义位置,需要设置PATH
export PATH=$PATH:/opt/jdk8/bin
运行java程序
1在Windows上开发和调试
2发布
-class文件
-普通jar文件/可执行jar文件
俩种jar文件的运行方式不同:
java -cp your_program.jar your.MainClass
java -jar your_program.jar
3上传至Linux:FTP/SFTP
4运行程序
java -jar simple.jar
5权限因素,自行检查
-程序里需要访问系统文件,如/etc/,
-程序里需要开启TCP端口,如80,得用root运行。。。
注意,javaGUI的程序不能在终端里运行
java启动脚本
一般地,需要创建一个脚本,以便快键地启动程序
参考run_java.sh
-设置工作目录
-设置必要的环境变量
-设置JVM运行参数
-运行程序
创建运行脚本
使用run_java.sh来运行java程序
1修改run_java.sh
2转换为Unix风格
3上传到Linux
4添加+x权限,运行脚本
在Windows上编辑shell脚本时,记得设置换行符
Windows:\r\n
linux:\n
Tomcat的服务器
Tomcat本身是一个Java程序,必须要有java的运行环境
下载Tomcat的Linux版本
apche-tomcat-8.5.54.tar.gz
注意,Tomcat的版本和jdk版本有对应关系
tomcat8.5<>jdk8
以下操作到root身份执行
1上传到Ubuntu
2解压缩
tar -zxvf apache-tomcat-8.5.54.tar.gz
mv apache-tomcat-8.5.54 tomcat
运行Tomcat
Tomcat/bin.startup.sh
4检查tomcat进程是否在运行
ps -ef | grep java
netstat -anp | grep 8080
6关闭防火墙 ufw disable
7访问网站http://192.168.43.128:8080
8关闭Tomcat:
tomcat/bin/shutdown.sh
Tomcat需要有java的运行环境
Tomcat作为网络服务器,应该以root执行
启动startup.sh
关闭shutdown.sh
Tomcat的配置
Tomcat的配置文件:
/opt/tomcat/conf/server.xml
至少需要修改:端口,应用目录
1可以部署在/opt下,也可以部署在/root下
2网站的跟目录:ROOT,区分大小写
/opt/www_your_com/ROOT
3观察Tomcat的启动日志
cat /root/tomcat/logs/catalina.out
Tomcat启动日志
cat tomcat/logs/catalina.out
启动Tomcat服务后,应该观察一下日志,看有没有错误提示
认识catalina.sh
1启动Tomcat,相当于starup.sh
tomcat/bin/catalina.sh start
2停止Tomcat
tomcat/bin/catalina.sh.stop
3前台运行Tomcat(用于调试)
tomcat/bin/catalina.sh run
Tomcat启动脚本
Tomcat自带的脚本
starup.sh
shutdown.sh
catalina.sh
实际上,starup.sh和shutdown.sh的内部,都是调用了catalina.sh
创建一个脚本run_tomcat.sh
以后台方式运行服务
./run_tomcat.sh start
停止服务
./run_tomcat.sh stop
在前台方式运行(当前窗口运行,方便打印调试)
./run_tomcat.sh run
其中,参数star/stop/run会间接地传给catalina.sh
程序与进程
程序program:指一个程序文件,如notepad.exe
进程Process:当一个程序运行起来,在操作系统内创建一条记录,用于描述和控制它的运行
比如:打开多个notepad.exe,则得到多个进程
ps -ef
其中,各个字段的含义:
User:执行者
PID:进程ID
PPID:父进程ID
STIME:启动时间
CMD:启动时调用的命令行
按名称 查找某个进程
ps -ef | grep java
其中,将前者输出的信息,重定向给grep命令过滤处理
进程管理
top命令,相当于Windows的任务管理器
查看所有进程
top
按上下键翻阅
按q或Ctrl+C中止退出
查看某个进程
top -p NNN
其中,NNN为目标进程的PID
所有,可以先用PS命令查找目标进程的PID
使用kill命令,杀死一个进程
kill-9 NNN
或者
pkill name_of_progress
进程管理的几个命令:
ps -ef
ps -ef | grep xxx
top
top -p NNN
kill -9 NNN
pkill name_of_program
ctrl + c 中止当前进程(前台进程)
前台与后台进程
前台进程:运行在前台
后台进程:运行在后台
./run_tomcat run 以前台方式运行(ctrl+c中止)
./run_tomcat start 以后台方式运行
区别1:有无控制台
前台进程:
有控制台,输出至当前终端
后台进程:
无控制台,看不到输出
区别2:有无父进程
前台进程:
有父进程,父进程即为当前终端
当终端关闭时,前台进程被一同关闭
后台进程:
父进程为系统进程(1号进程)
当终端关闭时,后台进程不守影响
区别3:强行终止
前台进程:
使用Ctrl+c强行终止
后台进程:
使用kill-9NNN强行终止
前台进程:
1控制台:有控制台,输出至当前终端
2关闭终端时将关闭前台进程
3使用Ctrl+C强行终止
后台进程:
1无控制台,看不到输出
2关闭终端对后台进程没有影响
3使用kill-9NNN强行终止
Redis服务器
Redis,一款基于内存的key-value型数据库
MySQL服务器
MySQL,一款常见的数据库服务器