- 论坛徽章:
- 1
|
http://hh.aust.edu.cn/~xjfang/nos/index.htm
http://pofem.51.net/index.php?op=Default&Date=200503&blogId=1
2.1 文件系统
●文件系统
Linux文件系统控制文件和目录中的信息以何种方式存在磁盘及其他辅助介质上。它
控制每个用户可以访问何种信息及如何访问。因此它是增强Linux系统安全性的最基本
的工具之一。
存储在Linux文件系统中的信息被安排成目录和文件的树形结构。树形结构由在一个总
目录中的目录和子目录构成,总目录被称之为根目录(root)。每一个目录内可以包含
子目录和其他项目,如文件、指向其他文件系统的指针(符号连接)、表示设备的逻
辑名称(如/dev/tty)以及其他的类型(proc等).
/:目录的根
/lib:应用程序使用的动态链接库(相当于windows系统的DLL文件)
/etc:配置文件
/usr:绝大部分的东西都在这里,比如应用程序/usr/bin,/usr/sbin,应用程序的附加文件/usr/lib,应用程序的文档/usr/doc,应用程序的联机手册/usr/man
/usr/local:一般附加软件的安装地点。
/var:保存一些随着系统运行会不断改变的内容,例如各种记帐信息、邮件和打印队列。
/tmp:保存临时文件。
/dev:保存设备文件
/proc:存放虚拟文件,用来显示系统的当前状况,如进程和CPU。
/mnt:文件系统的挂接点(mount point)
/home:默认的非root用户的宿主目录的所在地点。
/boot:内核映像文件、操作系统引导管理程序配置文件。
●使用文件系统:
安装文件系统
mount 开关 系统设备文件名 文件系统挂接点
mount -t iso9660 /dev/cdrom /mnt/cdrom
mount -t msdos /dev/fd0 /mnt/floppy
mount -t vfat /dev/hda5 /mnt/fat32
卸下文件系统
umount 挂接点(OR 系统设备文件名)
例:
umount /mnt/cdrom
●LINUX所支持的其它文件系统(page18)
系统中每一个用户可访问的事物均可以被表示为文件系统中的一个“文件”——
●文件与目录
包括进程和网络连接。每一个文件至少具有一个文件名,一个拥有者,以及访问权限
和其他的属性。
目录
目录是文件系统中的一个专门的条目。一个目录实际上是文件名的列表。文件名可以
由任意字符的字符串组成,但不能包含/和null字符。
每一个目录都包含有. 和 ..两个目录。
●当前目录和路径
绝对路径概念
相对路径概念
查看当前目录
pwd
使用ls命令
ls -a
ls -lF (Total行指出了目录中全部文件所占据的KB数。)
2.2 linux中的用户/文件权限
ls -l
由于LINUX系统是一个多用户系统,为确保系统的安全性,LINUX系统[color="#ff0000"]采用用户权限机制对系统进行管理,这种管理主要是通过文件管理机制来实现的。
最左边的属性位:表示文件项的类型(普通文件-,目录d,链接l,字符设备c,块设备b等)
***可执行位仅对于可执行文件有意义。
***LINUX中必须即拥有执行权限也拥有读权限时才能够执行某个script(脚本)程序,所以在下面讲到的编写shell script时,要执行的话必须给该shell script程序加上可执行权限。
- 使用chmod命令
chmod [agou] [+-=] [rwxs] filelist
a:所有用户(all)
u:文件或目录拥有者(user)
o:除文件拥有者和所在组以外的其它用户(other)
g:文件所有者所在组的所有用户(group)
权限
r read
w write
x execute(or access for directories)
s set user or group id (suid或sgid)
+:增加权限
-:取消权限
=:赋予给定的权限,取消原有的其它权限(如果原来有的话)
8进制的文件属性
根据文件属性位中是否有某一属性,得到八进制数-□□□○○○●●●
4000 SUID
2000 SGID
0400 -r--------
0200 --w-------
0100 ---x------
0040 ----r-----
0020 -----w----
0010 ------x---
0004 -------r--
0002 --------w-
0001 ---------x - umask命令
umask功能的接口是在sh,ksh,csh shell程序内的一个内在的命令!
你所建立的文件默认的文件属性是0666-umask设置的属性值。
直接输入不带参数的umask命令显示当前的umask之值。
- 使用目录权限
Linux将目录的内容存放在普通的文件中
常用的目录权限
0755 任何人可以看到目录的内容,但只有拥有者和root才能改变它
0700 $HOME 用户可以访问自己的主目录的内容,但其他用户则不可。 - 设备文件
设备文件是导致Linux流行和灵活的原因之一。
/dev 目录
大多数设备文件应不允许普通用户读写. - chown 改变文件所有者
chown [用户] - chgrp 改变文件的属组
chgrp [组名] - 超级用户root和su
超级用户root不受任何文件存取控制机制约束。每个UNIX/LINUX系统都有个root用户,这个用户执行系统的维护和管理。但有一点要注意,对于系统来说这个名字其实没有意义。系统内核真正关心的是用户的uid(参看/etc/passwd第三列之值)
利用su命令可以在不同用户之间切换。
su 用户名
LINUX默认的用户保护机制不仅用于控制,也用于设置用户执行的程序,[color="#ff0000"]一个用户所启动的程序通常自动具有了这个用户的权限,也就是这个程序对文件的存取按照用户的权限执行。一般情况下,这使得用户不能绕过文件存取机制来破坏文件系统。
[color="#ff0000"]setuid是一种特殊的文件属性,它使得被设置了setuid位的程序无论被哪个用户启动,都自动具有文件拥有者的权限。(参见P32例子)
setgid与setuid类似,具有setgid的可执行文件运行时自动获得文件对应的组权限。
setuid和setgid文件属性机制给系统安全带来了严重威胁。
chmod u+s
chmod g+s
2.3 SHELL编程和配置程序
系统的启动过程与操作系统的SHELL
shell与内核的交互。系统启动过程中内核将加载至内存直到系统关机, 在启动过程中,初始化程序init将扫描/etc/inittab,在此文件中将列出可用的终端及其属性,一旦找到活动的终端,getty(mingetty,LINUX)会给出login提示符和口令,确认完成后将启动相应的shell(/etc/passwd文件中用户帐号的SHELL域).
流程图如下:
系统的层次关系:
2. Linux常用shell:
Bourne Shell(sh,bash), Korn shell(ksh), csh(csh, tcsh)
3.环境变量
4.shell脚本的执行
5.命令行参数
6.定制用户SHELL
(宿主目录)$home中的文件.bashrc或.bashprofile(用ls -a命令查看)
[color="#ff0000"].bash_history
.bash_logout
.bash_profile
.bashrc
[color="#ff0000"]/etc/profile
[color="#ff0000"]/etc/bashrc(对Bourne Shell)
相关文件执行顺序(对Bourne Shell) /etc/profile -> $HOME/.bash_profile->/etc/bashrc ->$HOME/.bashrc
7.在/etc/skel中建立一些文件,则一个新用户建立之后,这些文件就自动被拷贝到宿主目录。如在/etc/skel建立.bashrc文件,内容如下:
.bashrc文件内容:
TERM=vt100; export TERM
alias lll "ls -la"
umask 022
2.4 帐户管理
1.口令文件
/etc/passwd
[color="#ff0000"]user4:[color="#0000ff"]$1$CF4hWgB6$u99SVNGgdmOYO33uNysCw/:502:502:user1:[color="#ff0000"]/home/staff/user1:[color="#0000ff"]/bin/bash
[color="#0000ff"]如果你想让一个普通用户拥有root权限,则只需将其uid改成0,但最好不要这样做。
各字段的含义
注意:由于passwd中存放了对口令明文采用DES(DATA ENCRYPTION STANDARD)和MD(MESSAGE DIGEST)加密后密文,利用高性能计算机及蛮力搜索的方法,完全可能用穷举的方法破解口令明文。
因此几乎所有的LINUX都使用shadow方式,密文保存在/etc/shadow文件中,而该文件对一般用户是不可读的,只有root用户才能读取。
$ls /etc/shadow -l
-rw------- 1 root root 1270 Oct 23 09:29 /etc/shadow
shadow文件中的一条记录
$more /etc/shadow
user1:$1$yJOcELFZ$tkTe0Lz6VTGs9llpvDJRS.:[color="#ff0000"]12325::99999::::
我们在/etc/passwd文件中只看到一个x,例如在/etc/passwd文件中我们看到的:
user1:[color="#ff0000"]x:502:502:user1:/home/staff/user1:/bin/bash
传统上我们可以编辑passwd文件来管理用户信息,这种方式常用来建立一个没有口令的用户(只需将口令区域设置为空),但是要使用下面的命令是passwd和shadow同步
$pwconv
修改/etc/passwd文件中一条记录使用户user1登陆时不需口令。
user1::502:502:user1:/home/staff/user1:/bin/bash
修改/etc/passwd文件中一条记录可以禁止用户user1登陆。
user1:[color="#ff0000"]*:502:502:user1:/home/staff/user1:/bin/bash
还有一种方法(shell区域)可以禁止用户user1登陆。
user1:[color="#ff0000"]x:502:502:user1:/home/staff/user1:[color="#ff0000"]/bin/false
或
user1:[color="#ff0000"]x:502:502:user1:/home/staff/user1:[color="#ff0000"]/bin/true
相对应对用户组管理的文件是
/etc/group
/etc/gshadow
2.用户和用户组的添加和删除
useradd [-u uid][-G group,...]
[-d home] [-s shell] [-c comment] [-m ]
[-f inactive] [-e expire ] [-p passwd] [-M] [-n] name
- 相关命令:Modify a user account
usermod [-u uid [-o]] [-G group,...]
[-d home [-m]] [-s shell] [-c comment] [-l new_name]
[-f inactive] [-e expire ] [-p passwd] [-L|-U] name
-L:用户帐号锁定
-U:用户帐号解锁
- 相关用户帐号管理工具:userconf
- 建立用户帐号的默认设置/etc/login.defs,相关目录和文件/etc/skel
- 刚刚建立的LINUX用户帐号无法登陆,必须用root身份执行passwd程序为用户设置口令。
passwd
userdel [-r]
系统帐号uid的特点。口令域的特点。nobody帐号。
前一章
目录
后一章
第四章 系统配置
4.1 系统启动流程
[color="#000000"]
4.2 网络配置
4.3 内核配置
4.4 使用硬盘
4.5 安装和编译应用程序
4.1 系统启动和关机
首先是要了解启动脚本(或者叫配置文件吧,unix系统的一切东西都是
可拆卸的,甚至包括内核)
系统启动流程:
系统启动完成如下工作:
.机器本身所进行的必要的有限的自检
[color="#ff0000"]若引导管理程序(boot loader)是linux loader(即lilo)
.该linux引导程序并显示 => lilo: 系统日志文件可以参考系统文档syslogd和配置文件
/etc/syslog.conf(系统日志记录在/var/log目录中)。
先来看看第一个配置文件 /etc/lilo.conf :
boot=/dev/hda
(服务器来说,都没有这一项)
这个文件是可以根据需要修改的,这是个最简单的lilo配置文件,
它有很多参数可加。修改后要运行 /sbin/lilo 才更新。
若引导管理程序(boot loader)是grub则文件/etc/grub.conf(实际是/boot/grub/grub.conf)
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,5)
# kernel /vmlinuz-version ro root=/dev/hda9
# initrd /initrd-version.img
#boot=/dev/hda [color="#ff0000"]启动磁盘
default=0
timeout=10
splashimage=(hd0,5)/grub/splash.xpm.gz
title Red Hat Linux (2.4.7-10)
root (hd0,5) [color="#ff0000"]文件系统的硬盘分区中的位置
kernel /vmlinuz-2.4.7-10 ro root=/dev/hda9内核文件/boot/vmlinuz-2.4.7-10
位于/dev/hda9分区
initrd /initrd-2.4.7-10.img [color="#ff0000"]关于这一行请看manual initrd
title win2000 server
rootnoverify (hd0,0)
chainloader +1
一、初始化过程
内核: /boot/vmlinuz-version, 位于/文件系统,kernel执行后运行init, init将会
创建一些正常操作所需要的子进程.这些操作包括设备主机名,检查相应的
磁盘并加载文件系统,启动系统日志,配置网络接口,启动网络和邮件服务,
清除临时分区。
.配置文件
linux使用一个非常灵活的init进程(process control initialization),init会直接建立在/etc/inittab中所
列出的任务, init通用运行级别如下:
0 shutdown
1(s) 系统管理方式,所有的文件可以继续访问,但只有超级用户可以从主
控台访问系统
2 系统进入正常多用户操作方式,没有共享。
3 多用户操作方式,但同时开启远程文件共享,启动一些额外的进程以
允许远程文件共享,加载远程资源,同时向网上公布其远程资源(如nfs)
4 用户自定义多用户环境
5 自定义多用户环境
6 关闭机器。
不同unix不完全相同
示列文件/etc/inittab
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3,
# if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault: [color="#003333"] #(默认级别)
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit [color="#003333"]# :空:没有级别定义,表示所有级别
[color="#003333"]# 所有级别都要执行这个脚本
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Things to run in every runlevel.
ud::once:/sbin/update [color="#006666"]# 执行一次updated守护进程
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting
Down"
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown
Cancelled"
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1 [color="#3333ff"]#(respawn: 没有process则启动它)
2:2345:respawn:/sbin/mingetty tty2 [color="#006666"]# 2345级别为多用户级别,
3:2345:respawn:/sbin/mingetty tty3 [color="#006666"] # [color="#006666"]可有6个虚拟终端
4:2345:respawn:/sbin/mingetty tty4 # mingetty:产生虚拟控制台
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
# xdm is now a separate service
# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
文件每一行格式如下:
id:runlevels:action:process
id: 最长4个字符,唯一标识一项
runlevel: 为空表示所有级别,默认运行级别通常为2或3
action: init所采取的动作。具体参数含义如下:
process: 指作一daemon,shell script或program.
这个进程可以执行其他二进制文件或shell script.
在上面的示例中,系统加电后默认的运行状态为3,不同的运行级别所要执行
的命令由shell script /etc/rc.d/rc控制,/etc/rc.d/rc根据参数(运行级
别数)的不同决定执行/etc/rc.d/rc$runlevel.d/S*, 而运行级别1-6时如果
没有到主控台的mingetty则启动mingetty tty?,而对于用户的热启动请求则
会生新启动机器(ctrlaltdel).
归纳:1.系统读入inittab后,执行/etc/rc.d/rc.sysinit,然后是
/etc/rc.d/rc 3 (/etc/rc.d/rc3.d/S* ),最后是启动虚拟屏幕。
2.rcN.d下的脚本的执行都是通过执行/etc/rc.d/rc
而这些脚本实际执行的是/etc/init.d/下的脚本
3./etc/rc.d/init.d/*实际存放所有初始化SHELL脚本
4./etc/rc.d/rc脚本是执行在运行级别0-6实际执行的脚本
5./etc/rc.d/rc.local #所有其它脚本运行之后执行该SHELL脚本
6./etc/rc.d/rc.sysinit脚本只在启动时执行一次
rc script(系统启动脚本程序).
SYSV: (Solaris)
/etc/init.d/*
/etc/rc$runlevel.d/S* 系统启动rc shell script, 执行顺序按文件名
数字从小到大,如先执行S10*, 再执行S12*.
/etc/rc$runlevel.d/K* 系统关机rc shell script,执行顺序与启动文件
相反,先执行数字大的。
Linux Redhat:
/etc/rc.d/init.d/* # 各个级别运行脚本的实际位置
/etc/rc.d/rc$runlevel.d/S* #启动这个级别时运行,实际对应于/etc/init.d/中的运行脚本(软链接)
/etc/rc.d/rc$runlevel.d/K* #退出这个级别时运行
二、管理init文件
init文件可以手工管理(当然要对运行的服务和脚本很了解),也可以
通过一些工具来管理。
1. chkconfig
# chkconfig --list #列出服务清单
# chkconfig [--level 级别 ] 服务名 on #开启服务
# chkconfig [--level 级别 ] 服务名 off #关闭服务
2.ntsysv
# ntsysv --level
三、关机
关机会依次杀掉所有的进程,同步buffer与disk中的内容,然后umuont所有
的文件系统,关机时最好看一下当前是否有用户在使用系统。可以使用
shutdown, init及halt(poweroff,reboot)关闭电源。最好不要使用halt关机,
因为这样有可能损坏文件系统。
推荐使用:
(1) shutdown [-akrhfnc] [-t secs] time [warning message]
-a: use /etc/shutdown.allow
-k: don't really shutdown, only warn.
-r: reboot after shutdown.
-h: halt after shutdown.
-f: do a 'fast' reboot (skip fsck).
-F: Force fsck on reboot.
-n: do not go through "init" but go down real fast.
-c: cancel a running shutdown.
-t secs: delay between warning and kill signal.
** the "time" argument is mandatory! (try "now") **
(2)init 0123456SsQqAaBbCcUu
(3)/sbin/halt [-n] [-w] [-d] [-f] [-i] [-p]
-n Don't sync before reboot or halt.
-w Don't actually reboot or halt but only write the
wtmp record (in the /var/log/wtmp file).
-d Don't write the wtmp record. The -n flag implies
-d.
-f Force halt or reboot, don't call shutdown(8).
-i Shut down all network interfaces just before halt
or reboot.
-p When halting the system, do a poweroff. This is the
default when halt is called as poweroff.
4.2 网络配置
一、配置网卡(以前是最头疼的事情)
首先要了解网卡芯片的型号,然后去查HOWTO(http://www.tldp.org/HOWTO/)(
Ethernet-HOWTO.html
) ,看看linux是不是支持,最后进行配置。
在/etc/下找到文件 conf.modules ,加入
[color="#0099cc"]alias eth0 网卡驱动程序名 (去掉.o)
一行。
网卡驱动程序名,都在/lib/modules/[color="#0099ff"]2.4.18-3/kernel/drivers/net/*.o下。(这些名字往往不是你的网卡的型号) 如:ne2000 ---->ne DLink--->via-rhine inter ---->eepro100
现在的版本对网卡的支持要好多了,大多情况下在安装时都能找到。
二、TCP/IP 的启动
每一块网卡系统会给它一个名字,第一块为eth0 ,第二块为eth1 ...,还有一个设备名叫lo ------look-back ,它总是存在的,代表本机(IP:127.0.0.1) .
装上网卡后下面就要分配IP、netmask和broadcast,可能用命令ifconfig 来完成。
# ifconfig 设备名 IP地址 [netmask 掩码 broadcast 广播地址]
ifconfig eth0 210.45.151.191 netmask 255.255.255.0
#ifconfig -a
相应的配置文件/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=linuxserver
GATEWAY=210.45.151.254
gatewaydev=eth0
相应的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
若IP地址是动态分配的即由网络上的DHCP服务器分配IP地址则此处为dynamic,并且以下两行省略
IPADDR=210.45.151.191
NETMASK=255.255.255.0
ONBOOT=yes
若给同一网卡配置多个IP地址
ifconfig eth0:0 210.45.151.195 netmask 255.255.255.0 broadcast 210.45.151.255
相应的配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0:0
若想使配置立即生效,可执行network脚本
#/etc/rc.d/init.d/network restart
若要停止某个网络接口工作,使用down参数
#ifconfig eth0 down
若永远停止,则相应的文件/etc/sysconfig/network-scripts/ifcfg-eth0中
ONBOOT=no
三、路由配置(网关配置)
配置了IP和掩码后,本子网内的机器就可以访问了,但要访问子网外的机器的话,还要配置路由。
# route [add/del] [-net/-host] [目标地址] [gw] 网关地址 [dev ]
[color="#006666"]route add -net 210.45.146.0 netmask 255.255.255.0 gw 210.45.144.253
[color="#006666"]注意:静态路由信息存放于配置文件/etc/sysconfig/static-routes
#more /etc/sysconfig/static-routes
any net 210.45.157.0 netmask 255.255.255.0 gw 210.45.151.254
……
[color="#006666"]注意:目标地址是一个网络,要加上netmask,若目标地址是主机,则不加netmask,此处默认的网络接口是eth0,选项[dev ]用于多网卡情况下。
[color="#006666"]route
Flags的含义
[color="#006666"]U (route is up)
H (target is a host)
G (use gateway)
R (reinstate route for dynamic routing)
D (dynamically installed by daemon or redirect)
M (modified from routing daemon or redirect)
! (reject route)
* 到目的网络是通过广播
[color="#330033"]or
# route [add/del] default gw
默认路由的配置存放在/etc/sysconfig/network
#more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME="linuxserver.mylinux.org"
GATEWAY=210.45.151.254
GATEWAYDEV="eth0"
#ping 210.45.146.254
经上面的配置后就基本上可以使用网络了,但DNS需要额外配置(以后介绍),如果已你有一台DNS服务器的话,只需要修改[color="#000000"]/etc/resolv.conf 和 /etc/host.conf 就可以使用DNS服务器了。
[color="#009999"]#resolv.conf DNS客户机配置文件,设置DNS服务器的IP地址及DNS域名
[color="#009999"]nameserver 210.45.151.191 #域名解析服务器,可有多个
nameserver 210.45.144.18
domain mylinux.org #本地domain name
search mylinux.org #默认的域名后缀,相当于WINDOWS系统的域后缀搜索顺序,可有多个
[color="#009999"]#host.conf 指定主机名查找方法,通常指先查找文件/etc/hosts,找不到时再向DNS服务器请求(不需修改)。
order hosts,bind
multi on #表示可绑定多个IP
[color="#009999"]hosts实际就是指/etc/hosts文件(windows系统下是/windows/hosts.sam)。
这是手工配置方法,当然你也可以通过工具来配置
netconf
四、inetd/xinetd 服务器(the extended Internet services daemon) inetd超级服务器监听多个TCP/IP端口等待入境的请求。当收到请求时,它
就会派生一个相应的服务器。通过使用超级服务器,其他服务就可以只在需
要时才派生,从而节省了系统资源。当连接终止时,派生的服务器也就停止
运行。
相关程序: /usr/sbin/inetd 或/usr/sbin/xinetd
相应服务:
telnet
ftp
pop3
r* rsh rpc rlogin (建议最好关闭r服务)
其他服务最好关掉
RedHat7.0 采用 xinetd 替代inetd
/etc/services ----是xinetd.conf相关文件
基本不用编辑,linux自带的已包含大部分服务, 在此文件中列出了所有可用的网络服务的名字、端口
号和协议。
#
# services This file describes the various services that are
# available from the TCP/IP subsystem. It should be
# consulted instead of using the numbers in the ARPA
# include files, or, worse, just guessing them.
#
# Version: @(#)/etc/services 2.00 04/30/93
#
# Author: Fred N. van Kempen,
#
# 文件格式:服务名称 端口号/协议 服务别名
tcpmux 1/tcp # rfc-1078
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
name 42/udp nameserver
whois 43/tcp nicname # usually to sri-nic
domain 53/tcp
domain 53/udp
mtp 57/tcp # deprecated
bootps 67/udp # bootp server
bootpc 68/udp # bootp client
tftp 69/udp
gopher 70/tcp # gopher server
rje 77/tcp
finger 79/tcp
http 80/tcp # www is used by some broken
www 80/tcp # progs, http is more correct
link 87/tcp ttylink
kerberos 88/udp kdc # Kerberos authentication--udp
kerberos 88/tcp kdc # Kerberos authentication--tcp
supdup 95/tcp # BSD supdupd(8)
hostnames 101/tcp hostname # usually to sri-nic
iso-tsap 102/tcp
x400 103/tcp # ISO Mail
x400-snd 104/tcp
csnet-ns 105/tcp
pop-2 109/tcp # PostOffice V.2
pop-3 110/tcp # PostOffice V.3
pop 110/tcp # PostOffice V.3
sunrpc 111/tcp
sunrpc 111/tcp portmapper # RPC 4.0 portmapper UDP
sunrpc 111/udp
sunrpc 111/udp portmapper # RPC 4.0 portmapper TCP
auth 113/tcp ident # User Verification
sftp 115/tcp
uucp-path 117/tcp
nntp 119/tcp usenet # Network News Transfer
ntp 123/tcp # Network Time Protocol
ntp 123/udp # Network Time Protocol
netbios-ns 137/tcp nbns
netbios-ns 137/udp nbns
netbios-dgm 138/tcp nbdgm
netbios-dgm 138/udp nbdgm
netbios-ssn 139/tcp nbssn
imap 143/tcp # imap network mail protocol
NeWS 144/tcp news # Window System
snmp 161/udp
snmp-trap 162/udp
exec 512/tcp # BSD rexecd(8)
biff 512/udp comsat
login 513/tcp # BSD rlogind(8)
who 513/udp whod # BSD rwhod(8)
shell 514/tcp cmd # BSD rshd(8)
syslog 514/udp # BSD syslogd(8)
printer 515/tcp spooler # BSD lpd(8)
talk 517/udp # BSD talkd(8)
ntalk 518/udp # SunOS talkd(8)
efs 520/tcp # for LucasFilm
route 520/udp router routed # 521/udp too
timed 525/udp timeserver
tempo 526/tcp newdate
courier 530/tcp rpc # experimental
conference 531/tcp chat
netnews 532/tcp readnews
netwall 533/udp # -for emergency broadcasts
uucp 540/tcp uucpd # BSD uucpd(8) UUCP service
klogin 543/tcp # Kerberos authenticated rlogin
kshell 544/tcp cmd # and remote shell
new-rwho 550/udp new-who # experimental
remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem
rmonitor 560/udp rmonitord # experimental
monitor 561/udp # experimental
pcserver 600/tcp # ECD Integrated PC board srvr
mount 635/udp # NFS Mount Service
pcnfs 640/udp # PC-NFS DOS Authentication
bwnfs 650/udp # BW-NFS DOS Authentication
kerberos-adm 749/tcp # Kerberos 5 admin/changepw
kerberos-adm 749/udp # Kerberos 5 admin/changepw
kerberos-sec 750/udp # Kerberos authentication--udp
kerberos-sec 750/tcp # Kerberos authentication--tcp
kerberos_master 751/udp # Kerberos authentication
kerberos_master 751/tcp # Kerberos authentication
krb5_prop 754/tcp # Kerberos slave propagation
listen 1025/tcp listener RFS remote_file_sharing
nterm 1026/tcp remote_login network_terminal
kpop 1109/tcp # Pop with Kerberos
ingreslock 1524/tcp
tnet 1600/tcp # transputer net daemon
cfinger 2003/tcp # GNU finger
nfs 2049/udp # NFS File Service
eklogin 2105/tcp # Kerberos encrypted rlogin
krb524 4444/tcp # Kerberos 5 to 4 ticket xlator
irc 6667/tcp # Internet Relay Chat
dos 7000/tcp msdos
# End of services.
linuxconf 98/tcp # added by linuxconf RPM
/etc/hosts.allow、 /etc/hosts.deny (Linux下,使用了tcpd
(Tcp Wrappers),参考inetd.conf)
Internet 网络服务访问控制文件
/etc/hosts.allow 设置允许使用inetd服务的机器,如:
[color="#009999"]All:202.118. 即允许所有来自202.118.x.x的请求
服务器程序 客户地址
如 in.telnetd .aust.edu.cn
in.ftpd .edu.cn
地址可以是如下形式:
.edu.cn
210.45.144.
210.45.144.0/255.255.255.0
/etc/hosts.deny 设置不允许使用inetd的机器
[color="#006666"]All:All
这两个文件的设定顺序请参考man文档:
man tcpd
man hosts.allow
man hosts.deny xinetd说明
xinetd是用来启动各种必须转换的服务程序,比如telnetd,ipop3d等等.
xinetd的行为依赖于/etc/xinetd.conf,下面是一个缺省的配置文件:
#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST RECORD
}
includedir /etc/xinetd.d
说明:
defaults段落用于设置各种缺省属性,instances是每个服务最多允许同时
启动多少个实例,log_type是对客户程序记录的方式,接下来的两行表示成
功或者失败的话系统中记录哪些信息.
includedir表示将目录中的所有文件包含在这个文件里面,这也是一般推
荐的方式,接下来可以看看/etc/xinetd.d里面的文件,一般每个文件代表
一个服务.
例如下面是pop3服务的设置,文件名字是ipop3:
# default: on
# description: The POP3 service allows remote users to access their mail
# using an POP3 client such as Netscape Communicator, mutt,
# or fetchmail.
service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += USERID
log_on_failure += USERID
}
去掉注释行,service行设置下面定义的服务,服务名字来自/etc/service,
socket_type,wait,user的意义都和inetd.conf的定义一样,server是服务
器程序的名字,接下来,为记录信息添加用户ID字段.
only_from允许某个IP范围的客户存取,例如only_from 202.112.0.0/16
no_access禁止某段IP的用户存取,语法相同.
五、相关的配置文件
网络配置文件
/etc/hosts
提供一种简便的主机名到IP的转换,TCP/IP只需使用IP地址。主机名的使用
是为了方便、易用。当使用主机名时,TCP/IP检查/etc/hosts文件的内容
(未设DNS时), 为相应主机查找其IP地址。
格式:
ip_address office_name alias ...
/etc/networks
提供IP地址与Internet网络名称的列表。每一行提供一个特定网络的信息。
主要目的是供route命令维护路由表。
/etc/protocols
提供已知的DARPA Internet协议列表,此文件不能修改,因为它给出的是
DDN 网络信息中心提供的信息。文件的每一行都包含协议名称,协议号和
协议别名。
[color="#ff0033"]建议: 在没有完全必要的情况下尽量关闭r*服务(/etc/inetd.conf), 尤其
是与 NFS一起使用时更要小心;
相关SHELL脚本:
/etc/sysconfig/network-scripts/ifup(实际是/sbin/ifup)
执行该脚本时,它去寻找/etc/sysconfig/network/network-scripts下面一切名为ifcfg-eth0,
ifcfg-eth1等文件,并切根据它们去启动网络。
/etc/rc.d/init.d/network脚本
它通过判断是否存在/etc/sysconfig/network配置文件来决定是否启动网络。而/etc/rc.d/init.d
/network又调用执行ifup脚本。
/etc/sysconfig/network-scripts/ifdown(实际是/sbin/ifdown)
4.3 内核配置
uname -a查看内核版本信息。
对系统管理员来说,由于linux内核版本更新较快,如果性能有重大改变或现使用版本有明显的bug时,就需要升级内核。升级内核通常是一件很麻烦的事情,主要在系统内核配置时很麻烦,你必须对你的服务器硬件和需要的服务了解得很情楚,否则升级往往会失败:(
-----1. 准 备 工 作
get linux-2.4.2.tar.gz
cd /usr/src/
进入到目录 /usr/src/
mv linux linux.oldversion
cp linux-2.4.2.tar.gz /usr/src/
将新的内核文件拷贝到刚才的目录
gzip -cd linux-2.4.2.tar.gz | tar xvf -
将内核文件解压缩,产生新目录/usr/src/linux
cd /usr/src/linux 进入目录 /usr/src/linux
make mrproper 清除任何将引起问题的附加额外的源代码.
以root 的 身 份 做 以 下 工 作:
cd /usr/src/linux 进入目录 /usr/src/linux
make config 开 始 配 置 你 的 内 核.
or
make menuconfig
or
make xconfig
---- 对硬件熟悉, 配置起来会容易些, 不明白的用缺省配置,
目的是满足自己的要求
---- 2. 创 建 内 核
---- 在 目 录 /usr/src/linux 下:
make dep 确保关键文件在正确的位置.(如果出错,要重新make config)
make clean 确保所有东西均保持最新状态.
make bzImage 编译内核
新内核bzImage产生在 /usr/src/linux/arch/i386/boot/目录下.
cp bzImage /boot/vmlinuz-2.4.2
将此文件拷贝到 /boot并改成带版本号文件名
make modules 如果配置内核时选了M,既模块
make modules_install 需要这两个步骤。
cp /usr/src/linux/System.map /boot
---- 3. 把新内核放入lilo
vi /etc/lilo.conf 用vi编辑/etc/lilo.conf
加入:
image=/boot/vmlinuz-2.4.2
label=linux-2.4.2
root=/dev/hda
保存退出.
lilo 执行lilo命令
---- 4.起用新内核
reboot 重新启动机器
出现lilo: 时 按Tab 键, 出现 linux_2.4.2 linux
----5. 建立新内核的引导软盘
mkbootdisk --device /dev/fd0 2.4.2
4.4 使用硬盘
----1.安装硬盘 (SCSI或IDE)
设置SCSI Adapter 或BIOS使linux内核能识别。
----2.分区和建立文件系统(格式化)-----fdisk
#fdisk /dev/sdb (/dev/hdb) ----->分为主分区或扩展分区
完成后重启系统。
mkfs -V -t 文件系统类型 -c 分区名
#mkfs -t ext2 -c /dev/hdb1 ---->建立linux文件系统
#mkfs -t ext2 -c /dev/hdb2
#vi /etc/fstab ---->加入新的分区,使系统启动时能自动挂接
#fstab fsck
/dev/hda1 / ext2 defaults 1 1
/dev/hda5 /home ext2 defaults,usrquota,grpquota 1 2
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/hda7 /usr ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
/dev/hda6 swap swap defaults 0 0
[color="#ff3333"]/dev/hdb1 /export ext2 defaults 1 2
#mount -a ----->挂上
4.5安装和编译应用程序
●RPM程序方式安装(*.rpm)
1、什么是RPM
Redhat Package Manager, 由Redhat公司开发的软件包和管理程序。
RPM设计目的:
. 方便的升级功能:可对单个软件包进行升级,保留用户原先的配置
. 强大的查询功能:可以针对整个软件包的数据或是某个特定的文件进行查询,也可以
轻松地查出某个文件是属于那个软件包或从那来的。
. 系统校验:不小心删除了某个重要文件,但不知道是那个软件包需要此文件时可以使
用RPM查询已经安装的软件包中少了那些文件,是否需要重新安装,并且可以检验出
安装的软件包是否已经被别人修改过。
. 允许用户能够使用“纯净”的源代码:让用户取得“未经处理过的源代码”,同时
再加上一份“补丁”程序,用户可以完成程序的编译工作。
2. RPM的使用
(1)用RPM安装软件包,最简单的命令如下:
rpm -ivh rpmfile.i386.rpm
可能出现如下几种错误信息:
Package Alrealy Installed! [软件包安装,也可使用--replcepkgs强制替换]
Conflicting files [可加--replacepkgs, 该软件包含其他软件包安装过
的文件]
Unresolved Dependency [可加 --nodeps,但不推荐使用]
(2)用RPM删除安装软件包
rpm -e foo [可通过rpm -qa |egrep foo查看是否安装了此软件包]
错误信息:
... is needed by .... [可加--nodeps,但不推荐使用]
(3)用RPM升级软件
rpm -Uvh foo-2.0-1.i386.rpm
会自动删除相应软件包的老版本,如果配置文件同新版本不兼容,则会自动将其保存为
另一个oldconfig.rpmsave文件.
(4)查询软件包
rpm -q foo
具体可使用如下特定参数
rpm -qa 查询系统安装的所有软件包
rpm -qf filename 查询包含该文件的软件包
rpm -qF 输入为标准输入,如 find /usr/bin |rpm -qF
rpm -qp 软件包名 查询该软件包
rpm -qP 同-p参数,但输入为标准输入
find /cdrom/Redhat/RPMS |rpm -qP
输出时的格式选择
-i 显示该软件包的名称、描述、发行、大小、编译日期、安装日期及开发人员等信息
-l 显示该软件包含的文件
-s 显示该软件包的当前状态(normal/missing)
-d 显示软件包中的文档(man,info,README)
-c 显示该软件包的配置文件,一般这些文件安装后需要用户手工修改
-v Verbose, 类似ls -l的输出
(5)用RPM校验软件包
可校验文件大小、MD5校验码、文件权限、类型及属主等信息。
rpm -V foo 检查校验该软件包中的文件是否存在
rpm -Vf /bin/vi 校验软件包中的单个文件
rpm -Va 校验安装的所有软件包
rpm -Vp foo-1.0.1.i386.rpm
比较一个源软件包和已经安装的软件包
(6)实用技巧
rpm -Va 可确认系统少了那些文件
rpm -qf /usr/bin/cdplay 查询该程序属于那个软件包
rpm -qpi koules-1.2.i386.rpm 查询该软件包的内容
rpm -qpl koules-1.2.i386.rpm 查询该软件包会在系统中安装那些文件
●编译源程序方式安装 (*.tar.gz)
一般都有下面一些步骤:
[color="#ff0000"]gzip
-d:将文件解压缩
-v:显示压缩比例
不带option对文件进行压缩
cd /home/xjfang/aaa
gzip f1 #将文件f1压缩成f1.gz
gzip -d f1.gz #将文件f1.gz解压缩,同时删除压缩文件
[color="#ff0000"]zip 〈被压缩文件或目录〉
[color="#ff0000"]cd /home/xjfang
zip exam html
[color="#ff0000"]unzip
解压缩*.zip文件(包括windows中的zip文件)
unzip exam.zip
[color="#ff0000"]compress #生成*.Z文件
[color="#ff0000"]uncompress
原*.Z文件被自动删除
[color="#ff0000"]tar
-z:归档时压缩和解归档时解压缩
-c:创建归档文件
-v:显示正在被归档的文件名
-x:解归档
-f :归档后形成的文件名
cd /home/xjfang
#tar cvf html.tar html #对html目录进行归档,但不压缩
#tar czvf html.tar html #对html目录进行归档,且压缩
tar xvf html.tar #对html.tar解归档
(或tar xvzf *.tar.gz ) #对html.tar解归档,解压缩
./configure
make
make install
●用patch 升级(打补丁) *.patch
patch -p0 注意是那两个版本之间的patch
前一章
目录
后一章
前一章
目录
后一章
第五章 局域网服务器
5.1 NFS
5.2 Samba
5.3 远程调用---r命令
DHCP(Dynamic Host Configure Protocol,动态主机配置协议)服务用于给子网内的主机动态分配IP地址、域名服务器和网关地址等信息。使用它的目的是两个,一个是节省IP地址,二是避免管理每台客户主机的IP地址、网关、域名设置、域名服务器地址等复杂的问题,而且可以避免手动分配IP地址所造成的IP地址冲突问题,因此可以简化安装配置网络客户机器。
DHCP服务是以广播的形式向请求的客户主机分配IP地址的,所以不能跨越网关/路由,除非你的网关/路由支持DHCP Relay(DHCP中继) 。
[color="#0000ff"]配置DHCP服务器
[color="#0000ff"]1.安装
[color="#0000ff"]rpm -ivh dhcp-2.0pl5-8.i386.rpm
[color="#0000ff"]2.配置文件
- [color="#0000ff"]/etc/dhcpd.conf
[color="#0000ff"]subnet 210.45.151.0 netmask 255.255.255.0 {
range 210.45.151.1 210.45.151.252;
option subnet-mask 255.255.255.0;
option broadcast-address 210.45.151.255;
option routers 210.45.151.254;
option domain-name-servers 210.45.151.191;
option domain-name "mylinux.org";
}- [color="#0000ff"]IP 租用数据库
[color="#0000ff"]/var/lib/dhcp/dhcpd.leases文件
- [color="#0000ff"]用ntsysv或chkconfig使DHCP服务运行在级别3
- [color="#0000ff"]DHCP服务所对应的可执行文件
[color="#0000ff"]/usr/sbin/dhcpd
- [color="#0000ff"]dhcpd命令行参数存放在/etc/sysconfig/dhcp中
[color="#0000ff"]# Command line options here
DHCPDARGS=-cf /etc/dhcpd.conf -lf /var/lib/dhcp/dhcpd.leases
[color="#ff0000"]
这一章主要介绍如何将Linux配置成为局域网服务器,如文件服务器或打印服务器。
NFS----主要用于unix系统之间的文件共享服务。
Samba-----Linux与其它文件系统之间的共享服务,如linux与Windows之间有linux与linux之间的相互访问,可以把linux服务器配置成为局域网中的文件服务器和打印服务器。
5.1 NFS服务
NFS是一种用来在Unix系统之间共享文件的一种服务协议,NFS是基于rpc机制的,所以portmap服务一定要打开。要使用NFS服务必需对服务器端和客户端的分别进行安装和设置。
在RedHat中安装:
NFS服务器:
#rpm -ivh nfs-server-version.i386.rpm
NFS客户软件:
#rpm -ivh nfs-client-version.i386.rpm
RedHat6.2 :
#rpm -ihv nfs-utils-0.1.6-2.i386.rpm
同时要在服务器端启动portmap、rpc.mountd、rpc.nfsd
# ps aux|grep portmap
[color="#009999"]bin 317 0.0 0.0 1208 304 ? S 00:07 0:00 portmap
root 6950 0.0 0.0 1152 272 pts/1 R 10:23 0:00 grep portmap
如果没有启动的话,要启动这个服务。
#ntsysv
rpc.nfsd 用于处理客户文件系统的请求.
rpc.mountd 但从一个NFS客户受到一个mount请求, 根据/etc/exports来决定是否提供服务。
该记录在umount时被删除.
●NFS服务器配置
/etc/exports ----->NFS的配置文件,设置服务器那些目录被共享输出。
/etc/exports的配置规则: 每一条都有下面的形式:
directory machine_name(option)
directory就是本地的一个目录.
machine_name描述那些及其有权利访问该目录.
option描述了提供了什么样的服务,或者说客户有什么样的权利.
machine_name的格式:
single host: 一个机器名或一个ip地址.
/tmp friday(ro)
/tmp 192.168.1.3(ro)
wildcard:使用了通配符,* 或 ?.
/tmp *.cs.foo.edu(ro)
IP 子网: 如: 192.168.1.0/255.255.255.0
=public: 所有机器都有权利.
option:
ro 只读
rw 读写
noaccess 无权
例如:
有四台机器:192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4
在192.168.1.1上:
/etc/exports包含下面一条:
/home/ftp/pub 192.168.1.0/255.255.255.0(ro)
在192.168.1.2上:
showmount -e 192.168.1.1
/home/ftp/pub ro
# mount 192.168.1.1:/home/ftp/pub /mnt
这样在192.168.1.2上就可以自由的访问192.168.1.1的
/home/ftp/pub下的文件,仿佛它们就存在/mnt下.
●NFS客户端配置
在客户机上可能用showmount -e nfs服务器名检查。
mount -t nfs NFS服务器输出目录 挂接点
要启动机器时自动挂接可以在/etc/fstab 中加入语句:
NFS服务器输出目录 挂接点 nfs
如
210.45.144.100:/tmp /tmp nfs
这样,客户机的/tmp目录就挂到210.45.144.100:/tmp目录,对210.45.144.100的tmp目录的操作就象在本地机器一样。
5.2 Samba服务器
Samba 实际上是一组程序, 它们SMB (Server Messages Block)协议。
SMB是一套通讯协议,让运行 OS/2,Windows NT,Windows 95,
Windows for Workgroups的计算机实现文件共享和打印机共享服务。
这套协议类似于NFS (网络文件系统),在运行 Samba 服务器程序的时候,
你的 Linux 机器在"网络邻居"中看起来如同一台 Windows 机器。
Windows 机器的用户可以"登录"到你的Linux服务器上, 当然这要求你
给予适当的权限。
5.2.1 配置文件:
文件 来源
/etc/smb.conf samba-2.0.6-9.i386.rpm ->
/usr/doc/samba-2.0.6/example/smb.conf.default
/etc/smbusers samba-2.0.6-9
/etc/smbpasswd 系统自带,使用smbpasswd更改
5.2.2 相关工具:
文件 来源
/etc/rc.d/init.d/smb samba-2.0.6-9.i386.rpm
/usr/bin/smbadduser samba-2.0.6-9.i386.rpm
/usr/smbpasswd samba-2.0.6-9.i386.rpm
5.3 配置方案
1./etc/smb.conf
作用:这是Samba的主配置文件,集中了所有的Samba配置选项。
实例:
[global]
netbios name = smb_server
#指定本机在网上邻居中的显示名
workgroup = smbusers
#指定本机所属的工作组
hosts allow = 192.168.1. 192.168.2. 127.
#允许访问本机共享
printcap name = /etc/printcap
load printers = yes
printing = bsd
guest account = nobody
log file = /var/log/samba/log.%m
max log size = 50
security = user
encrypt passwords = yes
smb passwd file = /etc/smbpasswd
#指定定对用户口令校验的密码文件
#安全级别为用户级,这样定义是为了让每个98的客户端能自由使用
它们在Linux服务器上的主目录。
socket options = TCP_NODELAY
dns proxy = no
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = yes
writable = no
printable = yes
[public]
comment = Public Stuff
path = /home/Share
browseable = yes
guest ok = yes
public = yes
writable = yes
#定义了共享目录,所有的用户对这个目录都有读写权限
[ thj ]
comment = Fred's Printer
valid users = thj
path = /homes/thj
printer = thj_printer
public = no
writable = no
printable = yes
#以上是定义打印机
2.管理员执行smbadduser tanghj:smithj来创建一个smb用户,
相应地更改了/etc/smbpasswd 和 /etc/smbusers
3. 管理员需要执行 chmod 0777 /home/Share,修改/home/Share访问权限。
5.4 测试及管理方法
1.管理员可以通过执行/etc/rc.d/init.d/smb restart
使更改的配置文件生效。
2.testparm 命令,解析和描述你的 smb.conf 文件的内容,提供了一
个简易的方法发现配置上的错误。
5.5 windows客户机和linux Samba服务器间互访
windows 通过网络邻居和映射驱动器来访问Samba 服务器上的目录.
#smbclient //window机器名/共享的目录
#smbclient //shg/tmp -U gmwu
root@linux gmwu]# smbclient //shg/tmp
added interface ip=210.45.144.110 bcast=210.45.144.255 nmask=255.255.255.0
Password:
Domain=[HNITNET] OS=[Unix] Server=[Samba 2.0.7]
smb: > ls
. D 0 Fri Mar 16 04:02:00 2001
.. D 0 Fri Mar 9 15:42:51 2001
.font-unix DH 0 Thu Mar 1 13:59:35 2001
.X11-unix DH 0 Fri Mar 2 11:34:00 2001
.ICE-unix DH 0 Sat Feb 24 20:29:29 2001
Hello.java 147 Thu Mar 15 23:00:41 2001
HelloWorld.java 147 Thu Mar 15 23:01:22 2001
smb: > ?
ls dir du lcd cd
pwd get mget put mput
rename more mask del open
rm mkdir md rmdir rd
prompt recurse translate lowercase print
printmode queue cancel quit q
exit newer archive tar blocksize
tarmode setmode help ? history
!
[root@linux gmwu]# smbclient -L pii3501
added interface ip=210.45.144.110 bcast=210.45.144.255 nmask=255.255.255.0
Password:
Sharename Type Comment
--------- ---- -------
E Disk
D Disk
IPC$ IPC 远程进程间通信
Server Comment
--------- -------
Workgroup Master
--------- -------
[root@linux gmwu]# smbclient //pii3501/e
非验证时,Windows要修改注删表
(HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP)
EnablePlainTextPassword 0x00000001(1)
5.3 远程调用---r命令
r命令是一些常用的远程调用命令,主要包括rch,rsh,rlogin和rexec.
[color="#ff3333"]Client --------------------->[color="#3333ff"]Server
(shg ) rsh,rcp,rlogin,rexec (linux)
user
要使用这些命令,需要两个基本条件:
1、远程机器(Server)要打开相应的服务:/etc/inetd.conf
.....................
shell stream tcp nowait root /usr/sbin/tcpd in.rshd
login stream tcp nowait root /usr/sbin/tcpd in.rlogind
exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
................
RedHat7.0 以上,设置/etc/xinetd.d/下 rexec rlogin rsh
disable = no
同时/etc/services相应的端口要打开:
exec 512/tcp
login 513/tcp
shell 514/tcp cmd
2、远程机程对客户机器的信任,有两种方式(远程机器上设定):
全局的信任文件:/etc/hosts.equiv
client.foo.net user1
它定义客户机器的user1帐号与远程机器上的user1等价,即客户机上的user1用户可以用r命令访问。
对某个用户的信任文件:$HOME/.rhosts
它除了可以象hosts.equiv一样定义两台机器上的相同用户名等价外,还可以定义客户机器上的不同用户名与这个用户等价。
##exam1
client.foo.net user1
-------------------
##exam2
server.foo.net user1
client.foo.net user2
rch、rsh、rlogin 可以不用口令访问远程系统,rexec需要口令在远程机器上执行命令,具体:
rch: 在远程机器上执行一条命令。
[[color="#006666"]gmwu@shg /tmp]$ rsh linux ls /tmp -la (相同帐号)
[color="#006666"][gmwu@shg /tmp]$ rsh -l fly linux ls -la (不同帐号)
rlogin:相当于telnet,对信任用户不需口令
[[color="#006666"]gmwu@shg /tmp]$ rlogin linux (相同帐号)
[color="#006666"][gmwu@shg /tmp]$ rlogin -l fly linux(不同帐号)
rcp: 机器之间复制文件
[color="#006666"][gmwu@shg /tmp]$ rcp linux:/tmp/test .
[color="#006666"][gmwu@shg /tmp]$ rcp Hello* linux:/tmp
rexec: 在远程机器上执行命令,需要口令
注:r命令存在不安全因素,一般不使用。
前一章
目录
后一章
前一章
目录
后一章
第六章 Internet服务器安装与配置
[color="#ff0000"]●
DNS
[color="#ff0000"]●
FTP
[color="#ff0000"]●
WWW
6.1域名系统(DNS)
网络中的计算机的标识有两种情况:IP地址和名字。DNS的作用就是对它们两者进行相互间翻译.
6.1.1 基本概念
什么是DNS?
DNS是Domain Name System的缩写,它实际上是一个包含主机信息的分布式数据库,将整个网络按照组织结构或管理范围划分成一个层次结构。本地负责控制这个数据库中本地的部分信息。所有信息在网络中通过客户和服务器模式可以任意存取。
DNS由名字服务器和解析器组成:
名字服务器(Name Server)其实是一个安装在计算机中的程序,其中包含了数据库中本地部分的信息,接受解析器的访问。
解析器(Resolvers)是那些创建查询并通过网络将查询发送给名字服务器的库例程,接受服务器的查询结果。
域名空间(Domain Name Space): 由所有名字一起组成的树状结构的空间称为域名空间。INTERNET域名空间:目前存在的使用广泛的INTERNET上的域名空间。这里有一些约定俗成的要求。
下面这个例子说明当所查询的主机不在本地区域中,Internet中的DNS系统是如何工作的。
假如中央电视台区域的一台主机host1.cctv.com想知道另一个域名为star.aust.edu.cn的主机的IP地址。于是向本地域名服务器ns1.cctv.com查询。由于查询不到,就向顶级域名服务器a.gtld-servers.net查询,也查询不到,但它知道世界上一些根域名服务器(例如A.root-servers.net,其IP为198.41.0.4),于是就向根域名服务器查询。根域名服务器知道star.aust.edu.cn看起来在区域cn中,而cn域名应该由域名服务器ns.cnc.ac.cn负责,其IP为159.226.1.1。ns.cnc.ac.cn知道edu.cn域名应由域名服务器dns.edu.cn负责,其IP为202.112.0.35。dns.edu.cn知道aust.edu.cn域名应由域名服务器shg.aust.edu.cn负责。Shg.aust.edu.cn在查询时,由于其DNS服务器数据库中有一条关于域名主机star.aust.edu.cn的记录,于是得到star.aust.edu.cn的IP地址为210.45.144.19的结果。查询过程见下图中步骤1~6。之后按图中的7~12将回答报文传给本地域名服务器ns1.cctv.com并存入其高速缓存中(存放很多最近得到的域名和IP地址的映射),从而主机host1.cctv.com就知道了star.aust.edu.cn的IP地址为210.45.144.19。整个过程要使用12个UDP报文。这种查询方法叫递归查询。
解析:
重复解析:解析器每次请求一个服务器,如果不行再请求别的服务器,由本次请求的服务器返回下次请求的服务器地址。
递归解析:要求名字服务器系统一次完成从名字到地址的转换。
反向解析:要求名字服务器给出从地址到名字的转换。
6.1.2 bind8服务器配置
在UNIX中常用bind (Berkeley Internet Name Domain)来实现,它是DNS实现中最流行的一个域名系统,BIND的客户端为解析器,用来产生用于发往服务器的关于域名信息的查询。BIND的服务器端是一称为 named的守护进程(daemon).
named有两个规范 bind4 和bind8 ,现在大多linux中都用bind8,它们的区别在启动文件不同(named.boot/named.conf).
配置named一共需要配置五文件(bind8):
/etc/named.conf 启动文件 设置通用named参数给出由该服务器所的域数据库信息的源。 /var/named/named.ca缓存文件 指向根域服务器/var/named/named.local 自反文件 用于本地解析自反地 址/var/named/named.hosts正规域区文件 映射主机名IP地址的区文件/var/named/named.rev 反向域区文件 映射IP地址到主名的反向域的区文件
示例:named.conf
options {
directory "/var/named";
};
zone "." {
type hint; ;;线索
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "aust.edu.cn" {
type master;
file "named.hosts";
};
zone "144.45.210.in-addr.arpa" {
type master;
file "named.rev";
};
区文件的是名字服务器的数据库文件,其中包括named.hosts文件、named.rev文件、named.local文件和named.ca文件。 基本格式是使用同一类型的记录-----标准资源记录来定义域数据库信息。
SOA : 标记区数据的开始,定义影响整个区的参数。(Start Of Area)
NS : 标明域的名字服务器。(Name Server)
A : 转换主机名到IP地址。(Address)
PTR : 转换IP地址到主机名
MX : 标明发往给定域名的邮件应传送到的位置。(Mail eXchange)
[color="#000000"]CNAME : 定义主机名别名。(Canonical Name)
HINFO : 描述主机硬件和操作系统信息。
WKS : 通告网络服务。
named.ca: 安装时生成,不需要配置.
named.local :自反文件
@ IN SOA shg.aust.edu.cn. root.aust.edu.cn. (
305 ;序列号
10800 ;备份时间
1800 ;备份重试时间
3600000 ;备份服务器的有效期
86400 ) ;ZONE中记录的最小生存期
IN NS shg.aust.edu.cn.
1 IN PTR localhost.
说明:原始服务器是shg.aust.edu.cn.
有关本区问题的联系地址是root@aust.edu.cn
named.hosts:(负责[color="#000000"]zone "aust.edu.cn")
@ IN SOA shg.aust.edu.cn. root.shg.aust.edu.cn. (
20010328 ; serial
86400 ; refresh
1800 ; retry
2592000 ; expire
86400 ; default_ttl
)
;NS
IN NS shg.aust.edu.cn.
;MX
IN MX 0 bgs.aust.edu.cn.
;
shg IN A 210.45.144.18[color="#000000"];;解释为shg.aust.edu.cn=210.45.144.18
hh IN A 210.45.144.19
home IN A 210.45.144.17
bgs IN A 210.45.144.16
proxy IN CNAME bgs.aust.edu.cn.
mail IN CNAME bgs.aust.edu.cn.
music IN CNAME linux.aust.edu.cn.
[color="#000000"]named.rev: (负责zone "144.45.210.in-addr.arpa")
@ IN SOA shg.aust.edu.cn. root.shg.aust.edu.cn. (
2001032801 ; serial
86400 ; refresh
300 ; retry
2592000 ; expire
86400 ; default_ttl
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/5338/showart_42643.html |
|