[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 安全技术 > 系统 > 正文
UNIX系列系统入侵教程 之二 UNIX系统和常用命令简介
本文出自: 中国红客联盟 http://www.cnhonker.com (2001-05-31 19:00:00)

大家都在催我写教程,但实在是要写的太多太繁琐了. 

命令介绍更不没有什么技术可言,又不是几句话就可以说清楚的.所以一拖再拖. 

不好意思,让大家久等了.:) 



OK,首先我们来看看UNIX的解释 

Unix 

Unix操作系统 

  1968年,Ken Thompson(科恩·汤普生)、Dennis Ritchie(丹尼斯·瑞奇)和AT&T(贝 尔实验室)的人在进行关于MULTICS项目的研究工作时,他们完成了第一个命令解释器 (SHELL)和一些简单的文件处理工具。他们用GE系统为PDP-7进行交叉编译,写好了 汇编器(Assembler)……这时这个系统就算的上是最初的Unix。当然了,当时他们并不是 这么认为的。到了1969年!第一个Unix诞生,当时Unix支持的硬件均是DEC公司的PDP-7, 软件是ken Thompson自己开发的。最初的Unix跟现代的Unix在框体上相似,使用I-节点, 而且有特殊的文件类型来支持目录和设备。所以也有人说Unix是裁剪了的MULTICS……而 随着Ken Thompson开发的同时,Dennis Ritchie、Brain Kernighan等人也创建了一种新的编 程语言——那就是现在的C语言。Ken等人也就随着C的发展在73年用C全部重新写了一 遍Unix核心,包括Shell。这无疑是增加了系统的稳定性能,也使编程和调试变得容易得多 了,随之,Unix替代了PDP-11上的DEC公司的操作系统,而Ken随后将Unix的代码公布 了。这对Unix的以后发展起了很大的推动性。77年,Interactive Systems公司开始向最终用 户出售Unix ,这使得Unix成为了商业产品……一直到今天完美的Unix。 

  Unix能流行起来绝对不是偶然的,这跟Unix它本身的特点之突出是分不开的。值得庆 幸的是老早的Unix和现在的Unix都有着它可炫耀的(可移植性)特点,那些就是:1、启 动异步进程的能力;2、一致的文件、设备和进程间I/O;3、层次化的文件系统;4、用其它 Shell来替代默认Shell的能力。Ken Thompson博士本人曾获诺贝尔奖。而在黑客领域中, Unix是很受欢迎的,因为网络基本上是以Unix为基础的,至少大站是如此。再者就是Unix 价格值得庆幸。不过存在的问题是Unix在拨号Modem配置方面很麻烦。 



同时我们也说说Linux 



Linux 

Linux操作系统 

  Linux属于PC机上的Unix。它是90年代初期由芬兰的Linus Torvalds最先开发的,开发之后作者用了GPL(公共版权协议,一种允许任何人以任何方式复制与散发的程序源代码的形式)的形式进行发布的。Linux继承了Unix操作系统的稳定、安全和可靠等特点,同时Linux在运行速度上大大超过了WinNT,Linux还在数据库商业核心领域中发挥了巨大的作用。再加上GPL发行的优越性使Linux目前成了最受用户喜爱的操作系统之一。 



因此我们在这里统一把unix和linux一起介绍. 它们是很相似的,它们的大多数命令都是一样的。 

下面我们统称为UNIX。 



UNIX系统的特点有: 

  分级树形文件结构、文件、目录表和外部设备作为文件统一管理、提供功能完备的命令程序语言"Shell语言"、提供了各种程序设计语言和大量的程序设计子系统、系统核心和外部程序大部分采用C语言编写、采用进程映像对换技术、系统效率高。 

   

UNIX是多用户的操作系统,要使用系统之前必须输入用户名和密码,经系统验证无误后方能使用。 

通常UNIX系统的用户有两种: 

1.root ---根用户 

  这是超级用户帐号,可以用这个帐号对系统进行所有操作!获得对系统的根访问权限,也是黑客们拼命追求的东西. 

2.普通用户 

  给普通用户使用,具体权限由root分配.一般的进攻步骤是,先获得普通用户权限再利用系统的漏洞进一步夺取根权限,即最终成为root.这里普通用户占了很重要的位置.当然也有很多系统漏洞可以不用普通用户权限也能获得系统的根访问权限.比如比较常用的:Sunos 的rpc.cmsd, Redhat的rpc.statd,IRIX的telnetd等等,都是很好利用的远程溢出.存在这种远程溢出漏洞的机器,攻击者可以在远程直接获得系统的根权限. 



所以,在UNIX中,密码文件是很重要的.许多UNIX系统的加密口令都是保存在/etc/passwd文件中,而这个文件是需要对于普通用户是可读的。这样,只要有一个帐号就可以得到该文件,然后使用一些口令测试方法或者软件就可以猜测用户口令。目前,UNIX系统大多将加密口令设置到只有超级用户可以读的/etc/shadow文件中,可以增加获得加密口令的难度。 但我们依然从/etc/passwd得到机器上的用户列表. 



常见的UNIX系统 

AIX 

BSD 

FreeBSD 

IRIX      

HP-UX  

SunOS(Solaris) 

LINUX系列 

等等 

更多关于UNIX系统的资料只有你自己去找相关的书籍来看了.下面转入正题. 

通常,一般简单的入侵,我们只要懂得下面的命令就可以很顺利的在目标机器上操作了.:) 



UNIX命令基础 



1. 输出入转向 

在UNIX中,每一个程序均有三个特殊的文件描述, 标准输入( standard input )、标准输出 ( standard output )、标准错误输出( standarderror )。 

这三个平常是接受终端的输入,而由终端显示出去。 

但是 UNIX 提供使用者可以使用一般的档案或 管道(pipe)来取代这些标准输出入设备。 

在sh 里头,使用者可以利用">"和"<"来进行输出入转向的工作。 



a.输出转向: 

command > file 

你可以将一个指令的输出结果转向到一个档案,让此档案储存这个命令的输出结果。 

但是请注意,如果文件已经存在在系统中,则文件将会被盖过。也就是原先文件的内容将会消失。 

command >& file 

与 > 相同,但是这个格式表示连标准错误输出一起转向。 

在 UNIX 中,标准错误输出在程序的习惯是用来显示错误的发生,因此如果 没有被转向时,标准错误输出的结果将会被转向到进程 ,而标准错误输出的结果仍将显示在终端上。 

command >> file 

此格示代表将标准输出的结果添加到文件中。如果文件已存在在系统中,则标准输出的结果将会加到 文件 的末端,如果 文件 原先并不存在,则 文件 将会被开启而将标准错误输出的结果存至 文件 中。 

command >>& file 

同上,不过此格式代表连标准错误输出一起添加到文件之中。 

   

b.输入转向: 

command < file 

一般程序须要自终端机输入资料,而你可以将程式所要输入的资料统一编入档案中,利用转向一并输入。 

set ignoreeeof 

由于转向输出会有将现有档案覆盖的危险,csh 与 tcsh 提供使用者用这个方式来避免。 

当你执行 set ignoreeeof 之後,如有输出转向到已存在之档案时,它会发出一个档案已存在的讯息。 

而在处理添加转向上,如果已经 set ignoreeeof ,则当要添加到一个不存在的档案,将会出现一个错误信息。 

然而如果我们当真是要转向盖过一个已存在的档案,或者是要添加一个不存在的档案时,又要如何呢? 

我们只要在 ">" ">&" ">>" ">>&" 後面加上惊叹号"!",成为 ">!" , ... 就可以了。 



2. 管道(Pipe) 

如同前面说的转向,管道也是在标准输出入和标准示误装置间作取代动作,如一来可以将某一个程式的输出连到另一个程式的输入中。其语法如下: 

command1  command2 [  command3 ....] 

command1 & command2 [ & command3 ....] <--- 连标准错误输出一起用管道 



3. 前景与背景(前台和后台) 

在 sh 下面,一个新产生的进程可以经由命令後面的符号';'和'&'来分 别前景和背景。 

如以下语法 

command 

这表示产生一个前景的进程,你要等到它结束才能再下另一个指令。 

command & 

这样表示产生一个前景的进程,它会给你一个类似以下的讯息: 

[1] 21304 

然後就出现下一个提示号,以供你给下一个指令。 

然後在这个前景的 进程结束的时候再给你一个如下面的讯息,告诉你它把这个进程执行完毕了。 

[1] Done command command1 ; command2 ; command3 

这样表示你要求系统连续执行 command1 , command2 , command3 三个指令, 

其中 command2 要等待 command1 , command3 要等待 command2 ,而你要等 待 command3 执行完毕才能下指令。 

command1 & command2 & command3 & 这样表示你要求系统连续执行 command1 , command2 , command3 三个指令, 

而这三个指令都放在背景执行,彼此之间不需等待。 

fg 与 bg 

也许你会问,一个已经执行的进程可不可以由前景换背景,或由背景换景呢? 可以的。 

一个在前景执行的进程,你可以按 Ctl-Z 将进程暂停, 系统会给你一个讯息: 

Suspended 

然後出现提示号。此时你可以使用 fg 将其恢复前景执行,或按 bg 将其改为背景执行。 

而如果有一个前景的进程, 你也可以用 fg 指令将其呼叫到前景。 

首先你需用 jobs 指令来观查目前有多少在背景下的进程,然後根据所显示出来的 job id 来决定将那一个进程放到前景。 

如使用 % fg %3 # 将第三个 job 放到前景。 



UNIX常用命令介绍 



下面主要讲解UNIX下基本命令的使用,由于时间和篇幅的原因,无法写出所有UNIX命令。 

你在使用这里没有列出的命令时,可以使用“--help”参数查询该命令所附的帮助. 

比如: ls -help将显示ls命令的详细信息. 

同时,你也可以利用man来查询更详细的使用说明。 

直接敲入man将显示所有命令的信息. 

如果你只想看一个命令的信息就用如下格式 

man <命令名> 

比如在UNIX系统中敲入man ls将显示ls的详细信息. 

按q键退出man界面. 



如下命令介绍按字母顺序排列: 



命令:at 

介绍:at, batch, atq, atrm:安排,检查,删除队列中的工作。 

at [-V] [-q 队列] [-f 文件名] [-mldbv] 时间 

at -c 作业 [作业...] 

atq [-V] [-q 队列] [-v] 

atrm [-V] 作业 [作业...] 

batch [-V] [-q 队列] [-f 文件名] [-mv] [时间] 

at 在设定的时间执行作业。 

atq 列出用户排在队列中的作业,如果是超级用户,则列出队列中的所有工作。 

atrm 删除队列中的作业。 

batch 用低优先级运行作业,只要系统的loadavg(系统平均负载)<1.5(或者在atrun中设定的值)它就开始执行作业。 

超级用户可以在任何情况下使用at系列的命令。 

一般用户使用at系列命令的权利由文件 /etc/at.allow,/etc/at.deny控制。 

如果/etc/at.allow存在,则只有列在这个文件中的用户才能使用at系列的命令。 

如果/etc/at.allow文件不存在,则检查文件/etc/at.deny这个文件。 

只要不列在这个文件中的用户都可以使用at系列的命令。 

缺省的配置是/etc/at.deny为一个空文件,这表明所有的用户都可以使用at系列的命令。 

范例: 

at -f work 4pm + 3 days 在三天后下午4点执行文件work中的作业。 

at -f work 10am Jul 31  在七月31日上午10点执行文件work中的作业。 



命令:bash 

介绍:bash - GNU Bourne-Again SHell 自由软件基金会(Free Software Foundation Inc)拥有bash版权。 

bash是Linux下的许多命令解释器中的一个,同sh兼容,并且包含了ksh和csh中一些有用的特性。 

遵从IEEE Posix Shell and Tools specification (IEEE Working Group 1003.2)。 



命令:cat 

介绍:cat - 连接文件并打印到标准输出。 

cat是CATenate的缩写,常常用来显示文件,类似于DOS下的TYPE命令。 

范例: 

[root@cnhonker.com /]# cat -b -E .lessrc 显示文件.lessrc的内容 

1 back-line $$ 

3 forw-scroll$ 

4 back-scroll $ 

5 goto-line$ 

6 goto-end$ 

[root@cnhonker.com /]# cat myfile1 myfile2 >tmp 

将文件myfile1,myfile2 连结起来输出到文件tmp 



命令:cd 

介绍:cd - 改变当前目录。 

cd 目录名 

如果不加目录名,则回到用户的根目录,此外用户必须拥有读该目录的权限。 

进入另外一个用户的目录只要 cd ~用户名即可。 

范例: 

cnhonker:/tmp> cd id1 

进入id1目录 

cnhonker:/tmp/id1>cd ~lion 

进入用户lion的目录 

cnhonker:~lion> 

   

命令:chgrp 

介绍:chgrp - 改变文件的组。 

组 要改变到的组可以是组号对应的数字;也可以是/etc/group文件中的组名。 

文件名:空格分开的要改变组所有权的文件列表,支持通配符。 如果用户不是该文件的属主或超级用户,则不能改变该文件的组。 

范例 

[root@cnhonker.com /]# chgrp -R book /opt/local/book/*.* 

改变/opt/local/book/及其子目录下的所有文件的组为book。 



命令:chmod 

介绍:chmod -改变文件保护,文件保护控制用户对文件的访问权, 

有三个安全级别:所有者级别,组访问级别,其他用户访问级别, 

在这三个级别中,又有三种权限:读(r),写(w),执行(x)。 

(用户可以 ls -lg来观看某一文件的所属的group) 

对于文件来说读权限意味着可以看文件的内容,写文件权可以修改或删除文件,执行权限则可以执行它 

(类似于DOS 下的EXE,COM,BAT文件)。 

对于目录来说,读权限意味着可以查看目录下的内容,写权限意味着能在目录下建立新文件,并可以从目录中删除文件,执行权限意味着可以从一个目录转变到另一个目录。 

保护权限 : 格式为[ugoa...][[+-=][rwxXstugo...]...][,...] “ugoa”控制哪些用户对该文件的权限将被改变: 

(u)文件的所有者, 

(g)与文件所有者同组的用户 

(o)其他组的用户 

(a)所有用户,操作符 “+”使得用户选择的权限被追加到每个目标文件。操作符 “-”使得这些权限被撤销。 “=”使得目标文件只具有这些权限。 “rwxXstugo”选择新的属性。 

(r)读权限 

(w)写权限 

(x)执行权(或对目录的访问权) 

(X)只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性 

(s)同时设定用户或组ID 

(t)保存程序的文本到交换设备上 

(u)目标文件属主 

(g)目标文件属主所在的组 

(o)其他用户。 

如果用数字来表示属性,则 

(0)没有权限, 

(1)执行权, 

(2)读权, 

(4)写权, 

然后将其相加,所以数字属性的格式应为3个从0到7的八进制数其顺序是(u)(g)(o)。 

文件名:空格分开的要改变权限的文件列表,支持通配符。 

范例: 

cnhonker~>chmod a+x destfile 使所有用户对文件destfile有读写执行权。 

cnhonker~>chmod 644 destfile 使所有用户可以读文件destfile只有属主才能 改变。 



命令:chown 

介绍:chown - 改变文件的属主和组。 

用户: 可以是用户名或用户id。 

组: 可以是组名或组的id。 

文件名 : 以空格分开的要改变权限的文件列表,支持通配符。 

范例: 

cnhonker~>chown tlc:book destfile 将文件destfile的属主改成tlc组改成book。 



命令:chsh 

介绍:chsh 改变用户登录的shell。 

chsh [-s 登录的shell] [用户名] 

普通用户可以改变自己的登录shell,超级用户可以改变其他用户的登录shell,所有的shell 必须是在/etc/shells文件中列出的sahell ,但是超级用户不受这个限制。 

如果用户的shell是一个受限制的shell则用户不能改变其登录shell。 

如果不加-s参数则chsh输出用户的当前登录shell并提示用户输入新shell的路径。 

改变shell时都需要输入用户的密码。 

范例: 

[root@cnhonker.com /]# chsh 

Password: ***** 

Changing the login shell for tlc Enter the new value, or press return for the default Login Shell 

[/bin/csh]: /bin/tcsh 

[root@cnhonker.com /]# 



命令:clear 

介绍:clear - 清除屏幕(类似于DOS的cls) 

范例: 

cnhonker~>clear 

清除屏幕,提示符被移动到左上角。 



命令:cp 

介绍:cp - 拷贝文件。 

cp [options] 源文件 目标文件 

cp [options] 源文件... 目标目录 

-f, --force : 删除已存在的目标文件。 

-i, --interactive : 在删除已存在的目标文件时给出提示。 

-R, --recursive 整目录拷贝。 

--help 在标准输出上输出帮助信息并退出。 

--version 在标准输出上输出版本信息并退出。 

范例: 

[root@cnhonker.com /]# cp sourcefile destfile 

拷贝文件sourcefile到文件destfile。 

[root@cnhonker.com /]# cp * /tmp 

拷贝当前目录下所有文件到/tmp目录。 



命令:crontab 

介绍:crontab - 操作每个用户的守护程序和该执行的时间表。 

crontab file [-u user] - 用指定的文件替代目前的crontab。 

crontab - [-u user] - 用标准输入替代目前的crontab。 

crontab -l [user] - 列出用户目前的crontab。 

crontab -e [user] - 编辑用户目前的crontab。 

crontab -d [user] - 删除用户目前的crontab。 

crontab -c dir - 指定crontab的目录。 

crontab文件的格式:M H D m d cmd 

M : 分钟(0-59) 

H : 小时(0-23) 

D : 天(1-31) 

m : 月(1-12) 

d : 一星期内的天(0-6,0为星期天) 

cmd: 要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。 

下面是一个例子文件: 

# MIN HOUR DAY MONTH DAYOFWEEK COMMAND 

# 每天早上6点 

10 6 * * * date 

# 每两个小时 

0 */2 * * * date 

# 晚上11点到早上8点之间每两个小时,早上部点 

0 23-7/2,8 * * * date 

# 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 

0 11 4 * mon-wed date 

# 1月份日早上4点 

0 4 1 jan * date 

范例: 

[root@cnhonker.com /]# crontab -l 

列出用户目前的crontab。 

# MIN HOUR DAY MONTH DAYOFWEEK COMMAND 

10 6 * * * date 

0 */2 * * * date 

0 23-7/2,8 * * * date 

(通常,在放后门时,我们可以利用这个文件使机器在特定的时间运行我们的后门程序.:) 



命令:date 

介绍:date - 打印或设置系统日期和时间。 

date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]] 

+FORMAT :控制如何显示日期 

指令: 

% : %号 

n : 新行 

t : TAB 

时间域: 

%H 小时 (00..23) 

%I 小时 (01..12) 

%k 小时 ( 0..23) 

%l 小时 ( 1..12) 

%M 分钟 (00..59) 

%p AM 或 PM 

%r 12小时 (hh:mm:ss [AP]M) 

%s 从1970-01-01 00:00:00 UTC 开始的时间 

%S 秒 (00..61) 

%T 24小时 (hh:mm:ss) 

%X 时间表示 (%H:%M:%S) 

%Z 时区(如EDT)如没有指定时区则不显示 

日期域: 

%a 缩写形式的星期名 (Sun..Sat) 

%A 星期名(Sunday..Saturday) 

%b 缩写形式的月名 (Jan..Dec) 

%B 月名 (January..December) 

%c 日期和时间 (Sat Nov 0:02:33 EST 1989) 

%d 每个月的第几天 (01..31) 

%D 日期 (mm/dd/yy) 

%h 等同于 %b 

%j 一年的第几天 (001..366) 

%m 月份 (01..12) 

%U 一年中的第几个星期,星期天为星期的第一天 (00..53) 

%w 每个星期的第几天(0..6) 0为星期天 

%W 一年中的第几个星期,星期一为星期的第一天 (00..53 (00..53) 

%x 日期 (mm/dd/yy) 

%y 年份的后两个数字 (00..99) 

%Y 年份 (1970...) 

[MMDDhhmm[[CC]YY][.ss] 

MM 月份 

DD 日期 

hh 小时 

mm 分钟 

CC 年份的前两位 (可选项) 

YY 年份的后两位 (可选项) 

ss 秒 (可选项) 

只有超级用户才有权限设置系统时间(启动时在CMOS中读出)。 

-d datestr, --date dates : 显示datestr中指定的日期和时间。 

-s datestr, --set datestr : 设定datestr中指定的日期和时间。 

-u, --universal : 显示或设定格林威治时间(缺省为本地时间)。 

--help : 在标准输出上输出帮助信息并退出。 

--version : 在标准输出上输出版本信息并退出。 

范例: 

印两天前的时间: 

[root@cnhonker.com /]# date --date '2 days ago' Fri Aug 22 20:20:08 CDT 1997 

打印月份和日期: 

[root@cnhonker.com /]# date '+%B %d' August 24 



命令:echo 

介绍:echo 是用来显示一字串在终端机上。 

echo -n 则是当显示完之後不会有跳行的动作。 



命令:exit 

介绍:exit 用来退出上次的登陆. 



命令:file 

介绍:file - 探测文件类型。 

范例: 

cnhonker:/tmp> file * 

destfile: ASCII text 

elm.rc.OLD: English text 

portnum: empty 

rc.inet1.OLD: Bourne shell script text 



命令:find 

介绍:find - 用来在大量目录中搜寻特定文件的强有力的工具。 

find [路径...] [匹配表达式] 

范例: 

cnhonker:/> find ./ -name "passwd" -print 

./usr/bin/passwd 

./home/ftp/etc/passwd 

./etc/passwd 

可以找出当前目录下所有文件名为passwd的文件.包括子目录下的. 

这个命令的功能是非常强大的. 

更详细的内容请看帮助. 



命令:finger 

介绍:finger - 查询本机或其他机器上的用户信息, 

用法: finger 用户名(本机) 或finger 用户名@ip。 

在大多机器上我们可以用 

finger @ip 

得到目标主机当前登陆的用户. 

finger 0@ip 

得到目标主机的详细用户信息. 

这个命令用来给你获得第一个帐号是很容易的. 



命令:ftp 

介绍:ftp hostname 

具体参数情况请看联盟主页里的ftp使用.或者我以前的教程. 



命令:telnet 

介绍:ftp hostname [port] 

具体参数情况请看联盟主页里的telnet使用.或者我以前的教程. 



命令:traceroute 

介绍:traceroute targethost 

此命令必须由root以 /usr/sbin/traceroute 节点名方式运行此命令将显示到达远端机器所经过的路由 



命令:grep 

介绍:grep, egrep, fgrep - 在文件中搜寻匹配的行并输出。 

范例: 

在文件services中查找含有ftp的行。 

cnhonker:/etc> grep ftp services 

ftp 21/tcp 

tftp 69/udp 

sftp 115/tcp 



命令:gzip 

介绍:gzip, gunzip, zcat - 压缩或展开文件。 

范例: 

[root@cnhonker.com /]# gzip -v sourcefile 

sourcefile: 15.2% -- replaced with sourcefile.gz 

   

命令:head 

介绍:head - 显示文件的前几行。 

范例: 输出文件.lessrc的第一行。 

[root@cnhonker.com /]# head -n 1 .lessrc 

forw-line 



命令:kill 

介绍:kill - 中止一个进程 

kill [ -s 信号  -p ] [ -a ] 进程号 ... 

kill -l [ 信号 ] 

kill向指定的进程发出特定的信号,如果没有指定信号则送出TERM信号,TERM信号将杀死没有捕捉到这个信号的进程。 

对于某些进程可能要使用KILL (9)信号强制杀死。 

例如: kill -9 11721。将强制杀死进程11721。 

大多数SHELL内建kill命令 

范例: 杀掉进程11721 

[root@cnhonker.com /]# ps 

PID TTY STAT TIME COMMAND 

11668 p1 S 0:00 -tcsh 

11721 p1 T 0:00 cat 

11737 p1 R 0:00 ps 

[root@cnhonker.com /]# kill 11721 

[1] Terminated cat 



命令:last 

介绍:last - 显示过去多少个用户或终端登录到本机器。 

last [-数目] [-f 文件名] [-t tty] [-h 节点名] [-i IP地址] [-l] [-y] [用户名...] 

范例: 显示过去3次用户fangh登录的情况: 

[root@cnhonker.com /]# last -3 fangh 

fangh ttyp1 csun01.ihep.ac.c Tue Aug 26 18:46 still logged in 

fangh ttyp2 csun01.ihep.ac.c Mon Aug 25 22:32 - 23:14 (00:41) 

fangh ttyp2 csun01.ihep.ac.c Mon Aug 25 19:58 - 21:59 (02:01) 



命令:less 

介绍:less - 相对于more,用来按页显示文件。 

范例:显示test文件 

[root@cnhonker.com /]# less test 



   

命令:ln 

介绍:ln - 在文件间建立连接 

ln [参数] 源文件 [目标文件] ln [参数] 源文件... directory 

另外对链接文件做改变属性的动作是没有意义的,因为只有它们链接到的文件的属性才是文件的真正属性。 

范例: 

将文件sourcefile连接到文件test 

[root@cnhonker.com /]# ln -s sourcefile test 

[root@cnhonker.com /]# ls -la 

test lrwxrwxrwx 1 fangh users 10 Aug 26 20:36 test -> sourcefile 




命令:ls 

介绍:ls, dir, vdir - 列出目录下的文件 (类似于DOS下的DIR命令)。 

范例:列出当前目录下的所有文件 

[root@cnhonker.com /]# ls -la 

total 6 

drwxr-x--- 2 fangh users 1026 20:52 ./ 

drwxr-xr-x 19 root root 1026 21:09 ../ 

-rw-r--r-- 1 fangh users 15 Aug 21 21:57 .bash_history 

-rw-r--r-- 1 fangh users 30 20:41 .less 

-rw-r--r-- 1 fangh users 115 19:58 .lessrc 

-rw-r--r-- 1 fangh users 72 Aug 24 18:43 sourcefile 

lrwxrwxrwx 1 fangh users 10 Aug 26 20:36 test -> sourcefile 



命令:mail,elm 

介绍:可经由此程序将信件 mail 给他人。 

使用方式: mail [username] 

mail -f mailboxfile 如有信件,则直接键入 mail 可以读取你的 mail 

例子: 

mail -s "shadow" root@cnhonker.com < /etc/shadow 

elm 提供较 mail 更为方便的介面,而且可做线上的 alias . 

你可以进入 elm 使用上下左右键来选读取的信件,并可按 h 取得线上的 help 文件。 

使用方式: 

elm [usernmae] elm -f mailboxfile 
















命令:man 

介绍:man - 显示具有一定格式的在线手册。 

man 对于新手和老手来说都是非常有用的一个工具,用来快速查询命令和程序的使用方法和参数。 

编程人员也可以用来查询C函数的用法。对于'rn(1)' 或 'ctime(3)'这样的输出,其中括弧中的数字是指 Unix 手册中该文件所在的章节。当你打 man 3 ctime 时, 表示是要查 阅在第 3 节中的 ctime 的内容。 

下面是常见的Unix手册的分类: 

1 用户命令 

2 系统调用 

3 库函数 

4 设备和设备驱动程序 

5 文件格式 

6 游戏 

7 有用的杂类,如宏命令包 

8 系统维护和管理命令 

范例: 

查询ls的用法 

cnhonker~>man ls 




命令:mtools 

介绍:mtools - 用来在UNIX下访问DOS下磁盘的工具包。 

工具介绍 

mcd - 进入DOS子目录。 

mcopy - 拷贝DOS文件。 

mdel - 删除DOS文件。 

mdeltree - 删除DOS目录。 

mdir - 查看DOS目录。 

mformat - 格式化DOS磁盘 

mkmanifest - 创建一个恢复UNIX格式的文件名的SHELL 

mlabel - 给DOS磁盘加卷标 

mmd - 创建DOS目录。 

mmove - 移动DOS下的文件。 

mmount - mount DOS磁盘。 

mtype - 显示DOS下的文件。 

mrd - 删除DOS下的目录。 

mren - 将DOS下的文件改名。 



命令:mkdir 

介绍:mkdir - 建立目录(同DOS下的md)。 



命令:more 

介绍:more - 在终端上按页观看文件的过滤器。 

more的功能没有less那么强大。 

而且less还提供了对more的模拟,不过一般用户可能更习惯于使用同DOS环境下相似的more。 

范例: 

显示文件/etc/group 并搜寻字符串bbs 

[root@cnhonker.com /]# more +/bbs /etc/group 

...skipping 

users::100:games 

nogroup::-2: 

bbs:x:99:bbs,bbsroot,bbsuser 



命令:mv 

介绍:mv - 将文件改名。 

mv [参数] 源文件 目标文件 

mv [参数] 源文件列表(支持通配符) 目标目录 

范例:sourcefile -> destfile 

[root@cnhonker.com /]# mv -v sourcefile destfile 



命令:nslookup 

介绍:nslookup- 查询节点名和IP地址的对应关系,用法: nslookup [节点名IP地址] 



命令:passwd 

介绍:passwd - 设置用户的密码。 

passwd [-f-s] [用户名] 

passwd [-g] [-rR] 组名 

passwd [-x max] [-n min] [-w warn] [-i inact] 用户名 

passwd {-l-u-d-S} 用户名 

用户可以用passwd这个命令更改自己的登录密码,一般用户只能更改他自己的密码,超级用户可以更改其他所有用户的密码,超级用户和组的管理者可以更改组的密码,还可以用这个命令来更改用户的其他信息,如用户的全名,用户的登录shell,用户的密码失效的时间间隔等等。   

范例: 

更改密码 

[root@cnhonker.com /]# passwd 

Changing password for fangh 

Old password:oldpass --密码并不显示出来 Enter 

the new password (minimum of 5, maximum of 8 characters) 

Please use a combination of upper and lower case letters and numbers. 

New password: 

newpass Re-enter new password: 

newpass Password changed. 







命令:ping 

介绍:ping - 此命令用来查询远端的一台机器是否能够到达, 并将显示所需时间,如果您要退出请按 control-C 中断。 

命令格式:ping 主机名或者 ping IP地址。 






命令:ps 

介绍:ps - 查看进程状态。 

下面解释一下各栏的意义: 

FLAGS : 长格式的F域。 

UID : 用户的ID。 

PID : 进程的ID。 

PPID : 父进程的ID。 

PRI : 进程优先级。 

NI : 标准UNIX的优先级。 

SIZE : 虚拟内存的大小。 

RSS : 驻留空间的大小。 

WCHAN : 进程等待的内核事件。 

STAT : 进程状态: 

代码如下。 

 R : 正在运行。 

 S : 睡眠。 

 D : 不可打断的睡眠。 

 T : 停止或跟踪。 

 Z : 僵尸进程。 

 W : 进程没有驻留页。 

 N : 进程有一负nice值。 

TTY : 进程的控制台。 

PAGEIN : 主内存页失败的数目(页失败造成页从磁盘或CACHE中读取)。 

TRS : 文本驻留大小。 

SHARE : 共享内存。 

SWAP : 交换设备上的K字节数。 

范例: 

显示当前进程: 

[root@cnhonker.com /]# ps -c 

PID TTY STAT TIME COMMAND 

8724 p4 S 0:00 tcsh 

8876 p6 R 0:00 ps 



命令:pwd 

介绍:pwd - 显示正在工作或当前目录名。 

范例: 

列出当前工作目录 

[root@cnhonker.com /]# pwd 

/home/lion 



命令:reset 

介绍:reset - 将终端复位。 

在使用终端的过程中,有时会发现屏幕的字符 “花”掉了,这时使用reset就可以恢复, 

例如在运行完电路分析软件PSPICE后,就会发现屏幕字符错乱,使用reset就恢复正常。 

reset 调用tput函数,向终端发出复位信号。 

如果屏幕被Ctrl+S锁住了,可以用Ctrl+Q 来解除锁定。 

范例: 

将终端复位: 

[root@cnhonker.com /]# reset 





命令:rlogin ,rsh 

介绍:rlogin 的意义是 remote login , 

也就是经由网路到另外一部机器 login 。 

rlogin 的格式是: 

rlogin host [ -l username ] 选项 -l username 

是当你在远方的机器上的 username 和 local host 不同的时后,必须输入的选项,否则 rlogin 将会假设你在那边的 username 与 local host 相同,然後在第一次 login 时必然会发生错误。 

rsh 是在远方的机器上执行某些指令,而把结果传回 local host 。 

rsh 的格式 如下: rsh host [ -l username ] [ command ] 

如同 rlogin 的参数 -l username , rsh 的 -l username 也是指定 remote host 的 username 。 

而 command 则是要在 remote host 上执行的指令。 

如果没有 指定 command ,则 rsh 会去执行 rlogin ,如同直接执行 rlogin 。 

不过 rsh 在执行的时候并不会像一般的 login 程序一样还会问你 password , 

而是如果你没有设定 trust table , 则 remote host 将不会接受你的 request 。 

rsh 须要在每个可能会做为 remote host 的机器上设定一个档案,称为 .rhosts。 

这个档案每一行分为两个部份, 

第一个是允许 login 的 hostname , 

第二个部份 则是允许 login 的 username 。 

例如,在 www.cnhonker.com上 

你的 username 为 lion , 而你的 home 下面的 .rhosts 

有以下的一行: www1.cnhonker.com lion1 

则在 www1.cnhonker.com 机器上的用户 lion1 

就可以用以下的方法来执行rsh : % rsh www.cnhonker.com -l lion1 cat mbox 

将 lion1 在 www.cnhonker.com 上的 mbox 档案内容显示在本地的 www1.cnhonker.com 上。 

而如果 .rhosts 有这样的一行,则 www1.cnhonker.com 上的用户 lion1 将可以不用输入密码而直接经由 rsh 或 rlogin 登陆到 www.cnhonker.com 来。 

注意:.rhosts 是一个设定可以信任的人登陆的表格,因此如果设定不当将会让不法之徒有可以乘机侵入系统的机会。 

如果你阅读 man 5 rhosts ,将会 发现你可以在第一栏用 + 来取代任何 hostname ,第二栏用 + 来取代任何 username 。 

如一般 user 喜欢偷懒利用 " + username " 来代替列一长串 hostname , 但是这样将会使得即使有一台 PC 上跑 UNIX 的 user 有与你相同的用户名, 也可以得到你的允许而侵入你的系统。这样容易造成系统安全上的危险。 

同样,很多人都愿意在黑过的机器上添加"+ + "到用户的.rhosts文件里.以便留下后门. 

但是,这样是很容易被发现的. 



命令:rm 

介绍:rm - 删除文件或目录。 

注意,在LINUX下如果产生类似于 “-f”这种文件名的文件,删除是先跟 “--”选项。这表明后面所跟的 “-f”不是选项而是文件名 

例如“rm -- -file”是删除文件“-file”, 

在删除文件名中包含特殊字符的文件时,可以用“\+特殊字符”,或用"" 将文件名括起来, 

例如要删除文件 “this is a test”可以用下列命令: rm this\ is\ a\ test 或者 rm "this is a test" 

另外要特别注意,使用rm -rf * 这个命令,如果用户是超级用户,并且在root下使用此命令,那么系统的所有文件将被删除。 

而在UNIX下恢复文件几乎是一件不可能的事情。 

因而要谨慎对待这个命令。 

另外建议用户将rm定义为“rm -i”,并加入到用户的登录文件中。 

范例:删除文件destfile 

[root@cnhonker.com /]# rm -v destfile 



命令:rmdir 

介绍:rmdir - 删除空的目录。 



命令:su 

介绍:su - 改变用户的ID或成为超级用户。 



命令:tail 

介绍:tail - 显示文件的最后一部分 

tail缺省显示文件名列表中的每个文件的最后十行,如果没有文件名或文件名为 “-” 则其从标准输入中读取文件, 

如果有多个文件则其会在文件前面加上 “==> 文件名 <==” 以便区分。 

范例: 

显示文件/etc/DIR_COLORS的最后三行: 

[root@cnhonker.com /]# tail -v -n 3 /etc/DIR_COLORS 


   

命令:tar 

介绍:tar - GNU 版的文件打包备份的工具。 


范例: 

将当前目录下所有.txt文件打包并压缩到归档文件bak.tar.gz 

[root@cnhonker.com /]# tar czvf bak.tar.gz ./*.txt 

将目录./sec打包到归档文件sec.tar.gz 

[root@cnhonker.com /]# tar czvf sec.tar.gz ./sec 

   

命令:tcsh 

介绍:tcsh - 一个带有文件名自动补充和行编辑功能的C shell。 

tcsh是著名的伯克利UNIX的C SHELL的增强版本,它既可以作为一个交互式的登录 SHELL又可以作为脚本文件的处理器。 

tcsh在作为登录shell启动时,首先读取系统配置文件/etc/csh.cshrc和 /etc/csh.login. 

接着到用户的根目录下去读取~/.tcshrc,如果没有 ~/.tcshrc则去读取~/.cshrc, 

接着读取 ~/.history,~/.login最后是 ~/.cshdirs. 

非登录shell启动时只读取/etc/csh.cshrc和~/.tcshrc。 

命令行编辑器: 使用方向键来编辑,上下为在历史记录中选择命令,左右键为在命令行上前后移动进行编辑。 

命令补充和列表: 在用户键入命令时,经常不能记住命令或目录的全名,这时候tcsh可以帮助用户将剩余部分补全, 

例如用户键入 “/usr/lost”但是忘记后面的部分,这时候用户只需要键入TAB 键,tcsh就会自动将剩余的部分补全-- “/usr/lost+found/”,当用户给出的部分有多个匹配的情况下例如 “/usr/l”则TAB将无法补全,这时候用户只须键入 “CTRL+D”则tcsh 将替用户列出所有匹配的情况:“lib/ local@ lost+found/”,用户就可以自己选择了。 


   

命令:top 

介绍:top - 显示系统的最高进程 

top 这个命令可以即时显示当前系统最占CPU时间的进程,它同时提供一个交互的界面让用户可以观察系统进程情况, 

它可以按照CPU使用情况,占内存大小,运行的时间来对进程排序,这是系统管理的一项必不可少的工具。 


   

命令:touch 

介绍:touch - 改变文件的时间参数。 

touch将文件的访问时间,修改时间设置为系统的当前时间,如果该文件不存在则建立一个空的新文件。 

范例:将当前目录下的文件的时间参数修改为当前时间: 

[root@cnhonker.com /]# touch * 




命令:umount,mount 

介绍:mount - 装载一个文件系统。 

umount - 卸下一个文件系统。 

列出系统目前mount的文件系统 : 

[root@cnhonker.com /]# mount 

/dev/hda1 on / type ext2 (rw) 

none on /proc type proc (rw) 

/dev/hda3 on /home type ext2 (rw) 

/dev/hda2 on /usr/local type ext2 (rw) 

加载光驱: 

[root@cnhonker.com /]# mount /dev/hdb /mnt 





命令:useradd ,adduser ,userdel 

介绍: useradd ,adduser 添加用户 

userdel 删除用户 

这些命令只能被root使用. 

比如 

useradd -D lion 按默认值添加一个用户lion 

passwd lion --你要使你刚添加的用户生效,必须要用passwd 给这个用户制定密码. 

你可以查看帮助信息获得更多资料. 


   

命令:uudecode,uuencode 

介绍:uuencode - 将一个二进制文件编码为一个文本文件。 

uudecode - 将uuencode产生的文件复原。 

在Internet尚未十分发达的时候,很多用户只能使用E-mail,要交换软件的话是一件十分麻烦的事情, 

因为不能用E-mail直接传送二进制文件,于是uuencode和uudecode就成为十分有用的两个工具。 

uuencode 产生的文本文件以begin 644 为开始标志,以end为结束标志在这中间的就是编码过的文件。 

编码后的文件将比源文件大35%左右。 

uuencode产生的文件将输出到标准输出,如要存成文件,请使用管道功能将其重定向到一个磁盘文件中。 

uuencode 源文件名 

编码时使用的文件名 

uudecode 要解码的文件名 

   

命令:vi 

介绍:vi - 功能强大的UNIX编辑器。 

Vi 简介 

Vi 是 UNIX 世界里最通用的全屏编辑器,所有的UNIX机器都提供本编辑器Linux里提供的是vi的加强版-vim,但是是同vi完全兼容的。 

Vi的原意是 “visual”即可视编辑器,用户键入的会立即被显示出来。 

而且其强大的编辑功能可以同任何一个最新的编辑器相媲美,而且学会vi可以让用户在任何一台UNIX机器无论是SUN,HP,AIX,SGI,还是 Linux或FreeBSD上都可以得心应手地编辑文件。 

只要在命令行上键入 vi 就可以进入vi的编辑环境。 

Vi有两种状态,输入状态以及指令状态。 

用户在输入状态下可以输入文字资料 

指令状态是用来执行打开文件,存档,离开vi等操作命令, 

执行vi后首先进入指令状态,此时输入的任何字符都作为指令来处理。 

输入 “vi 文件名”则vi自动装入文件或开始一个新文件,vi屏幕的左方会出现波浪号 “~”,代表本行为空行。 

要如何进入输入状态呢? 

以下为相应的指令: 

追加 (append) 

  a 从光标所在位置后面开始追加文字,光标后的文字随追加的文字向后移动。 

  A 从光标所在列最后面的地方开始追加文字。 

插入 (insert) 

  i 从光标所在位置前面开始插入文字,光标后的文字随追加的文字向后移动。 

  I 从光标所在列的第一个非空白字符前面开始插入文字。 

开始 (open) 

  o 在光标所在列下新增一列并进入输入状态。 

  O 在光标所在列上方新增一列并进入输入状态。 

  x 删除光标标所在字符。 

  dd 删除光标所在的列。 

  r 修改光标所在字符接下来要修正的字符。 

  R 进入改写状态,新增文字会覆盖原先文字 

  s 删除光标所在字符,并进入输入状态。 

  S 删除光标所在的列,并进入输入状态。 

结束编辑(quit) 

  :q 结束编辑(quit) 如果不想存档而要放弃编辑过的文件则用 

  :q! 强制离开。 

  :w 存档(write) 其后可加所要存档的名。 

  :wq 即存档后离开。 

  zz 功能与 

  :wq 相同。 



命令:wc 

介绍: wc - 统计一个文件中的字节数,单词数,行数。 



命令:w ,who ,who am i 

介绍: w - 查看其他登录的用户。 

who - 查看其他登录的用户。 

who am i -查看自己的详细情况 



命令:which 

介绍:which - 显示命令的全路径。 

which 程序名 



OK,命令介绍就到这里了. 

:) 

(http://www.fanqiang.com)
    进入【UNIX论坛

相关文章
UNIX系列系统入侵教程 之三 UNIX系统后门的安放和日志的擦除 (2001-05-31 20:10:00)
UNIX系列系统入侵教程 之二 UNIX系统和常用命令简介 (2001-05-31 19:00:00)
UNIX系列系统入侵教程 之一 灵活利用资源 (2001-05-31 18:08:00)
 

★  樊强制作 欢迎分享  ★