3.2 Linux 命令行

# 第三章 LINUX 基础

## 3.2 Linux 命令行

说起命令行,这里是指一个基于文本的交互界面,它允许你执行命令、查看结果。你可以运行一个终端程序(图形桌面下的一个文本框程序,或者是非图形桌面下的文本控制台),通常它包含了一个命令解释器。

### 3.2.1 如何获得一个命令行

如果你的系统正常工作的话,最简单地方式就是运行一个终端程序。比如,在默认的 Kali Linux 系统中,可以从常用应用列表中运行 GNOME 终端。也可以在“活动屏”(将鼠标移动到屏幕左上角可以激活此窗口)中输入“终端 terminal” ,然后点击对应的应用图标。

图 3.1 启动 GNOME 终端

如果你的图形系统挂掉了,你仍然可以通过虚拟控制台(通过组合键 CTRL + ALT + F1 到 F6 可以运行最多6个虚拟控制台,如果你已经在文本模式或者不在 Xorg和Wayland 图形系统中,则可以省略 CTRL 键)运行命令行。在获得命令行访问权限之前,你会看到一个非常基础的登录界面,输入用户名和密码后就可以获得 shell 了。

Kali GNU/Linux Rolling kali-rolling tty3

kali-rolling login: root

Password:

Last login: Fir Mar 25 12:30:05 EDT 2016 from 192.168.122.1 on pts/2

Linux kali-rolling 4.4.0-kali1-amd4 #1 SMP Debian 4.4.6-1kali1 (2016-03-18) x86_64

The programs included with the Kali GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

root@kali-rolling:~#

处理输入和执行命令的程序叫做 shell (或者叫命令行翻译器)。Kali Linux 默认提供的 shell 是 Bash (它代表 Bourne Again Shell )。结尾的字符 “$” 或 “#” 表明 shell 正在等待输入,同时也表明 Bash 识别你为普通用户($)还是超级用户(#)。

### 3.2.2 命令行基础:目录浏览和文件管理

这一小节仅仅对一些命令进行简要的介绍,每一个命令都有很多的选项参数,更多参数说明请参考其各自的用户手册页面。在渗透测试中,通常漏洞利用成功会获得目标系统的 shell 访问权限,而不是一个用户图形界面。熟练的使用命令行是作为一个安全专业人员的基本能力。

一旦建立了 shell session ,运行 pwd (表示“打印当前目录”)命令可以显示当前所在的路径。可以运行 cd 目录名 命令来切换目录,当不指定目录名的时候默认进入到用户 home 目录。当运行 cd - 的时候将返回到之前的目录(上一次 cd 进入的目录)。上一级目录有一个固定的名称 “..” ,当前目录则是 “.” 。ls 命令可以列出指定位置的内容,如果不提供参数,则 ls 的操作对象就是当前目录。

root@kali:~#

root@kali:~# cd /

root@kali:/# cd

root@kali:~# pwd

/root

root@kali:~# cd .

root@kali:~# cd ..

root@kali:/# ls

0 binboot dev etchome lib lost+found media mnt optproc root run sbin scriptssrv sys tmp usr var

root@kali:/#

mkdir 目录 可以创建一个新目录,删除一个存在的目录用 rmdir 目录 命令。mv 命令可以移动并重命名目标文件或目录。删除文件用 rm 文件名 ,拷贝文件可以用 cp 源文件 目标文件 来完成。

root@kali:~# ls

Desktop Documents Downloads Music PicturesPublicTemplates Videos

root@kali:~# mkdir test

root@kali:~# ls

Desktop Documents Downloads Music PicturesPublicTemplates Videos test

root@kali:~# mv test test01

root@kali:~# ls

Desktop Documents Downloads Music PicturesPublicTemplates Videos test01

root@kali:~# rmdir test01

root@kali:~# ls

Desktop Documents Downloads Music PicturesPublicTemplates Videos

root@kali:~#

不指定命令绝对路径的时候,shell 会从 PATH 环境变量中读取第一个匹配的命令。大多数时候,这些命令程序都在 /bin ,/sbin ,/usr/bin ,或者 /usr/sbin 目录下。比如,ls 命令在 /bin/ls 。用 which 命令可以获得执行程序的位置。有些时候,命令是直接被 shell 处理的,这种情况称之为 shell 内建命令( cd 和 pwd 就是这类)。type 命令可以查询每个命令的类型。

root@kali:~# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

root@kali:~# which ls

/bin/ls

root@kali:~# type rm

rm is /bin/rm

root@kali:~# type cd

cd is a shell builtin

root@kali:~#

介绍一下echo 命令,它可以方便的将字符串打印在终端里。在这个例子里,echo 用来打印出环境变量的内容,shell 在执行命令前会自动将自身变量替换为环境变量。

环境变量

---------------------------------------

环境变量可以为 shell 及其他程序存储全局的设置。这些是文本性质的内容,但是可以继承的。比如,每个进程都有它自己的一系列环境变量(都是文本性质)。像登录 shell 就可以声明一些变量,这些变量会被之后由登录 shell 启动的程序继承。

我们可以在 /etc/profile 或 每个用户的 ~/.profile 文件中定义系统范围的变量,也可以通过 /etc/environment 定义不针对具体命令行翻译器(比如 shell )的变量,而且这种方式定义的变量更优。多亏了 Pluggable Authentication Module (PAM) ,这样定义的变量即使没有 shell 运行,也可以注入到所有用户的 session 里。

为了能够让大家边学习边实践,达到一起读书的目的,公众号将尽量保持一周两到三篇的速度更新,欢迎大家持续关注。

另外,部分图片来自网络,如有侵权请联系作者删除。

破阵子

醉里挑灯看剑

梦回吹角连营

八百里分麾下炙

五十弦翻塞外声

猎客

·

公元

公众号:NetHunterPark

关注移动安全及渗透测试

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181121G1P2WP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券