linux入门到地狱

news2024/11/27 4:14:03

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 `
    do
        if [ -d $1"/"$fileName  ]
        then
             ergodic $1"/"$fileName 
        else
          # echo $fileName
            if [[ ${fileName} == 'start-service.sh' ]]; 
             then
        # echo `pwd`/$fileName
        echo  $1/$fileName
                 sh $1/start-service.sh start $1 &
               fi
        fi
    done
}
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; do
    ps 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; do
    ps 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 Edition
   GenericName=Web Browser
   Exec=/usr/bin/firefox-developer-edition-en-us-kbx %u
   Icon=firefox-developer-edition
   Terminal=false
   Type=Application
   MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
   StartupNotify=true
   Categories=Network;WebBrowser;
   Keywords=web;browser;internet;
   Actions=new-window;new-private-window;
   StartupWMClass=Firefox Developer Edition
   [Desktop Action new-window]
   Name=Open a New Window
   Exec=/usr/bin/firefox-developer-edition-en-us-kbx %u
   [Desktop Action new-private-window]
   Name=Open a New Private Window
   Exec=/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++))
do
   echo "- - -" > /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
# 格式化分区,指定格式为xfs

mount /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/hosts

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    # add records
    10.0.0.30   dlp.srv.world dlp
    10.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 -p
   CREATE 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.gz
    tar -xzvf $jdk_version.tar.gz
    mv $jdk_version $install_dir
    ln -s $install_dir/$jdk_version /usr/local/$jdk_version
}

# Function to install MySQL
install_mysql() {
    wget https://example.com/$mysql_version.tar.gz
    tar -xzvf $mysql_version.tar.gz
    mv $mysql_version $install_dir
    ln -s $install_dir/$mysql_version /usr/local/$mysql_version
}

# Function to install Hadoop
install_hadoop() {
    wget https://example.com/$hadoop_version.tar.gz
    tar -xzvf $hadoop_version.tar.gz
    mv $hadoop_version $install_dir
    ln -s $install_dir/$hadoop_version /usr/local/$hadoop_version
}

# Function to install Hive
install_hive() {
    wget https://example.com/$hive_version.tar.gz
    tar -xzvf $hive_version.tar.gz
    mv $hive_version $install_dir
    ln -s $install_dir/$hive_version /usr/local/$hive_version
}

# Function to install Sqoop
install_sqoop() {
    wget https://example.com/$sqoop_version.tar.gz
    tar -xzvf $sqoop_version.tar.gz
    mv $sqoop_version $install_dir
    ln -s $install_dir/$sqoop_version /usr/local/$sqoop_version
}

# Function to install Zookeeper
install_zookeeper() {
    wget https://example.com/$zookeeper_version.tar.gz
    tar -xzvf $zookeeper_version.tar.gz
    mv $zookeeper_version $install_dir
    ln -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.xml

cd /usr/local/$hive_version/conf
cp hive-env.sh.template hive-env.sh
cp hive-site.xml.template hive-site.xml

cd /usr/local/$sqoop_version/conf
cp sqoop-env-template.sh sqoop-env.sh
cp sqoop.properties.template sqoop.properties

cd /usr/local/$zookeeper_version/conf
cp zoo_sample.cfg zoo.cfg

echo "
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/core-site.xml

echo "
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/hdfs-site.xml

echo "
<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
do
    echo "Running script on $ip_address"
    scp $script_file $ip_address:~/   # Transfer the script file to the server
    ssh $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.coloradmin.cn/o/1173067.html

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

相关文章

行业安卓主板-基于RK3568/3288/3588的AI视觉秤/云相框/点餐机/明厨亮灶行业解决方案(一)

AI视觉秤 单屏Al秤集成独立NPU&#xff0c;可达0.8Tops算力&#xff0c;令AI运算效率大幅提升&#xff0c;以实现生鲜商品快速准确识别&#xff0c;快速称重打印标签&#xff0c;降低生鲜门店运营成本&#xff0c;缓解高峰期称重排队拥堵的现象&#xff0c;提高称重效率&#…

1、Sentinel基本应用限流规则(1)

Sentinel基本应用&限流规则 1.1 概述与作用 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。缓存、降级和限流是保护微服务系统运行稳定性的三大利器。 缓存&#xff1a;提升系统访问速度和增大系统能处理的容量 降级&#xff1a;当服务出问题或者影…

如何写复盘报告

复盘报告在it公司中是为了在出现事情后&#xff0c;我们更好的回顾事情的前因后果&#xff0c;定位问题&#xff0c;指定解决措施&#xff0c;并且宣导&#xff0c;让这类事情减少发生的概率。那复盘报告一般怎样写合适呢&#xff1f;下来我们就看看&#xff0c; 一、一般会先…

Elasticsearch:RAG vs Fine-tunning (大语言模型微调)

如果你对 RAG 还不是很熟悉的话&#xff0c;请阅读之前的文章 “Elasticsearch&#xff1a;什么是检索增强生成 - RAG&#xff1f;”。你可以阅读文章 “Elasticsearch&#xff1a;在你的数据上训练大型语言模型 (LLM)” 来了解更多关于如何训练你的模型。在今天的文章中&#…

Linux项目自动化构建工具-make/Makefile使用

make/Makefile使用介绍 make是一个命令makefile是一个在当前目录下存在的一个具有特定格式的文本文件 ​ 下面我们设计一个场景&#xff0c;实现make命令对我们code.c文件进行编译和删除。 1 #include<stdio.h> 2 3 int main() 4 { 5 printf("hello,world!…

账户权限控制

1.首先配置一个单群组4节点的链 1.1创建操作目录 cd ~ && mkdir -p fisco && cd fisco 1.2下载国内脚本 curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.9.1/build_chain.sh && chmod ux bu…

Python算法例7 四数乘积

1. 问题描述 给定一个长度为n的数组a和一个正整数k&#xff0c;从数组中选择四个数&#xff0c;要求四个数的乘积小于等于k&#xff0c;求方案总数。 2. 问题示例 给定n5&#xff0c;a[1&#xff0c;1&#xff0c;1&#xff0c;2&#xff0c;2]&#xff0c;k3&#xff0c;返…

R语言 复习 习题图片

这是日天土申哥不知道从哪淘来的R语言复习知识点图片&#xff0c;大部分内容都是课后习题的答案 加油吧&#xff0c;骚年&#xff0c;考个好分数

【重学C++基础知识笔记】详细版

基础 常量 C++ 中有两种简单的定义常量的方法: 使用#define,如:#define PI 3.1415926;使用const, 如:const double PI = 3.1415926;注明: 尽量使用const定义变量,#define不会出现在编译器期 #define ASPECT RATIO 1.653 // 在编译时出错,很难排错const doubl…

windows自动登陆

新建文本粘贴下面代码&#xff0c;另存为注册表文件 Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Driver Signing] "Policy"hex:00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]"DefaultUserN…

04 矩阵乘法与线性变换复合

矩阵乘法与线性变换复合 复合变换 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 复合变换 图1 复合变换 复合变换原则&#xff0c;依次变换&#xff0c;即先变换的矩阵乘待变换的向量后&#xff0c;得到的结果&#xff0c;再用后变换的矩阵乘此结果向量。从矩…

SPSS多因素方差分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

CleanMyMac X2024登录激活码

本篇将为各位小伙伴们集中讲解一下&#xff0c;Mac清理工具CleanMyMac X的下载、安装与激活是如何进行的。 系统&#xff1a;macOS 10.14&#xff08;在10.15以及Big Sur中的安装激活教程相同&#xff09; 下载CleanMyMac X 登录CleanMyMac X下载页面&#xff0c;然后点击【…

3、Sentinel 动态限流规则

Sentinel 的理念是开发者只需要关注资源的定义&#xff0c;当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则&#xff1a; • 通过 API 直接修改 (loadRules) • 通过 DataSource 适配不同数据源修改 通过 API 修改比较直观&#xff0c;可以通…

sql基础+考点+题

查询&#xff1a;select from 筛选&#xff1a;where and和or 排序&#xff1a;order by&#xff08;降序排列需要指定DESC关键字&#xff09; join&#xff1a;left join 、right join 和inner join 分组聚合&#xff1a;group by ---搭配count , sum , avg 过滤&#x…

2023年中国自然语言处理行业研究报告

第一章 行业概况 1.1 定义 自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是一门交叉学科&#xff0c;它结合了计算机科学、人工智能和语言学的知识&#xff0c;旨在使计算机能够理解、解释和生成人类语言。NLP的核心是构建能够理解和…

Ubuntu 创建用户

在ubuntu系统中创建用户&#xff0c;是最基本的操作。与centos7相比&#xff0c;有较大不同。 我们通过案例介绍&#xff0c;讨论用户的创建。 我们知道&#xff0c;在linux中&#xff0c;有三类用户&#xff1a;超级管理员 root 具有完全权限&#xff1b;系统用户 bin sys a…

MinIO 分布式文件(对象)存储

简介 MinIO是高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品。 在中国&#xff1a;阿里巴巴、腾讯、百度、中国联通、华为、中国移动等等9000多家企业也都在使用MinIO产品 官网地址&#xff1a;http://www.minio.org.cn/ 下载 官网下载(8.4.3版本)&#x…

云计算实战项目之---学之思在线考试系统

简介&#xff1a; 学之思开源考试系统是一款 java vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序&#xff0c;能覆盖到pc机和手机等设备。 支持多种部署方式&#xff1a;集成部署、前后端分离部署、docker部…

MySQL Too Many Connections

一、前言 上一篇 《磁盘爆了》 我们讲磁盘撑爆造成Java应用无法启动&#xff0c;今天我们来讲一下MySQL连接被撑爆应用启动后连不上数据库的问题。 二、max_connections配置 我们自己安装的开源MySQL5.6 默认的max_connections(最大连接数)值为151&#xff0c;为什么是151咱…