linux入门到地狱

linux—001入门

  • IT圈必备(前端工作者用的比较少)

  • 老旧电脑跑linux不容易卡

  • 我代码没保存windows闪退,僵停(vs2019卡掉线),重启更新,占用cpu内存服务报错pip各种bug 出来生态环境友好其他的全是bug(bug时间成本超过了windows快捷友好生态) 那就说明windows已经没有存在的意义了 买苹果或者去换linux是更好的选择

  • 安全性高

    • 大量的可用软件及免费软件
    • 良好的可移植性及灵活性
    • 优良的稳定性和安全性
    • 支持几乎所有的网络协议及开发语言
  • 系统选择

  • redhat

    • redhat公司收费版
    • centos和其他开源版本组成
  • linux/unix/arch

    • 原生内核
  • debain

  • ubuntu/kali

  • deppin(兼容很多windows软件)

  • centos/redhat

    • 入门学习
    • 大多数常规主流服务器的选择
    • 更新缓慢但是极为稳定
  • ubuntu

    • 拥有较多的网络服务
    • debain系拥有较好的桌面生态环境
    • debain包相对多了很多拥有良好的包管理
    • 对日常软件的兼容(deb)
  • kali

    • 拥有大量网络安全工具
    • 同时自带了debain大多数常用的依赖关系
  • 用户比例

    • 根据Stack Overflow的开发者调查报告,2022年将Linux作为主要操作系统的比例达到了40.23%,而macOS的比例为31.07% cloud.tencent.com。虽然这个数据是2022年的,但我们可以大致推测,2023年的比例可能会有所增长,但应该不会有太大的变动。
    • 另外,Statcounter的数据显示,Linux的市场份额为2.76%,macOS为14.51%,Windows为75.21% zhuanlan.zhihu.com。这个数据可能更能反映出整体的用户比例,因为它包括了所有的桌面操作系统用户,不仅仅是开发者。
    • 在游戏平台Steam上,Linux用户占比1.44%,而Windows用户占比为96.11% cloud.tencent.com。这个数据显示,在游戏用户中,Windows的占比依然非常高。
      在这里插入图片描述

linux—002基础命令

  • 菜鸟linux基础命令手册
  • 包管理
# pm命令用于管理软件。rpm原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。能被rpm命令安装的软件包一般以.rpm为文件后缀。
rpm -ivh [package_name]         #安装软件包
rpm -evh [package_name]         #卸载软件
rpm -qlp *.rpm                  #列出rpm包的内容
rpm -qa |grep [字符串]           #在已安装的所有软件中查询包含某字符串的软件版本
rpm -ql [软件名]                 #列出该软件所有文件与目录所在的完整文件名
rpm -qc [软件名]                 #列出软件的所有设置文件
rpm -qR [软件名]                 #查询某软件依赖的其他软件
rpm -qf [文件名]                 #查询文件属于哪个软件包# yum命令是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
# 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令。# 国内源
# 1备份配置文件
cd /etc/yum.repos.d
7z a Centos-Base.repo.7z Centos-Base.repo 
# 删
rm Centos-Base.repo
# 下载源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
# 清理缓存 
yum clean all# yum命令
yum makecache                         #更新源(安装新源后执行)
yum clean all                         #清除缓存目录(/var/cache/yum)下的软件包及旧的headers
yum list |grep                        #显示所有已经安装和可以安装的程序包
yum info [package-name]               #显示安装包信息
yum -y install [package-name]         #安装软件,默认选yes
yum remove [package-name]             #卸载
yum deplist rpm                       #查看程序rpm依赖情况
yum update                            #更新全部软件包
yum group list                        #列出组
yum group install "Security Tools"    #安装‘Security Tools’软件组
yum search                            #检索安装包#DNF是新一代的rpm软件包管理器。它正在逐步取代yum命令。
dnf repolist                                           #该命令用于显示系统中可用的 DNF 软件库
dnf repolist all                                       #该命令用于显示系统中可用和不可用的所有的 DNF 软件库
dnf list                                               #用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
dnf list installed                                     #该命令用于列出所有安装了的 RPM 包
dnf list available                                     #用于列出来自所有可用软件库的可供安装的软件包
dnf search [pakage]                                    #用该命令来搜索软件包
dnf provides /bin/bash                                 #查找某一文件的提供者
dnf info nano                                          #查看软件包详情
dnf install [pakage]                                   #安装软件包
dnf update systemd                                     #该命令用于升级指定软件包
dnf check-update                                       #该命令用于检查系统中所有软件包的更新
dnf update                                             #该命令用于升级系统中所有有可用升级的软件包
dnf remove [pakage]                                    #删除系统中指定的软件包
dnf autoremove                                         #删除无用孤立的软件包
dnf clean all                                          #删除缓存的无用软件包
dnf history                                            #查看您系统上 DNF 命令的执行历史
dnf grouplist                                          #该命令用于列出所有的软件包组
dnf groupinstall ‘Educational Software’                #该命令用于安装一个软件包组
dnf groupupdate ‘Educational Software’                 #升级一个软件包组中的软件包
dnf groupremove ‘Educational Software’                 #该命令用于删除一个软件包组
dnf reinstall [pakage]                                 #该命令用于重新安装特定软件包
  • echo
## >指令覆盖文件原内容并重新输入内容,若文件不存在则创建文件。
```bash
#!/bin/bash
echo "Raspberry" > test.txt#>>指令向文件追加内容,原内容将保存。
echo "Raspberry" > test.txt 
echo "Intel Galileo" >> test.txt#操作使用变量
#!/bin/bash 
FILE="test-json.txt" 
echo -e "{" > $FILE 
echo -e "\t\"name\":\"xukai871105\"" >> $FILE 
echo -e "}" >> $FILE# 进阶:操作脚本
#!/bin/sh
function ergodic(){for fileName  in ` ls $1 `doif [ -d $1"/"$fileName  ]thenergodic $1"/"$fileName else# echo $fileNameif [[ ${fileName} == 'start-service.sh' ]]; then# echo `pwd`/$fileNameecho  $1/$fileNamesh $1/start-service.sh start $1 &fifidone
}
INIT_PATH="/data/saleserver/startup"
ergodic $INIT_PATH

linux—003极限压缩

sudo 7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=200m -mf -mhc -mhcf yourfile.7z ./yourfile.dmp &
#-t7z指定压缩格式为7z,-m0=lzma2指定压缩方法为LZMA2,-mx=9指定压缩等级为9,-mfb=64指定字典大小为64MB,-md=32m指定固实块大小为32MB,-ms=on开启固实模式,-mf: 开启可执行文件压缩过滤器。,-mhc: 开启档案文件头压缩,-mhcf: 开启档案文件头完全压缩
#要将名为dir1的文件夹压缩到名为archive.7z的7z文件中
  • 7z 拓展
  • 使用LZMA算法的命令
7z a -t7z -m0=lzma 
  • LZMA2算法的命令
7z a -t7z -m0=lzma2
  • bzip2算法的命令
7z a -tbzip2
  • gz算法
7z a -tgzip archive.tar.gz file_to_compres
    • LZMA and LZMA2(基于改良与优化后的LZ77算法LZMA2是LZMA的改良版本,提供比LZMA更好的多线程支持。但是压缩率在某些情况下可能更糟)bzip2 算法为了使用LZMA2达到最佳压缩率,建议使用1或2个CPU线程。如果将LZMA2与两个以上的线程一起使用,则7-zip将数据拆分为多个块,并分别压缩这些块(每个块2个线程)。7z格式适用于压缩大文件或者文件夹,能提供较高的压缩比。

    • bz 文件格式BWT (Burrows-Wheeler Transform) 算法 为文本文件提供高速和相当不错的压缩率。适合压缩文本文件和源码。

    • gz 文件格式Deflate算法是ZIP和GZip格式的标准压缩,压缩率较低,提供了快速的压缩和解压缩。Deflate方法仅支持32 KB字典。gz格式可有效地压缩文本中的重复字符,例如HTML文件、CSS文件、JavaScript文件需要快速压缩和解压缩的场景。对于复杂的文件类型甚至无压缩效果.

  • tar(只起打包作用,无压缩=x) 显示进度条

tar -cf - a.csv | pv -s $(du -sb a.csv | awk '{print \$1}') | gzip > a.tgz
#在Linux环境下,可以使用pv命令来显示tar命令的压缩和解压进度。pv命令用于监视数据通过pipe的进度,能够显示耗时、完成率(进度条)、当前吞吐率、总传输字节等信息。使用方式是在两个程序之间,以合适的参数插入
pv question.tar.gz | tar -zxf - #解压
  • 显示进程信息(cpu内存)
    • ps命令和grep命令来实时监控特定进程
while true; dops aux | grep '7z' | grep -v 'grep'sleep 1
done
#这个脚本会无限循环,每秒更新一次7z进程的信息。ps aux会显示所有进程的详细信息,包括CPU和内存使用情况。然后,grep '7z'会从这些信息中筛选出7z进程的信息,最后,grep -v 'grep'会排除掉包含'grep'的行,因为我们不需要显示搜索进程自身。#USER:运行进程的用户名称
#PID:进程ID
#%CPU:进程使用的CPU百分比
#%MEM:进程使用的内存百分比
#VSZ:进程使用的虚拟内存量(KB)
#RSS:进程使用的未交换物理内存量(KB)
#START:进程启动时的时间
#TIME:CPU时间,即进程启动后占用CPU的总时间
#COMMAND:启动进程的命令行命令#awk可以选择只想显示的信息
while true; dops aux | grep '7z' | grep -v 'grep' | awk '{print \$3,\$4}'sleep 1
done

—004 .desktop文件&&桌面图标

  • 文件基本格式
[Desktop Entry]
Name=<应用程序名>
Type=Application
Exec=<应用程序完整路径>
Icon=<应用程序图标的完整路径>
# Name: desktop 文件最终显示的名称(一定要注意和 desktop 文件名的区别)
#Type: 用于指定 desktop 文件的类型(包括 3 种类型:Application、Link、Directory)
#Exec: 用于指定二进制可执行程序的完整路径
#Icon: 指定应用程序图标的完整路径(可以省略后缀名)。图标支持 png 格式、svg 格式等,图标的推荐尺寸为 128x128。
  • eg
sudo vi clion.desktop
[Desktop Entry]
Name=CLion
Type=Application
Exec=/opt/clion-2018.3.3/bin/clion.sh
Icon=/opt/clion-2018.3.3/bin/clion
Categories=Development#启动器本质是一个位于 /usr/share/applications/路径下的目录
sudo cp ~/Desktop/clion.desktop /usr/share/applications # 把 clion.desktop 复制一份到启动器目录下
  • eg2
    • firedev for desk
   [Desktop Entry]Name=Firefox Developer EditionGenericName=Web BrowserExec=/usr/bin/firefox-developer-edition-en-us-kbx %uIcon=firefox-developer-editionTerminal=falseType=ApplicationMimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;StartupNotify=trueCategories=Network;WebBrowser;Keywords=web;browser;internet;Actions=new-window;new-private-window;StartupWMClass=Firefox Developer Edition[Desktop Action new-window]Name=Open a New WindowExec=/usr/bin/firefox-developer-edition-en-us-kbx %u[Desktop Action new-private-window]Name=Open a New Private WindowExec=/usr/bin/firefox-developer-edition-en-us-kbx --private-window %u

—005u盘/硬盘挂载与bug处理

  • linux无法查看 识别硬盘
lsblk 
#查看  ->发现没有看到那块硬盘
ls /sys/class/scsi_host/ -l
# 查看当前系统有多少个host目录#有多少个host就往多少个host目录里面文件scan追加"- - -"
vi disk_cat.sh#!/bin/bash
scsisum=`ls -l /sys/class/scsi_host/host*|wc -l`
for ((i=0;i<${scsisum};i++))
doecho "- - -" > /sys/class/scsi_host/host${i}/scan
done#创建分区
fdisk -l
fdisk /dev/sda
#n表示new,p表示主分区,1是分区号,指定开始扇区,回车使用默认,即扇区开始位置,指定结束分区,同样回车使用默认,即扇区结束位置,w保存
# 格式化挂载
```shell
mkfs -t xfs /dev/sda1
#刚才选择了 分区号1 变成了 sda1
# 格式化分区,指定格式为xfsmount /dev/sda1 /data
#选择路径挂载

在这里插入图片描述
在这里插入图片描述

linux—006忘记密码怎么办

  • 当你拿到物理机的时候 你实际上已经拿到了最高权限
  • 因为你可以进入系统编辑模式去修改root密码
    所以今天学完之后 你有没有考虑去偷公司服务器 扛着服务器一边跑路一边改密码
  • centos7
    未没进去前秒接e取消前摇
    在这里插入图片描述方向键控制向下滑
    在这里插入图片描述
    将ro改成 rw init=/sysroot/bin/sh

在这里插入图片描述

ctrl+x centos7之后没有十年前那么多bug以及需要挂载的问题了 直接输入passwd修改密码就好

passwd
如果是中文安装这边会乱码的
  • kali
    • 同理 也是在刚刚出现系统的时候点e进入编辑模式
      在这里插入图片描述
      下滑到这一行
      在这里插入图片描述
  • 这边也是把ro改成rw,删掉quiet splash,在后面加上init=/bin/bash ,ctrl+x退出当前界面,到下图的界面
    在这里插入图片描述

—007kali/debain 包管理

  • apt
高级包装工具(Advanced Packaging Tools,简称APT)是Debian及其衍生发行版(如Ubuntu)的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包。
  • 安装卸载
# 搜索查看sudo apt-cache search 
#搜索软件
sudo apt-cache show 
#查看包的相关信息、大小、版本等
sudo apt-cache stats 
#显示当前系统所有使用的Debain数据源的统计信息
sudo apt-cache depends 
#查找软件包的依赖关系# 安装sudo apt-get install 
#普通安装
sudo apt-get -f install
# 修复安装
sudo apt-get -reinstall install 
#重新安装 #更新sudo apt-get update
#		刷新软件源
sudo apt-get list --uygradable
#		查看可更新软件
sudo apt-get upgrade
#更新所有包
sudo apt-get dist-upgrade
#连带内核一起更新
sudo apt autoremove
#更新完成之后清除不需要的旧组件#卸载软件sudo apt-get remove 
#移除式卸载,只是删掉数据和可执行文件sudo apt-get --purge remove 
#清除式卸载,完全卸载同时清除配置文件
sudo apt-get autoremove --purge 
#删除包及其依赖的软件包+配置文件等			==最彻底的方法
  • dpkg----大多非内置包处理工具
    • 安装卸载
# 安装
sudo dpkg -i package-name.deb# 卸载sudo dpkg -r #移除一个已安装的包。
sudo dpkg --remove 
#删掉数据和可执行文件
dpkg -P
#完全清除一个已安装的包。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件 ==最彻底的方法
  • dpkg参数
说明命令示例
安装软件dpkg -i <.deb file name>dpkg -i avg71flm_r28-1_i386.deb
安装一个目录下面所有的软件包dpkg -Rdpkg -R /usr/local/src
释放软件包,但是不进行配置dpkg –unpack package_file 如果和-R一起使用,参数可以是一个目录dpkg –unpack avg71flm_r28-1_i386.deb
重新配置和释放软件包dpkg –configure package_file 如果和-a一起使用,将配置所有没有配置的软件包dpkg –configure avg71flm_r28-1_i386.deb
删除软件包(保留其配置信息)dpkg -r dpkg -r avg71flm
替代软件包的信息dpkg –update-avail
合并软件包信息dpkg –merge-avail
从软件包里面读取软件的信息dpkg -A package_file
删除一个包(包括配置信息) dpkg -P
丢失所有的Uninstall的软件包信息dpkg –forget-old-unavail
删除软件包的Avaliable信息dpkg –clear-avail
查找只有部分安装的软件包信息dpkg -C
比较同一个包的不同版本之间的差别dpkg –compare-versions ver1 op ver2
显示帮助信息dpkg –help
显示dpkg的Licencedpkg –licence (or) dpkg –license
显示dpkg的版本号dpkg –version
建立一个deb文件dpkg -b direc×y [filename]
显示一个Deb文件的目录dpkg -c filename
显示一个Deb的说明dpkg -I filename [control-file]
搜索Deb包dpkg -l package-name-pattern dpkg -I vim
显示所有已经安装的Deb包,同时显示版本号以及简短说明dpkg -l
报告指定包的状态信息dpkg -s package-name dpkg -s ssh
显示一个包安装到系统里面的文件目录信息dpkg -L package-Namedpkg -L apache2
搜索指定包里面的文件(模糊查询)dpkg -S filename-search-pattern
显示包的具体信息dpkg -p package-namedpkg -p cacti

—008 ssh安全使用

  • 配置文件
    • /etc/ssh/ssh_config
  • 重要参数
    • Compression yes      # 是否可以使用压缩指令?
# Host *                              # Host指令是ssh_config中最重要的指令,只有ssh连接的目标主机名能匹配此处给定模式时,才允许连接# 下面一系列配置项直到出现下一个Host指令才对此次连接生效
#   ForwardAgent no                #设置连接是否经过验证代理(如果存在)转发给远程计算机
#   ForwardX11 no                  #设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)
#   RhostsRSAAuthentication no     #设置是否使用基于rhosts的安全验证。
#   RSAAuthentication yes          #设置是否使用用RSA算法的基于rhosts的安全验证。
#   PasswordAuthentication yes     # 是否启用基于密码的身份认证机制
#   HostbasedAuthentication no     # 是否启用基于主机的身份认证机制
#   GSSAPIAuthentication no        # 是否启用基于GSSAPI的身份认证机制
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no                   # 如果设置为"yes",将禁止passphrase/password询问。比较适用于在那些不需要询问提供密# 码的脚本或批处理任务任务中。默认为"no"。
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask        # 设置为"yes",ssh将从不自动添加host key到~/.ssh/known_hosts文件,且拒绝连接那些未知的主机(即未保存host key的主机或host key已改变的主机)。# 它将强制用户手动添加host key到~/.ssh/known_hosts中。# 设置为ask将询问是否保存到~/.ssh/known_hosts文件。# 设置为no将自动添加到~/.ssh/known_hosts文件。
#   IdentityFile ~/.ssh/identity     # ssh v1版使用的私钥文件
#   IdentityFile ~/.ssh/id_rsa       # ssh v2使用的rsa算法的私钥文件
#   IdentityFile ~/.ssh/id_dsa       # ssh v2使用的dsa算法的私钥文件
#   Port 22                          # 当命令行中不指定端口时,默认连接的远程主机上的端口
#   Protocol 2,1
#   Cipher 3des                      # 指定ssh v1版本中加密会话时使用的加密协议
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc  # 指定ssh v1版本中加密会话时使用的加密协议
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no    # 功能等价于~/.ssh/rc,表示是否允许ssh连接成功后在本地执行LocalCommand指令指定的命令。
#   LocalCommand             # 指定连接成功后要在本地执行的命令列表,当PermitLocalCommand设置为no时将自动忽略该配置# %d表本地用户家目录,%h表示远程主机名,%l表示本地主机名,%n表示命令行上提供的主机名,# p%表示远程ssh端口,r%表示远程用户名,u%表示本地用户名。
#   VisualHostKey no         # 是否开启主机验证阶段时host key的图形化指纹
Host *GSSAPIAuthentication yes
  • 配置文件
    • /etc/ssh/sshd_config
  • 重要参数
  • UseDNS no
    -UseDNS 选项打开状态下,当客户端试图登录SSH服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种措施
  • AddressFamily inet
  • SyslogFacility AUTHPRIV
  • PermitRootLogin yes
  • PasswordAuthentication yes
/etc/ssh/sshd_config#配置文件概要
[root@localhost ~]# cat /etc/ssh/sshd_config#Port 22                # 服务端SSH端口,可以指定多条表示监听在多个端口上
#ListenAddress 0.0.0.0  # 监听的IP地址。0.0.0.0表示监听所有IP,指定IP只监听指定的IP
Protocol 2              # 使用SSH 2版本, 如果要同时支持两者,就必须要使用 2,1 这个分隔了#####################################
#          私钥保存位置               #
#####################################
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key      # SSH 1保存位置/etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key  # SSH 2保存RSA位置/etc/ssh/ssh_host_rsa _key
#HostKey /etc/ssh/ssh_host_dsa_key  # SSH 2保存DSA位置/etc/ssh/ssh_host_dsa _key###################################
#           杂项配置               #
###################################
#PidFile /var/run/sshd.pid        # 服务程序sshd的PID的文件路径
#ServerKeyBits 1024               # 服务器生成的密钥长度
#SyslogFacility AUTH              # 使用哪个syslog设施记录ssh日志。日志路径默认为/var/log/secure
#LogLevel INFO                    # 记录SSH的日志级别为INFO
#LoginGraceTime 2m                # 身份验证阶段的超时时间,若在此超时期间内未完成身份验证将自动断开###################################
#   以下项影响认证速度               #
###################################
#UseDNS yes                       # 指定是否将客户端主机名解析为IP,以检查此主机名是否与其IP地址真实对应。默认yes。
# 由此可知该项影响的是主机验证阶段。建议在未配置DNS解析时,将其设置为no,否则主机验证阶段会很慢###################################
#   以下是和安全有关的配置           #
###################################
#PermitRootLogin yes              # 是否允许root用户登录
#MaxSessions 10                   # 最大客户端连接数量
#GSSAPIAuthentication no          # 是否开启GSSAPI身份认证机制,默认为yes
#PubkeyAuthentication yes         # 是否开启基于公钥认证机制
#AuthorizedKeysFile  .ssh/authorized_keys  # 基于公钥认证机制时,来自客户端的公钥的存放位置
PasswordAuthentication yes        # 是否使用密码验证,如果使用密钥对验证可以关了它
#PermitEmptyPasswords no          # 是否允许空密码,如果上面的那项是yes,这里最好设置no
StrictModes yes              # 当使用者的 host key 改变之后,Server 就不接受联机,可以抵挡部分的木马程序!
#RSAAuthentication yes          # 是否使用纯的 RSA 认证!?仅针对 version 1 ! 
###################################
#   以下可以自行添加到配置文件        #
###################################
DenyGroups  hellogroup testgroup  # 表示hellogroup和testgroup组中的成员不允许使用sshd服务,即拒绝这些用户连接
DenyUsers   hello test            # 表示用户hello和test不能使用sshd服务,即拒绝这些用户连接###################################
#   以下一项和远程端口转发有关        #
###################################
#GatewayPorts no                  # 设置为yes表示sshd允许被远程主机所设置的本地转发端口绑定在非环回地址上
# 默认值为no,表示远程主机设置的本地转发端口只能绑定在环回地址上 

linux–009(centos srream9 )搭建基础网络服务dnsmasq,LAMP,DVWA

  • dnsmasq
# 安装 dnsmasq 软件包
sudo dnf install -y dnsmasq
# 主配置文件
sudo vim /etc/dnsmasq.conf#设置监听接口
interface=eth0
#设置上游 DNS 服务器
server=8.8.8.8
server=8.8.4.4
# 配置本地域名解析: 查看虚拟机网络配置或者本地ip信息   内网环境
address=/example.local/192.168.0.1# 配置DHCP
dhcp-range=192.168.0.100,192.168.0.200,12h
dhcp-option=option:router,192.168.0.1# 启动并启用 dnsmasq 服务
sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq# 配置防火墙以允许 DNS 和 DHCP 通信:
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --permanent --add-service=dhcp
sudo firewall-cmd --reload# 验证 dnsmasq 配置:
dig @localhost example.local
  • 编辑/etc/hosts文件并添加DNS记录
vi /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6# add records10.0.0.30   dlp.srv.world dlp10.0.0.31   www.srv.world www
#启动并使dnsmasq在启动时运行
systemctl enable --now dnsmasq
#配置防火墙以允许DNS服务
firewall-cmd --add-service=dns
firewall-cmd --runtime-to-permanent
  • LAMP
# download
## apache
dnf -y install httpd httpd-devel
## 安装mariadb数据库及其扩展包。
dnf -y install mariadb mariadb-server
## 安装php数据库及其扩展包:
dnf -y install php php-mysqlnd php-gd libjpeg* php-ldap php-odbc php-pear php-xml  php-mbstring php-bcmath php-mhash# 防火墙/port
# apache
sudo firewall-cmd --add-service=http --permanent
#为 MariaDB 开放端口(默认是 3306):
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
#重新加载防火墙配置以使更改生效:
sudo firewall-cmd --reload
  • 验证apache
vi /var/www/html/info.php
<?php
phpinfo();
?>
  • mysql 设置mariadb管理员密码并验证密码
mysqladmin -u root password 123456
mysql -u root -p
  • 配置DVWA
git clone https://github.com/digininja/DVWA.git
sudo mv DVWA /var/www/html/dvwa
sudo vi /var/www/html/dvwa/config/config.inc.php
   $_DVWA[ 'db_user' ] = 'dvwa';$_DVWA[ 'db_password' ] = 'p@ssw0rd';$_DVWA[ 'db_database' ] = 'dvwa';$_DVWA[ 'db_server' ] = 'localhost';
  • 由于MariaDB不支持root用户登录,所以我们需要创建一个新的用户(例如dvwa)。并且,db_server需要改成localhost
   mysql -u root -pCREATE DATABASE dvwa;CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'p@ssw0rd';GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';FLUSH PRIVILEGES;EXIT;
  • 访问DVWA的安装页面,点击“创建数据库”按钮。然后,你应该能看到DVWA的登录页面。默认的用户名为admin,密码为password。注意,这是DVWA默认的,并未更改

—010自动批量配置n台全分布hadoop负载集群脚本可执行脚本

#!/bin/bash# Define the software versions and installation directory
jdk_version="jdk-11.0.12"
mysql_version="mysql-8.0.26"
hadoop_version="hadoop-3.3.5"
hive_version="hive-3.1.2"
sqoop_version="sqoop-1.4.7"
zookeeper_version="zookeeper-3.7.0"
install_dir="/opt"# Function to install JDK
install_jdk() {wget https://example.com/$jdk_version.tar.gztar -xzvf $jdk_version.tar.gzmv $jdk_version $install_dirln -s $install_dir/$jdk_version /usr/local/$jdk_version
}# Function to install MySQL
install_mysql() {wget https://example.com/$mysql_version.tar.gztar -xzvf $mysql_version.tar.gzmv $mysql_version $install_dirln -s $install_dir/$mysql_version /usr/local/$mysql_version
}# Function to install Hadoop
install_hadoop() {wget https://example.com/$hadoop_version.tar.gztar -xzvf $hadoop_version.tar.gzmv $hadoop_version $install_dirln -s $install_dir/$hadoop_version /usr/local/$hadoop_version
}# Function to install Hive
install_hive() {wget https://example.com/$hive_version.tar.gztar -xzvf $hive_version.tar.gzmv $hive_version $install_dirln -s $install_dir/$hive_version /usr/local/$hive_version
}# Function to install Sqoop
install_sqoop() {wget https://example.com/$sqoop_version.tar.gztar -xzvf $sqoop_version.tar.gzmv $sqoop_version $install_dirln -s $install_dir/$sqoop_version /usr/local/$sqoop_version
}# Function to install Zookeeper
install_zookeeper() {wget https://example.com/$zookeeper_version.tar.gztar -xzvf $zookeeper_version.tar.gzmv $zookeeper_version $install_dirln -s $install_dir/$zookeeper_version /usr/local/$zookeeper_version
}# Call the installation functions
install_jdk
install_mysql
install_hadoop
install_hive
install_sqoop
install_zookeeper# Configuration steps
cd /usr/local/$hadoop_version/etc/hadoop
cp mapred-site.xml.template mapred-site.xml
cp core-site.xml.template core-site.xml
cp hdfs-site.xml.template hdfs-site.xml
cp yarn-site.xml.template yarn-site.xmlcd /usr/local/$hive_version/conf
cp hive-env.sh.template hive-env.sh
cp hive-site.xml.template hive-site.xmlcd /usr/local/$sqoop_version/conf
cp sqoop-env-template.sh sqoop-env.sh
cp sqoop.properties.template sqoop.propertiescd /usr/local/$zookeeper_version/conf
cp zoo_sample.cfg zoo.cfgecho "
<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/core-site.xmlecho "
<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/hdfs-site.xmlecho "
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/mapred-site.xml# 配置Hadoop yarn-site.xml
echo "
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.resourcemanager.hostname</name><value>localhost</value></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>2</value></property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/yarn-site.xml# 配置Hive hive-site.xml
echo "
<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>password</value></property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property>
</configuration>
" > /usr/local/$hive_version/conf/hive-site.xml# 配置Sqoop sqoop-env.sh
echo "
export HADOOP_COMMON_HOME=/usr/local/$hadoop_version
export HADOOP_MAPRED_HOME=/usr/local/$hadoop_version
export HIVE_HOME=/usr/local/$hive_version
export ZOOKEEPER_HOME=/usr/local/$zookeeper_version
" > /usr/local/$sqoop_version/conf/sqoop-env.sh# 配置Zookeeper zoo.cfg
echo "
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
" > /usr/local/$zookeeper_version/conf/zoo.cfg
  • 将以上脚本同时分发给n台服务器并运行
#!/bin/bash# Define the script file and IP address file
script_file="install.sh"
ip_file="ip_addresses.txt"# Read the IP addresses from the file and execute the script on each server
while IFS= read -r ip_address
doecho "Running script on $ip_address"scp $script_file $ip_address:~/   # Transfer the script file to the serverssh $ip_address "bash ~/$(basename $script_file)"   # Execute the script on the server
done < "$ip_file"

kali scp注意事项

  • Kali Linux是一款基于Debian的Linux发行版,专门用于高级渗透测试和安全审核。在Kali Linux中,你可以使用SSH和SCP命令进行远程登录和文件传输操作。以下是常用的SSH和SCP命令演示以及遇到的常见报错和解决方法:
#使用SSH命令登录远程Linux服务器:
ssh -l <用户名> -p <端口号> <主机名或IP>
#例如,登录远程服务器的root用户,端口号为22:
ssh -l root -p 22 192.168.0.1
# SCP命令演示:
##   将本地文件拷贝到远程服务器:
scp -P <端口号> <本地文件路径> <用户名>@<计算机IP或名称>:<远程路径>
#例如,将本地的file.txt文件拷贝到远程服务器的/tmp目录下:
scp -P 22 file.txt username@192.168.0.1:/tmp
##    从远程服务器将文件拷回本地:
scp -P <端口号> <用户名>@<计算机IP或名称>:<文件名> <本地路径>
##从远程服务器将/tmp目录下的file.txt文件拷回本地的/home/user目录下:
scp -P 22 username@192.168.0.1:/tmp/file.txt /home/user
## 将本地目录拷贝到远程服务器:
scp -r -P <端口号> <本地目录路径> <用户名>@<计算机IP或名称>:<远程路径>
## 例如,将本地的dir目录拷贝到远程服务器的/tmp目录下:
scp -r -P 22 dir username@192.168.0.1:/tmp
##从远程服务器将目录拷回本地:
scp -r -P <端口号> <用户名>@<计算机IP或名称>:<目录名> <本地路径>
## 例如,从远程服务器将/tmp目录拷回本地的/home/user目录下:
scp -r -P 22 username@192.168.0.1:/tmp /home/user
  • 注意事项和避免报错:

    • 若在执行SCP上传文件时报错提示对方没有安装openssh-clients软件包,可以尝试在远程服务器上安装openssh-clients软件包来解决该问题。
    • 在使用SCP命令时,需要确保本地文件和目录的路径是正确的,并且远程服务器的用户名、IP地址、端口号和路径也是正确的。
    • 在进行SSH和SCP操作时,需要确保远程服务器已经开启了SSH服务,并且相应的端口号没有被防火墙阻止。
    • 可能还会遇到其他报错,例如权限问题、网络连接问题等。在遇到报错时,可以根据报错信息进行排查,查看相关日志文件来获取更多详细信息,然后针对具体问题进行解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/131103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ICP学习记录

1. 流程图 ICP&#xff08;一&#xff09;原理详解_icp原理-CSDN博客 ICP算法详解——我见过最清晰的解释-CSDN博客 ICP算法理解-CSDN博客 ICP知识点梳理笔记_icp非凸_KalutSirocco的博客-CSDN博客 【精选】【图像配准】点云配准ICP算法介绍&#xff1a;基础流程、ICP算法…

MyBatis-Plus复习总结(一)

文章目录 一、环境搭键二、基本CRUD2.1 BaseMapper2.2 插入2.3 删除2.4 修改2.5 查询 三、通用Service四、常用注解4.1 雪花算法4.2 注解TableLogic 五、条件构造器和常用接口5.1 Wrapper介绍5.2 QueryWrapper5.3 UpdateWrapper5.4 condition5.5 LambdaQueryWrapper5.6 LambdaU…

Gradle中的依赖Dependencies说明与使用总结

【1】依赖的方式 Gradle 中的依赖分别为直接依赖&#xff0c;项目依赖&#xff0c;本地jar 依赖。 dependencies {//①.依赖当前项目下的某个模块[子工程]implementation project(:subject01)//②.直接依赖本地的某个jar文件implementation files(libs/foo.jar, libs/bar.jar…

行业安卓主板-基于RK3568/3288/3588的电子班牌/人脸识别门禁/室内对讲门禁方案解决方案(二)

电子班牌 智能电子班牌可在主页实时显示班级全面的基本信息&#xff0c;包括天气、班名、课程表、值日表等&#xff0c;并发布学校通知、班级通知。学生可刷卡自动登陆系统进行课堂反馈&#xff0c;教师和家长可及时了解教学反馈&#xff0c;打通学校、教师、学生之间的互动通…

Hive 解析 JSON 字符串数据的实现方式

文章目录 通过方法解析现实示例 通过序列化实现示例 通过方法解析现实 在 Hive 中提供了直接解析 JSON 字符串数据的方法 get_json_object(json_txt, path)&#xff0c;该方法参数解析如下&#xff1a; json_txt&#xff1a;顾名思义&#xff0c;就是 JSON 字符串&#xff1b;…

elasticsearch索引按日期拆分

1.索引拆分原因 如果单个索引数据量过大会导致搜索变慢&#xff0c;而且不方便清理历史数据。 例如日志数据每天量很大&#xff0c;而且需要定期清理以往日志数据。例如原索引为sc_all_system_log&#xff0c;现按天拆分索引sc_all_system_log20220902&#xff0c;sc_all_syste…

B-DS二叉树_输出所有目标路径

Description 给定二叉树和一个整数目标targetSum&#xff0c;输出所有从根结点到叶子结点的路径总和等于targetSun的路径。 Input 第一行输入t&#xff0c;表示有t个测试样例。 第二行起&#xff0c;每一行首先输入一个整数targetSum&#xff0c;接着输入n&#xff0c;接着输…

AMD老电脑超频及性能提升方案及实施

收拾电子元件的时候找到了若干古董的CPU 其中有一个X3 440 是原来同学主板烧了之后给我的&#xff0c;我从网上配了AM2 昂达主板&#xff0c;然后又买了AMD兼容内存&#xff0c;组成了win7 64位电脑&#xff0c;用起来非常不错&#xff0c;我把硬件配置和升级过程说明下&#x…

ELK极简上手

目录 引言 首先&#xff0c;下载相关的包 其次&#xff0c;安装启动elasticsearch 下一步&#xff0c;安装并启动logstash 最后&#xff0c;安装并启动kibana 进一步的&#xff0c;测试数据的流动 引言 最近整理电脑发现之前的一篇ELK极简入门笔记&#xff0c;现整理发出…

开发小程序需要多少钱?

随着移动互联网的快速发展&#xff0c;小程序已经成为了企业、个人创业者获取用户、提升品牌影响力的重要工具。然而&#xff0c;对于许多初次接触小程序的人来说&#xff0c;开发小程序需要多少钱&#xff0c;是他们最关心的问题。 首先我们需要明确的是&#xff0c;开发小程…

【漏洞复现】Drupal_小于7.32版本 _“Drupalgeddon” SQL注入漏洞(CVE-2014-3704)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 说明内容漏洞编号CVE-2014-3704漏洞名称Drupal “Drupalgeddon” SQL注入漏洞漏洞…

hackergame2023菜菜WP

文章目录 总结Hackergame2023更深更暗组委会模拟器猫咪小测标题HTTP集邮册Docker for everyone惜字如金 2.0Git? Git!高频率星球低带宽星球小型大语言模型星球旅行日记3.0JSON ⊂ YAML? 总结 最近看到科大在举办CTF比赛&#xff0c;刚好我学校也有可以参加&#xff0c;就玩了…

Lamport Clock算法

Lamport Clock 是一种表达逻辑时间的逻辑时钟&#xff08;logical clock&#xff09;&#xff0c;能够计算得到历史事件的时间偏序关系。 假设 P0进程是分布式集群中心节点中的监控者&#xff0c;用于统一管理分布式系统中事件的顺序。其他进程在发送消息之前和接受事件消息之后…

路由器基础(十二):IPSEC VPN配置

一、IPSec VPN基本知识 完整的IPSec协议由加密、摘要、对称密钥交换、安全协议四个部分组成。 两台路由器要建立IPSecVPN连接&#xff0c;就需要保证各自采用加密、摘要、对称密钥 交换、安全协议的参数一致。但是IPSec协议并没有确保这些参数一致的手段。 同时&#xff0c;IP…

Java 多线程的三大特性

在JAVA中&#xff0c;线程有原子性、可见性和有序性三大特性。 1.原子性 1.1 定义 对于涉及共享变量的操作&#xff0c;若该操作从其执行线程以外的任意线程来看都是不可分割的&#xff0c;那么我们就说该操作具有原子性。它包含以下两层含义&#xff1a; 访问&#xff08;读、…

【漏洞复现】Django_debug page_XSS漏洞(CVE-2017-12794)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞分析3、漏洞验证 说明内容漏洞编号CVE-2017-12794漏洞名称Django_debug page_XSS漏洞漏洞评级影响范…

与AI对话的艺术:如何优化Prompt以获得更好的响应反馈

前言 在当今数字化时代&#xff0c;人工智能系统已经成为我们生活的一部分。我们可以在智能助手、聊天机器人、搜索引擎等各种场合与AI进行对话。然而&#xff0c;要获得有益的回应&#xff0c;我们需要学会与AI进行有效的沟通&#xff0c;这就涉及到如何编写好的Prompt。 与…

开启AWS的ubuntu服务器的root用户登录权限

设置root用户密码 输入以下命令修改root用户密码 sudo passwd root输入以下命令切换到root用户 su root仅允许root用户用密码登录 输入以下命令编辑ssh配置文件 vi /etc/ssh/sshd_config新增以下配置允许root用户登录 PermitRootLogin yes把PasswordAuthentication修改为…

计算机网络第4章-IPv4

IPv4数据报格式 IPv4数据报格式如下图所示 其中&#xff0c;有如下的关键字段需要特别注意&#xff1a; 版本&#xff08;号&#xff09;&#xff1a; 版本字段共4比特&#xff0c;规定了数据报的IP协议版本。通过查看版本号吗&#xff0c;路由器能确定如何解释IP数据报的剩…

Python爬虫实战-批量爬取下载网易云音乐

大家好&#xff0c;我是python222小锋老师。前段时间卷了一套 Python3零基础7天入门实战https://blog.csdn.net/caoli201314/article/details/1328828131小时掌握Python操作Mysql数据库之pymysql模块技术https://blog.csdn.net/caoli201314/article/details/133199207一天掌握p…