所谓命令行,我们这里指的是基于文本的界面,这个界面允许你输入命令,执行命令并查看运行结果。你能运行一个终端(图形桌面上的字符界面或图形界面之外的文本控制台自身)和嵌入其中的一个命令解释器(Shell)。
3.2.1 如何进入命令行
当你的系统正常启动后,进入命令行最简单的方式是在你的图形桌面会话中运行终端程序。
图3.1 启动GNOME终端
例如,在默认的Kali Linux系统上,GNOME终端可以从最喜欢应用程序中启动。你也可以在活动屏幕出现时(当你把鼠标移到左上角时)键入“terminal”,然后点击出现的应用程序图标(见图3.1)。
如果图形界没中断,你仍然可以在虚拟控制台上获得一个命令行(通过CTRL+ALT+F1到CTRL+ALT+F6 6个组合键可以最多访问6个控制台,如果已经在文本模式,Xorg或Wayland的图形界面之外,可以省掉CTRL键)(释注:Wayland是与X Window属于同一级的事物,而不是仅仅作为X Window下X Server的替代。也就是说,Wayland不仅仅是要完全取代X Window,而且它将颠覆Linux桌面上X Client/X Server的概念,也许以后将没有所谓的“X Client”了,而是“Wayland Client”。)在访问命令行及其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 命令行基础:浏览目录树和管理文件
这一节只提供相关命令的一个概览,所有的命令都有很多选项,这里就不详述了,可以参看与各自命令相关的手册。在***测试中,当成功利用(Exploit)之后,你通常会得到对系统Shell的访问权,而不是图形用户界面。因此,熟练掌握命令行对你成为一名成功的安全专家至关重要。
当一个会话打开后,pwd命令(表示print working directory)显示你在文件系统中的当前位置。当前位置可以通过cd directory命令(cd 表示change directory)进行改变。当你使用cd -,你可以回至先前的工作目录(最近一次cd命令之前的那个目录)。父目录通过用..表示(双点),而当前目录用.(单点)表示。ls命令允许列出(listing)一个目录下的内容。如果你不提供参数,ls命令列出的是当前目录下的内容。
$ pwd
/home/buxy
$ cd Desktop
$ pwd
/home/buxy/Desktop
$ cd .
$ pwd
/home/buxy/Desktop
$ cd ..
$ pwd
/home/buxy
$ ls
Desktop Downloads Pictures Templates
Documents Music Public Videos
你可以使用mkdir directory命令创建一个目录,使用rmdir directory命令删除一个已存在的(空的)目录。mv命令允许你移动和重命名文件和目录;删除一个文件用rm file命令,拷贝一个文件用cp source-file target-file命令。
$ mkdir test
$ ls
Desktop Downloads Pictures Templates Videos
Documents Music Public test
$ mv test new
$ ls
Desktop Downloads new Public Videos
Documents Music Pictures Templates
$ rmdir new
$ ls
Desktop Downloads Pictures Templates Videos
Documents Music Public
Shell通过在PATH环境变量中指明的目录列表中,找到符合给定名称的第一个程序并执行这个程序。大多数情况下,这些命令在/bin,/sbin/,/usr/bin,或/usr/sbin中。例如,ls命令可以在/bin/ls找到,which命令可以给出所给命令所在的目录。有些命令可以由shell直接处理,这些命令被称为shell内置命令(cd和pwd都是);type命令可以查询每个命令的类型。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ which ls
/bin/ls
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
注意echo命令的使用,它只是在终端上简单地显示一个字符串。在这种情况下,它用于打印环境变量的内容,因为shell在执行命令之彰会自动替换变量的值。
环境变量:环境变量允许存储用于shell或其它程序的全局设置。它们是上下文相关并且是可以继承的。例如,每个进程有他自己的环境变量集合(上下文相关)。像登录Shell(login shells)可以声明变量,并且这些变量可以向下传递给其它可执行程序(可继承的)。
这些变量可以定义在系统范围内使用的/etc/profile文件中,或者是定义在每个用户独有的~/.profile文件中,但是不特定于命令行解释器的变量定义在/etc/environment中比较好,因为这些变量通过可插入认证模块(PAM)会注入到所有的用户会话中——甚至没有shell被执行情况下也可以。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。