精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>网络专区>>● Internet>>
理论基础
>>★Internet冲浪宝典★>>::病毒.黑客.入侵及防御::>>hack2

主题:hack2
发信人: swimmingfish.bbs@bj.()
整理人: snowypeng(2001-08-05 15:14:53), 站内信件

 嘻嘻,你已经进入了黑客教程第一课,可以与我联系,但不要问我UNIX是说明吆


   这篇文章不是我写的,我把蹋改编了一下,但我记不清是在哪down的了,大侠
原谅!嘻嘻!强哥笔。

    

   一、UNIX 常用的指令

   以下只说明各指令的基本用法, 若需详细说明, 请用 man 去读详细的 manua
l.

   1. ls

   这是最基本的档案指令。 ls 的意义为 "list",也就是将某一个目录或是

   某一个档案的内容显示出来。如果你在下 ls
   指令後头没有跟著任何的档名,它将会显示出目前目录中所有档案。也可以在
 ls
   後面加上所要察看的目录名称或档案的名称,如

   % ls /etc

   ls 有一些特别的参数,可以给予使用者更多有关的资讯,如下:

   -a : 在 UNIX 中若一个目录或档案名字的第一个字元为 "." , 则使用 ls

   将不会显示出这个档案的名字,我们称此类档案为隐藏档。如 tcsh的初设档

   .tcshrc;如果我们要察看这类档案,则必须加上参数 -a 。

   -l : 这个参数代表使用 ls 的长( long )格式,可以显示更多的资讯,如档
案存取权,档案拥有者( owner
   ),档案大小,档案最後更新日期,甚而 symbolic link 的档案是 link 那一
个档等等。如下

   % ls -l 

    

   2. cp

   cp 这个指令的意义是复制("COPY") , 也就是将一个或多个档案复制成另一个
档案或者是将其复制到另一个目录去。

   -i : 此参数是当已有档名为 f2 的档案时,若迳自使用 cp 将会将原来 f2


   的内容掩盖过去,因此在要盖过之前必须先询问使用者一下。如使用者

   的回答是y(yes)才执行复制的动作。

   -r : 此参数是用来做递回复制用,可将一整颗子树都复制到另一个

   目录中。 

    

   3. mv

   mv 的意义为 move , 主要是将一档案改名或换至另一个目录。如同 cp ,它
也有

   三种格式:

    

   mv 的参数有两个,-f 和 -i , 其中 -i 的意义与 cp 中的相同,均是 inte
ractive

   询问之意。而 -f 为强迫( force ) , 就是不管有没有同名的档案,反正我就
是要

   搬过去,所有其他的参数遇到 -f 均会失效。

    

   4. rm

   rm 的意义是 remove ,也就是用来杀掉一个档案的指令。在 UNIX 中一

   个被杀掉的档案除非是系统恰好有做备份,否则是无法像 DOS 里面一样还能
够救回

   来的。所以在做 rm 动作的时候使用者应该要特别小心。

    

   -f : 将会使得系统在删除时,不提出任何警告讯息。

   -i : 在除去档案之前均会询问是否真要除去。

   -r : 递回式的删除。

    

   5. mkdir

   mkdir 是一个让使用者建立一个目录的指令。你可以在一个目录底下使用 

   midir 建立一个子目录,使用的方法就不用多说了吧!

    

   6. chdir ( cd )

   这是让使用者用来转移工作目录用的。

   chdir dirname 

   如此你就可以将目前的目录转移到 dirname 这一个目录去。或使用 "chdir 
.." 来转移到上一层目录。

    

   7. rmdir

   相对於 mkdir ,rmdir 是用来将一个"空的"目录杀掉的。如果一个目录下面
没有任何档案,你就可以用 rmdir
   指令将其除去。rmdir 的使用法如下: 

   rmdir dirname1 [ dirname2 .... ] 

   如果一个目录底下有其他的档案, rmdir 将无法将这个目录杀掉,除非使用
 rm 指令的 -r 选项。

    

   8. pwd

   pwd 会将目前目录的路径( path )显示出来,例如:

   9. cat/more/less

   以上三个指令均为察看档案内容的指令。cat 的意义是猫....不不不,是 co
ncatenate
   ,在字典上的意思是"连结,将…串成锁状"( 语出资工电子词典 cdict ),其
实就是把档案的内容显示出来的意思。
   cat 有许多奇怪的参数,较常为人所使用的是 -n 参数,也就是把显示出来的
内容加上行号。 cat 的用法如下:

   cat [-n] :自标准输入读进内容,你可以用 pipe 将别的程式的输出转向

   给 cat .

   cat [-n] filename : 将 filename 的内容读进来,显示在标准输出上。问题
在於 cat
   它是不会停下来的,因此并不好用( 试想如果一个萤幕二十四行,而一个档案
四百行,cat
   一出来将会劈哩啪啦不断的卷上去,使用者很难据此得到他们所需的资讯。)
 所以才有人又写了 more 出来。

   more
   ,可以将所观察的档案跟据终端机的形态一页页的显示出来,再根据使用者的
要求换页或卷行。如果使用者要在某一个档案中搜寻一个特定的字串,则按
   / 然後跟著打所要搜寻的单字即可进行搜寻。more 也可以找得到。more 的使
用法如下:

   more filename

    

   如果你在使用中觉得已经看到了所要看的部份,可以按'q'离开 more 的使用
。在使用中按'v'
   亦可以使用编辑器来编辑所观看的档案。less 的用法与 more 极类似,原先
它就是为了弥补 more
   只能往前方卷页的缺点而设计。 less 的用法如下:

   less filename 

   其与 more 不同的是它可以按 y 来往上卷一行,并且可以用"?"来往回搜寻你
所要找的单字。

    

   10. chmod

   chmod 为变更档案模式用( change mode ) . 这个指令是用来更改档案的存取
模式( access mode )。在 UNIX
   一个档案上有可读(r)可写(w)可执行(x)三种模式,分别针对该档案的拥有者(
 onwer )、同群者( group member )(
   你可以 ls -lg来观看某一档案的所属的 group ),以及其他人( other
   )。一个档案如果改成可执行模式则系统就将其视为一个可执行档,而一个目
录的可执行模式代表使用者有进入该目录之权利。chmod
   就是用来变更一些档案的模式,其使用方式如下:

   chmod [ -fR ] mode filename ...

   其参数的意义如下:

   -f Force. chmod 不会理会失败的动作。 

   -R Recurive. 会将所有子树下的所有子目录及档案改为你所要改成的模式。


   mode 可以为一个三位或四位的八进位数字,来表示对某些对象的存取权。详
情可参阅 chmod(1) 的 manual page
   中有关 Absolute Modes 的说明。或是用一个字串来表示,请参考 chmod(1)
 的说明。

   b. 关於 Process 处理的指令:

   1. ps

   ps 是用来显示目前你的 process 或系统 processes 的状况。

   以下列出比较常用的参数:

    

   其选项说明如下:

   -a 列出包括其他 users 的 process 状况。

   -u 显示 user - oriented 的 process 状况 。

   -x 显示包括没有 terminal 控制的 process 状况 。

   -w 使用较宽的显示模式来显示 process 状况 。

    

   我们可以经由 ps 取得目前 processes 的状况,如 pid , running state 等


   2. kill

   kill 指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是


   用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill 。kill 的用法


   为:

    

   kill [ -SIGNAL ] pid ...

   kill -l

    

   SIGNAL 为一个 singal 的数字,从 0 到 31 ,其中 9 是 SIGKILL ,也就是


   般用来杀掉一些无法正常 terminate 的讯号。其馀讯号的用途可参考 sigve
c(2)

   中对 signal 的说明。

    

   你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形


   请参阅 man kill。

   c. 关於字串处理的指令:

   1. echo

   echo 是用来显示一字串在终端机上。□ echo -n 则是当显示完之後不会有跳
行的动作。

    

   2. grep/fgrep

   grep 为一过滤器,它可自一个或多个档案中过滤出具有某个字串的行,或是


   自标准输入过滤出具有某个字串的行。

    

   fgrep 可将欲过滤的一群字串放在某一个档案中,然後使用 fgrep 将包含有


   属於这一群字串的行过滤出来。

    

   grep 与 fgrep 的用法如下:

    

   grep [-nv] match_pattern file1 file2 ....

   fgrep [-nv] -f pattern_file file1 file2 ....

    

   -n 把所找到的行在行前加上行号列出

   -v 把不包含 match_pattern 的行列出

   match_pattern 所要搜寻的字串

   -f 以 pattern_file 存放所要搜寻的字串

   d. 网路上查询状况的指令:

   1. man

   man 是手册 ( manual ) 的意思。 UNIX 提供线上辅助( on-line help )的功
能, 

   man 就是用来让使用者在使用时查询指令、系统呼叫、标准程式库函式、各种


   格等的使用所用的。man 的用法如下:

    

   man [-M path] [[section] title ] .....

   man [-M path] -k keyword ...

    

   -M path man 所需要的 manual database 的路径。

   我们也可以用设定环境变数 MANPATH 的方式来取代 -M 选项。

   title 这是所要查询的目的物。 

   section 为一个数字表示 manual 的分类,通常 1 代表可执行指令,

   2 代表系统呼叫( system call ) ,3 代表标准函数,等等。

   我们如要参考 eqnchar(7) 的资料,则我们就输入 man 7 eqnchar ,

   便能取得我们所要的辅助讯息。

   -k keyword 

   用来将含有这项 keyword 的 title 列出来。

   man 在 UNIX
   上是一项非常重要的指令,我们在本讲义中所述之用法均仅只是一个大家比较
常用的用法以及简单的说明,真正详细的用法与说明还是要请你使用
   man 来得到。

    

   2. who

   who 指令是用来查询目前有那些人在线上。

    

   3. w

    

   w 指令是用来查询目前有那些人在线上,同时显示出那些人目前的工作。

    

   4. ku

   ku 可以用来搜寻整个网路上的 user ,不像 w 跟 who 只是针对 local hos
t 的查询. 而且 ku
   提供让使用者建立搜寻特定使用者名单的功能。你可以建立一个档案 inform
ation-file
   以条列的方式存放你的朋友的资料,再建立一个档案 hosts-file 来指定搜寻
的机器名称。 ku 的指令格式可由 ku -h
   得到。

   E. 网路指令:

   UNIX 提供网路的连接,使得你可以在各个不同的机器上做一些特殊的事情,
如你可以在系上的 iris
   图形工作站上做图形的处理,在系上的 Sun 上读 News ,甚至到学校的计中
去找别系的同学 talk
   。这些工作可以利用 UNIX
   的网路指令,在你的位子上连到各个不同的机器上工作。如此一来,即使你在
寝室,也能轻易的连至系上或计中来工作,不用像以前的人必须泡在冷冰冰的机
房面。

   这些网路的指令如下所述:

   1. rlogin 与 rsh 

   rlogin 的意义是 remote login , 也就是经由网路到另外一部机器 login 。
 

   rlogin 的格式是:

    

   rlogin host [ -l username ]

    

   选项 -l username 是当你在远方的机器上的 username 和 local host 不同
的时後,必须输入的选项,否则 rlogin
   将会假设你在那边的 username 与 localhost 相同,然後在第一次 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 。例如,在 ccsun7.csie.nctu.edu.tw 上头你的 username 为 
QiangGe , 而你的 home 下面的 .rhost
   有以下的一行:

   ccsun6.cc.nctu.edu.tw u8217529

   则在 ccsun6.cc.nctu.edu.tw 机器上的 user u8217529 就可以用以下的方法
来执行 rsh 程式:

   % rsh ccsun7.csie.nctu.edu.tw -l ysjuang cat mbox 

    

   将 ysjuang 在 ccsun7.csie.nctu.edu.tw 上的 mbox 档案内容显示在 loca
l host ccsun6.cc.nctu.edu.tw 上。

    

   而如果 .rhost 有这样的一行,则 ccsun6.cc.nctu.edu.tw 上的 user u821
7529

   将可以不用输入 password 而直接经由 rsh 或 rlogin login 到 

   ccsun7.csie.nctu.edu.tw 来。

    

   注意:

    

   .rhost 是一个设定可以信任的人 login 的表格,因此如果设定不当将会让不
法之徒有可以乘机侵入系统的机会。
   如果你阅读 man 5 rhosts ,将会发现你可以在第一栏用 + 来取代任何 hos
tname ,第二栏用 + 来取代任何username
   。

    

   如一般 user 喜欢偷懒利用 " + username " 来代替列一长串 hostname ,但
是这样将会使得即使有一台 PC 上跑
   UNIX 的 user 有与你相同的 username , 也可以得到你的 trust
   而侵入你的系统。这样容易造成系统安全上的危险。因此本系禁止使用这样子
的方式写你的 .rhost 档,如果

   发现将予以停机直到你找中心的工作人员将其改正为止。 同理,如果你的第
二个栏位为 + ,如" hostname + "
   ,则你是允许在某一部机器上的"所有"user 可以不用经由输入 password
   来进入你的帐号,是壹种更危险的行为。所以请自行小心。

    

   2. telnet

   telnet 是一个提供 user 经由网路连到 remote host。

   telnet 的 格式如下:

    

   telnet [ hostname | ip-address ] [ port ]

    

   hostname 为一个像 ccsun1 或是 ccsun1.cc.nctu.edu.tw 的 name address
,ip-address 则为一个由四个小於 255
   的数字组成的 ip address ,如 ccsun1的 ip-address 为140.113.17.173 ,
ccsun1.cc.nctu.edu.tw 的
   ip-address为 140.113.4.11 。你可以利用 telnet ccsun1 或telnet 140.1
13.17.173 来连到 ccsun1。

    

   port 为一些特殊的程式所提供给外界的沟通点,如资工系的 MUD 其 server
 便提供一些 port 让 user 由这些 port
   进入 MUD 程式。详情请参阅 telnet(1)的说明。

   3. ftp

   ftp 的意义是 File Transfer Program ,是一个很常应用在网路档案传输的


   程式。ftp 的格式如下:

   ftp [ hostname | ip-address ]

   其中 hostname | ip-address 的意义跟 telnet 中的相同。

    

   在进入 ftp 之後,如果与 remote host 连接上了,它将会询问你 username

   与密码,如果输入对了就可以开始进行档案传输。

   在 ftp 中有许多的命令,详细的使用方式请参考 ftp(1) ,这里仅列出较常
用的 cd , lcd , mkdir , put , mput ,
   get , mget , binary , ascii , prompt , help 与 quit 的使用方式。

   ascii 将传输模式设为 ascii 模式。通常用於传送文字档。

   binary 将传输模式设为 binary 模式,通常用於传送执行档,压缩档与影像
档等。

   cd remote-directory 将 remote host 上的工作目录改变。

   lcd [ directory ] 更改 local host 的工作目录。

   ls [ remote-directory ] [ local-file ] 列出 remote host 上的档案。


   get remote-file [ local-file ] 取得远方的档案。

   mget remote-files 可使用通用字元一次取得多个档案。

   put local-file [ remote-file] 将 local host 的档案送到 remote host。


    

   mput local-files 可使用通用字元一次将多个档案放到 remote host 上。


   help [ command ] 线上辅助指令。

   mkdir directory-name 在 remote host 造一个目录。

   prompt 更改交谈模式,若为 on 则在 mput 与 mget 时每作一个档案之传输
时均会询问。

   quit/bye 离开ftp .

   利用 ftp
   ,我们便可以在不同的机器上将所需要的资料做转移,某些特别的机器更存放
大量的资料以供各地的使用者抓取,本校较著名的
   ftp server 有 NCTUCCCA 与系上的ftp.csie.nctu.edu.tw 。这些 ftp serv
er 均有提供一个 user 称为 anonymous
   ,一般的"外来客"可以利用这个 username 取得该 server 的公共资料。不过
 anonymous 在询问 password
   时是要求使用anonymous 的使用者输入其 email address,以往有许多台湾的
使用者在使用国外的 ftp server
   时并没有按照人家的要求输入其 email address,而仅是随便打一些字串,引
起许多 internet user
   和管理者的不满,对台湾的使用者的风评变得很差,因此遵循各 ftp server
 的使用规则也是一件相当重要的事。

   f. 关於通讯用的指令:

   1. write

   这个指令是提供使用者传送讯息给另一个使用者,使用方式:

   write username [tty]

    

   2. talk/ytalk/cytalk/ctalk

   UNIX 专用的交谈程式。会将萤幕分隔开为你的区域和交谈对象的区域,同时
也可和不同机器的使用者交谈。使用方式:

   talk username[@host] [tty]

    

   3. mesg

   选择是否接受他人的 messege , 若为 messege no 则他人的 messege
   将无法传送给你,同时他也无法干扰你的工作。使用方法:

   mesg [-n|-y]

   4. mail/elm

   在网路上的 email 程式,可经由此程式将信件 mail 给他人。 使用方式:

    

   mail [username]

   mail -f mailboxfile

    

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

    

   elm 提供较 mail 更为方便的介面,而且可做线上的 alias . 你可以进入 e
lm

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

    

   使用方式:

    

   elm [usernmae]

   elm -f mailboxfile

    

   g. 编译器( Compiler ):

   Compiler 的用处在於将你所撰写的程式翻译成一个可执行档案。在资工系常
用的程式语言是 C , pascal , FORTRAN
   等。你可以先写好一个 C 或 Pascal 或 FORTRAN 的原始程式档,再用这些 
compiler
   将其翻成可执行档。你可以用这个方法来制造你自己的特殊指令。

   1. cc/gcc (C Compiler)

   /usr/bin/cc

   /usr/local/bin/gcc

    

   语法: cc [ -o execfile ] source 

   gcc [ -o execfile ] source 

   execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可
执行档会以 a.out 做为档名。 source
   为一个以 .c 做为结尾的 C 程式档。请参阅 cc(1) 的说明。

    

   2. pc (Pascal Compiler)

   /usr/local/bin/pc

   语法: pc [ -o execfile ] source 

   execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可
执行档会以 a.out 做为档名。 source
   为一个以 .p 做为结尾的 Pascal 程式档。 请参阅 /net/home5/lang/man 中
 pc(1) 的说明。

   3. f77 (Fortran Compiler)

   /net/home5/lang/f77

    

   语法: f77 [ -o execfile ] source 

    

   execfile 是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可
执行档会以 a.out 做为档名。 source
   为一个以 .p 做为结尾的 FORTRAN 程式档。

    

   h. 有关列印的指令:

   以下为印表所会用到的指令,在本系的印表机有 lp1 , lp2 ( 点矩阵印表机
 ),

   lw , sp , ps , compaq ( 雷射印表机 ),供使用者使用。

   1. lpr 

   lpr 为用来将一个档案印至列表机的指令。

    

   用法:

   lpr -P[ printer ] file1 file2 file3 ....

    

   或

   lpr -P[ printer ] < file1

 

例子:

lpr -Plp1 hello.c hello.lst hello.map

lpr -Plp1 < hello.c

 

前者以参数输入所要印出的档案内容,後者列印标准输入档案(standard inp
ut)的内容,因已将 hello.c
转向到标准输入,故会印出 hello.c 的档案内容。

 

2. lpq

lpq 是用来观察 printer queue 上的 Jobs 。

用法:

lpq -P[ printer ]

3. lprm

lprm 是用来取消列印要求的指令。 通常我们有时会印错,或是误送非文字档
资料至 printer , 此时就必须利用 lprm
取消列印 request ,以免造成资源的浪费。

 

用法:

lprm -P[ printer ] [ Jobs id | username ]

 

lprm 用来清除 printer queue 中的 Jobs , 如果你使用 Job Id 作为参数,
则它将此 Job 自printer queue
清除,如果你用 username作为参数,则它将此 queue中所有 Owner 为此use
rname 的 Jobs 清除。

 

i. 更改个人使用资料:

1. passwd

passwd 是用来更改你的使用密码,用法为:

passwd [ username ]

在使用 passwd 的时候,它会先问你的旧密码,然後询问两次要更改的密码,
确定无误後才将你的密码改掉。

2. chsh

chsh 是提供使用者更换 login shell 的指令,你可经由此更换自己使用的
shell 。

 

如果你完成了此课,请再购买清华大学出版的《Java Script for
Netscape编程指南》或与此类似的书,学完了之后,写一篇心得,告诉我。你
就可以进入下一课了!!!


--
铁马冰河入梦来

※ 来源:.网易虚拟社区北京站 http://bj.netease.com.[FROM: 210.72.227.130]

[关闭][返回]