Linux基础

Linux目录结构

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/:
根目录,每一个文件和目录都从这里开始。只有root用户具有该目录下的写权限。

/bin:
用户二进制文件,包含二进制可执行文件。系统的所有用户使用的命令都设在这里,例如:ps,ls,ping,grep,cp等。

/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :
设备文件,dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/opt:
可选的附加应用程序,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库就可以放到这个目录下。默认是空的。

/root:
该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:
s就是Super User的意思,系统二进制文件,在这个目录下的linux命令通常由系统管理员使用。

/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin:
系统用户使用的应用程序。

/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。

/tmp:
这个目录是用来存放一些临时文件的。

/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

Linux文件属性

image-20230909103041188

1
2
3
4
5
6
7
8
9
10
r:4
w:2
x:1

属主:u(user)
数组:g(group)
其他:o(other)

chmod u+x test
chown root.root test

文件目录管理

1
2
3
4
5
6
7
8
9
10
11
ls        显示目录内容列表
cd 切换用户当前工作目录
pwd 绝对路径方式显示用户当前工作目录
cp 将源文件或目录复制到目标文件或目录中
rm 用于删除给定的文件和目录
mv 用来对文件或目录重新命名
mkdir 用来创建目录
rmdir 用来删除空目录

绝对路径:由根目录写起 root@kali:~# cd /var/www/html
相对路径:不是由根写起 root@kali:/var/www/html# cd ../../log/

Kali-Linux配置

用户配置

  • kali用户
1
2
# kali用户更新源
sudo apt update
  • root用户
1
2
3
4
5
# 给root用户设置密码
sudo passwd root

# 切换到root用户
sudo su

网络配置

配置文件:/etc/network/interfaces

  • 编辑配置文件配置IP地址
1
vim /etc/network/interfaces
  • 自动获取IP地址(推荐)
1
2
auto eth0
iface eth0 inet dhcp

如果没有获取到IP地址,可以执行如下命令自动获取IP地址

1
dhclient
  • 配置固定IP
1
2
3
4
5
auto eth0
iface eth0 inet static
address 192.168.101.101
netmask 255.255.255.0
gateway 192.168.101.1

这里的固定IP地址网段,要跟自己虚拟设置的vmnet网段一致才可以。

如果自动获取ip能得到ip地址,那么就不需要配置固定ip

  • 配置DNS
1
2
3
4
5
# vim打开配置文件
vim /etc/resolv.conf

# 在文件原有内容的上方添加
nameserver 114.114.114.114
  • 重启服务
1
2
service networking restart
service network-manager restart

或者

1
systemctl restart networking

设置apt源

1
2
3
4
cp /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/sources.list
apt-get update
apt-get clean

任选一个源添加就可以

1
2
3
4
5
6
7
#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

apt使用

  • apt-get

apt-get可以从认证软件源下载软件包及相关信息,以便安装和升级软件包,或者用于移除软件包。

  • 常用命令
1
2
3
4
5
update - 取回更新的软件包列表信息
upgrade - 进行一次升级
install - 安装新的软件包(注:软件包名称是 libc6 而非libc6.deb)
reinstall - Reinstall packages (pkg is libc6 not libc6.deb)
remove - 卸载软件包
  • apt与apt-get的区别与解释

简单来说就是:apt = apt-get、apt-cache和apt-config中最常用命令选项的集合。

虽然aptapt-get有一些类似的命令选项,但它并不能完全向下兼容apt-get命令。也就是说,可以用apt替换部分apt-get系列命令,但不是全部。

apt可以看作apt-getapt-cache命令的子集,可以为包管理提供必要的命令选项。

apt-get虽然没被弃用,但作为普通用户,还是应该首先使用apt

设置中文

  • 安装中文字体
1
2
sudo apt-get install xfonts-intl-chinese
sudo apt-get install ttf-wqy-microhei
  • 设置语言
1
sudo dpkg-reconfigure locales

进入图形界面,选中zh_CN.UTF-8并将zn_CN.UTF-8选为默认。

  • 重启
1
reboot

JAVA环境配置

手动安装,下载JDK8安装包

  • 创建目录解压文件
1
2
3
4
sudo mkdir -p /usr/local/java
sudo cp jdk-8u161-linux-x64.tar.gz /usr/local/java
cd /usr/local/java
sudo tar xzvf jdk-8u91-linux-x64.tar.gz
  • 通知系统Java的位置
1
2
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_161/bin/java" 1112
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_161/bin/javac" 1112
  • 设置默认JDK
1
2
sudo update-alternatives --set java /usr/local/java/jdk1.8.0_161/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_161/bin/javac

python环境配置

安装Python2/3

kali Linux 2023默认安装python2.7和python3.11,因此无需额外安装,可以直接使用,如果要使用其他python版本,则需要额外安装

安装Python3.8

  • 安装python所需要依赖包
1
apt install -y wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev

下载Python安装包

1
2
3
4
5
6
7
8
9
10
11
# 创建文件夹
cd /root
mkdir /usr/local/python3.8

# 下载安装包并解压
wget https://www.python.org/ftp/python/3.8.17/Python-3.8.17.tgz
tar -zxf Python-3.8.17.tgz

# 进入解压文件夹,编译安装python
cd Python-3.8.17
./configure --enable-optimizations --prefix=/usr/local/python3.8/ && make && make install

编译安装后,python3.8程序路径为:/usr/local/python3.8/bin/python3.8

配置使用update-alternatives切换不同Python版本

安装python3.8之后,当前kali Linux系统存在三个Python版本

image-20230909124914359

使用命令切换python版本

update-alternatives –config python

使用命令查看python配置

1
update-alternatives --list python

删除多余的python软链接

1
rm -rf /usr/bin/python

配置python

1
2
3
4
5
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 211

update-alternatives --install /usr/bin/python python /usr/bin/python3.11 212

update-alternatives --install /usr/bin/python python /usr/local/python3.8/bin/python3.8 213

安装pip

pip是一个Python包安装与管理工具

Kali Linux 2023默认安装python2.7和python3.11,因此无需额外安装,可以直接使用,但需要自行配置pip

下面使用python脚本给不同python版本安装对应版本的pip

1
2
3
4
5
6
7
cd /root

# 下载python2.x版本安装pip脚本
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip2.py

# 下载python3.x版本安装pip脚本
curl https://bootstrap.pypa.io/get-pip.py -o get-pip3.py
  • python2.7安装pip
1
2
3
4
5
6
7
# 切换到python2.7版本
update-alternatives --config python

# 这里显示2.7版本的选择编号为:1,输入1后回车即切换成功

# 查看python版本
python -V

然后执行脚本安装pip

1
python get-pip2.py

其它方法相同。

pip安装Python库

1
sudo pip3 install pwntools
  • 使用pip安装python库时,如果安装缓慢或者出现下载python包超时断开,则可以通过国内pip源加速下载

常见国内pip源:

1
2
3
4
https://mirrors.ustc.edu.cn/pypi/web/simple
https://pypi.tuna.tsinghua.edu.cn/simple
https://mirrors.aliyun.com/pypi/simple/
https://pypi.douban.com/simple/
1
2
3
4
5
6
7
8
# 使用阿里云https的pip源
pip install pwntools -i https://mirrors.ustc.edu.cn/pypi/web/simple

# 如果出现错误,可以使用阿里云http的pip源
pip install pwntools -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

# 使用豆瓣http的pip源
pip install pwntools -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  • pip批量安装python库

在Python的项目中,我们常常会看到有requirements.txt文件,它的作用是定义项目所需的软件包及其版本信息

通过我们可以把项目所依赖的软件包及其版本信息,一行一个写入 requirements.txt 文件中,然后通过pip可以批量快速安装所需软件包

1
pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

Git使用

git是一个开源的分布式版本控制系,用于敏捷高效地处理任何或小或大的项目。

  • git clone
1
git clone https://github.com/Hack-with-Github/Awesome-Hacking.git

SSH登陆

  • SSH简介

SSH为Secure Shell的缩写,是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的链接。

SSH最常见的用途是远程登陆系统,人们通常利用SSH来传输命令行界面和远程执行命令。

SSH使用频率最高的场合时类Unix系统,但是Windows操作系统也能有限度地使用SSH。

  • SSH配置

1、设置root用户密码

1
sudo passwd root

2、修改ssh服务配置文件允许root用户登陆

vim编辑配置文件

1
vim /etc/ssh/sshd_config

找到如下内容:

1
#PermitRootLogin prohibit-password

修改为:

1
PermitRootLogin yes

3、重启SSH服务

1
2
3
4
5
# 启动SSH服务
service ssh start

# 重启SSH服务
service ssh restart

4、查看SSH服务默认22端口是否处于监听状态

1
netstat -anltup | grep 22

5、添加开机自启动

1
2
3
4
5
# 方法一
systemctl enable ssh

# 方法二
update-rc.d ssh enable
  • ssh连接

查看kali虚拟机IP地址:

1
ifconfig

Windows系统可以打开cmd或者powershell终端,使用SSH命令远程登陆kali:

1
ssh root@192.168.12.136

Linux系统可以在terminal中使用SSH命令远程登录kali

也可以使用一些工具比如说moba、xshell等。