黑客经典教程之操作系统简介之二 Linux SHELL编程
黑客经典教程之操作系统简介之二 Linux SHELL编程
SHELL编程是指写一个包含一系列UNIX命令的程序,这个程序可以在命令行运行。用下面的命令何以执行一个SHELL程序:
方式一
$ sh cmd.file
方式二
$ . cmd.file;
方式三
$ chmod u+x cmd.file
$ cmd.file
怎样创建和运行一个SHELL脚本
在一个编辑器里,写入一系列UNIX命令,举个例子:
echo This is a shell program
echo Today I am going to
echo $1 $2 $3 $4 $5 $6 $7 $8 $9
保存这个文件,命名为ex1。然后用下列命令“chmod 700 ex1”,将该文件变为可执行文件。做完上述个步骤之后,就好了。如果要看运行这个文件会出现什么结果,可以在命令行状态下键入:ex1 coffee bar in hangzhou。
上述程序中最后一行就是将ex1命令中的单词读入内存,同样将第二个等等。$1代表第一个单词,$2代表第二个。
可见,SHELL程序的目的是能批量处理命令,从而完成一些比较复杂的工作。
不同的SHELL有不同的启动文件,比如:
bash: .profile
sh: .profile
csh: .cshrc
tcsh: .cshrc
zsh: $ZDOTDIR/.zprofile and/or $ZDOTDIR/.zshrc
所有的这些启动文件都要读入.login和.logout文件。
SHELL程序设计
注释
操作符“#"引入注释。
if 操作符
语法
if [ 条件表达式 ]
then
命令序列
fi
或
if [ 条件表达式 ]
then
命令序列
else
命令序列
fi
数值操作符
= 等于
-n 不等于
-gt 大于
-lt 小于
-le 小于等于
exit 命令
用于结束SHELL脚本。可以带一个返回值。
expr 命令
以数值和算术运算符作为参数,计算结果,将其返回标准输出。
$ expr 4 + 5
9
$
合法算术运算符有+、-、*、/和%。在*和/之前必须冠以反斜线,已防被SHELL先行解释。
for 操作符
循环语句。
语法:
for $环境变量 in 字符串表
do
语句序列
done
while 操作符
循环语句。
语法:
while [ 条件表达式 ]
do
语句序列
done
case 操作符
条件控制语句。
语法:
case $环境变量 in
常量1)
语句序列1
;;
常量2)
语句序列2
;;
... ...
常量n)
语句系列n
;;
esac
命令行变元
$# 传入脚本的命令行变元数;
$* 所有命令行变元值;
位置变元
$0 命令本身
$1 第一个命令行变元;
$2 第二个命令行变元
SHELL函数
shell函数由以下形式定义
funcname () {
命令序列
}
调用时
funcname arg1 arg2
第二节 Windows 98
Windows 98 MSDOS.SYS的设置和编辑
Windows 98 的安装程序会在根目录中建立一个叫MSDOS.SYS 的文件,并且设定其属性为只读,系统和隐藏。这个文件不像MS-DOS的开机文件MSDOS.SYS。这个文件只是一个普通文本文件。包含了两个段落——[Paths]和[Options]。可以修改这个文件,来改变系统的一些属性。
[Paths]段列出了Windows 95其它文件的位置(如注册文件等)。[Options]段则使你可以用来设定自己的喜欢的开机模式。
简介如下:
1. [Paths] 段的设置
----------------------------------------------------------------------
HostWinBootDrv=< 开机驱动器>
预设值: C
目的: 指定所要开机的驱动器
----------------------------------------------------------------------
WinBootDir=< Windows所在目录>
预设值: 安装时所指定的目录(例如C:\WINDOWS)
目的: 列出开机时所需要的文件位置
----------------------------------------------------------------------
WinDir=< Windows 所在目录>
预设值: 安装时所指定的目录(例如 C:\WINDOWS)
目的: 列出安装时所指定的Windows 95目录位置
2. [Options]段包含下列设置,必须手动加入
----------------------------------------------------------------------
BootDelay=< 秒数>
预设值: 2
目的: 设定Windows 95开机前显示“Starting Windows 95"这个信息的时间长度
----------------------------------------------------------------------
BootFailSafe=< Boolean>
预设值: 0
目的: 设为1时,使电脑开机时进入安全模式
----------------------------------------------------------------------
BootGUI=< Boolean>
预设值: 1
目的: 设为1时,系统自动进入GUI界面(就是进Windows 95)
设为0时,系统自动进入DOS界面(也就是进到C:>)
----------------------------------------------------------------------
BootKeys=< Boolean>
预设值: 1
目的: 设为1时,开机时可使用功能键(如F4、F5、F6和F8)
设为0时,则禁止使用
注意: 当设BootKeys=0时,BootDelay=n无效
----------------------------------------------------------------------
BootMenu=< Boolean>
预设值: 0
目的: 设为1时,开机时自动进入startup menu
设为0时,必须在开机显示“Starting Windows 95"时按F8,才能进入startup menu
----------------------------------------------------------------------
BootMenuDefault=< Number>
预设值: 1 如果系统正常运作的话
4 如果系统在前一次运行时发生硬关机的话
目的: 预设系统启动时进入startup menu时,默认要继续的那一项
----------------------------------------------------------------------
BootMenuDelay=< Number>
预设值: 30
目的: 设定系统启动时,startup menu的等待秒数,如果这个值减到0,你没有
选择菜单时,系统按照 BootMenuDefault的值启动系统
----------------------------------------------------------------------
BootMulti=< Boolean>
预设值: 0
目的: 设为0时,关掉多重开机的功能(例如:设定为0时不能用前一个操作系统开机)
设为1时,允许使用F4和F8来选择使用前一个操作系统开机
注意: 预设值设为0,是为了避免文件错误。因为使用者会无意中使用MS-DOS开机,并使用不认识长文件名的DOS工具程序
----------------------------------------------------------------------
BootWarn=< Boolean>
预设值: 1
目的: 设为0时,关掉安全模式开机时的警告讯息和startup menu
----------------------------------------------------------------------
BootWin=< Boolean>
预设值: 1
目的: 设为1时,开机后马上执行Win95
设为0时,不会在开机后马上执行Win95。当然你的系统必须有MS-DOS 5.x 或 6.x
注意: 当BootMulti=1时,按F4则会使这里的设定变成相反的作用。例如BootWin=0时,如果BootMulti=1,则按F4就会强迫开机后执行Win95
----------------------------------------------------------------------
DoubleBuffer=< Boolean>
预设值: 0
目的: 设为1时,提供Double-buffer功能。如果你的controller需要的话,如SCSI Controller
设为2时,则是无条件使用double-buffer功能,不管你的controller 是否需要
----------------------------------------------------------------------
DBLSpace=< Boolean>
预设值: 1
目的: 设为1时,自动载入DBLSPACE.BIN
设为0时,不会自动载入
----------------------------------------------------------------------
DRVSpace=< Boolean>
预设值: 1
目的: 设为1时,自动载入DRVSPACE.BIN
设为0时,不会自动载入
----------------------------------------------------------------------
LoadTop=< Boolean>
预设值: 1
目的: 设为0时,要求Win95不要将COMMAND.COM、DRVSAPCE.BIN和DBLSPACE.BIN载入UMB。如果你使用的软件有兼容问题时,可以考虑将此设为0
----------------------------------------------------------------------
Logo=< Boolean>
预设值: 1
目的: 设为1时,强迫Win95显示预设的启动画面
设为0时,避免显示Win95启动画面
3. MSDOS.SYS的重要性
MSDOS.SYS文件包含一些表面上看起来没有用的信息。其实,这些信息对某些软件是必需的。这些软件认为这个文件大小至少需1024 bytes。例如,如果防毒软体检测到MSDOS.SYS这个文件小于1024 bytes,则 它会认为这个文件已经遭到破坏。因此在这个文件后面一段说明文字:“;The following lines are required for compatibility with other programs. ;Do not remove them (MSDOS.SYS needs to be >1024 bytes)."。“ ;"是说明的意思,系统不会读取这段文字。在这段文字下就出现一堆 "X"。
4. 如何编辑MSDOS.SYS
编辑MSDOS.SYS的步骤如下:
(1)修改MSDOS.SYS的文件属性:attrib -s -h -r c:\msdos.sys。
(2)用Notepad编辑这个文件,并保存。
(3)再将文件属性改回去:attrib +s +h +r c:\msdos.sys。
第三节 Windows NT
Windows NT注册表
注册表提供了一个安全,统一的数据库,用来以一个层次结构来保存配置信息。注册表中的每一个主键和一个.INI文件中的用方括号括住的条目一样。
.INI文件的一个缺点就是不支持条目的嵌套,以及包含非纯文本信息。注册表的主键能包含嵌套的付键。这些付键为配置系统提供了进一步详细的信息。注册表的值可以包含可执行代码,并同时为在同一计算机上的多个用户提供配置。
有两个版本的注册表编辑器,可以用来修改注册表。
.:Regedt32.exe 包含了大多数菜单项和它们的选择。可以在注册表里查找主键和付键。
.:Regedit.exe 可以查找字符串,值,主键和付键。
为了便于使用,注册表分成了五个独立的部分。这些都叫做主键。
HKEY_CURRENT_USER
这里包含了当前登录的用户的一些配置信息。用户的文件夹,屏幕颜色,控制面板设置都保存在这里。这些都是用户相关信息。
HKEY_USERS
在NT 3.5版本,用户相关信息存在systemroot\system32\config目录。在NT 4.0,它们存在systemroot\profiles目录。用户特有信息和系统用户共有的信息都存在那里。
这里的改变是为了和Windows 95处理用户信息方法保持并行。在新版本的NT里,单个用户的信息被分成几个部分,放在\profiles的不同的子目录下。这样做的一个原因是,Win95和NT操作系统使用地层的目录结构形成他们新用户界面。
一个用户信息包含在NTUser.dat(和NTUser.dat.log)文件和下面的目录里:
* Application Data:保存这个用户的应用程序信息。
* Desktop:放一个文件的图标或快捷方式,使得这些东西能在用户桌面上显示。
* Favorites:提供给用户放置他个人的一些保存内容,如文件,快捷方式和其他信息。
* NetHood::保存个人的有关网络连接的信息。
* Personal:为一个指定用户保存个人文档的跟踪。
* PrintHood:保存的是打印机的使用。
* Recent:最近使用的东西
* SendTo:提供一个对输出设备的统一存储。
* Start Menu:用户菜单的设置。
* Templates:放置文档的模板。
HKEY_LOCAL_MACHINE
这个主键包含有关计算机的特殊信息。这些信息存放在systemroot\system32\config目录下,作为操作系统的永久文件,除了一些易变的硬件主键。
应用程序,设备驱动程序和NT操作系统从这些配置文件里读入信息。操作系统用这些信息来决定系统的配置,而不管是哪个用户在使用这个系统。正是因为这个原因,对于系统管理员来讲,HKEY_LOCAL_MACHINE是相当重要的。
HKEY_LOCAL_MACHINE包括五个付键:
* Hardware:描述计算机硬件,硬件驱动程序怎样使用硬件,映象和连接内核模式驱动程序和各种用户模式数据的数据库。所有这些数据在系统启动时重新建立。
* SAM:安全帐号管理。在NT 4服务器域,用户和组帐号的安全管理。
* Security:包括本地安全策略,比如特定用户的权限的数据库。
* Software:应用软件的安装和配置信息数据库。
* System:控制系统启动,驱动程序装入,NT服务和操作系统行为的数据库。
HKEY_LOCAL_MACHINE\SAM的有关信息
这个子树包含了本地计算机的SAM数据库中的用户和组帐号。对于NT 4.0,还包含了域的安全信息。SAM注册键包含的信息是User Manager 工具里显示的信息,或者是你使用NT 4 的资源管理器的安全菜单命令所显示的用户和组。
KEY_LOCAL_MACHINE\Security的有关信息
这个子树包含本地计算机的安全信息。包括以下方面:分配用户权限,建立口令策略,本地组的成员,都是由User Manager 配置的。
HKEY_CLASSES_ROOT
保存在这里的信息是在使用资源管理器或者对象联结和嵌入时,打开一个文件时能调用正确的应用程序。
HKEY_CURRENT_CONFIG
这里保存的数据是用来进行配置,比如软件和驱动程序的载入或显示时使用的分辨率。这个主键有两个付键:software和system,他们保持对配置信息的跟踪。
理解Hives
注册表分成叫做hives的部分。这些hives和一个单独的文件及严格lOG文件对应。这些文件在systemroot\system32\config目录下。
Registry Hive File Name
=================================================================
HKEY_LOCAL_MACHINE\SAM SAM 和SAM.LOG
HKEY_LOCAL_MACHINE\SECURITY Security 和 Security.LOG
HKEY_LOCAL_MACHINE\SOFTWARE Software 和 Software.LOG
HKEY_LOCAL_MACHINE\SYSTEM System 和 System.ALT
=================================================================
注释
Ownership = 选择ownership菜单项会出现一个对话框,显示所选择的注册键的拥有者的名字。键的拥有者允许另一个用户拥有这个键。管理员可以指定一个用户拥有这个Ownership,或自己直接操作。
REGINI.EXE = 这是一个文本的控制台应用程序,通过她,可以将一个注册表脚本中的键加入到注册表中。
下面的表列出了注册表hives和付键及缺省的存取权限。
\\ 表示一个主要hive
\ 表示一个付键
\\HKEY_LOCAL_MACHINE
Admin-Full Control
Everyone-Read Access
System-Full Control
\HARDWARE
Admin-Full Control
Everyone-Read Access
System-Full Control
\SAM
Admin-Full Control
Everyone-Read Access
System-Full Control
\SECURITY
Admin-Special (Write DAC, Read Control)
System-Full Control
\SOFTWARE
Admin-Full Control
Creator Owner-Full Control
Everyone-Special (Query, Set, Create, Enumerate, Notify, Delete, Read)
System-Full Control
\SYSTEM
Admin-Special (Query, Set, Create, Enumerate, Notify, Delete, Read)
Everyone-Read Access
System-Full Control
\\HKEY_CURRENT_USER
Admin-Full Control
Current User-Full Control
System-Full Control
\\HKEY_USERS
Admin-Full Control
Current User-Full Control
System-Full Control
\\HKET_CLASSES_ROOT
Admin-Full Control
Creator Owner-Full Control
Everyone-Special (Query, Set, Create, Enumerate, Notify, Delete, Read)
System-Full Control
\\HKEY_CURRENT CONFIG
Admin-Full Control
Creator Owner-Full Control
Everyone-Read Access
System-Full Control
|