Linux 组网入门(转)[@more@]WEB 服务器

现在在Internet上最热门的服务之一就是WWW(World Wide Web)服务。如果你想通过主页向世界介绍自己或自己的公司,就必须将主页放在一个WEB服务器上,当然你可以使用一些免费的主页空间来发布。但是如果你有条件,你可以注册一个域名,申请一个IP地址,然后让你的ISP将这个IP地址解析到你的LINUX主机上。然后,在LINUX主机上架设一个WEB服务器。你就可以将主页存放在这个自己的WEB服务器上,通过它把自己的主页向外发布。

4.1 选择和安装WEB服务器软件
目前,在世界各地有许多公司和学术团体,根据不同的计算机系统,开发出不同的服务器,如Apache、CERN、Microsoft Internet Information System、NCSA、WebSite等。它们各有所长。而在许多LINUX的发行版本中,已经集成了一个免费的、使用广泛的、技术成熟的WEB服务器软件Apache。
笔者经过实际的试用,发觉Apache与LINUX的配合还是十分理想的,所以在此笔者就具体地介绍一下Apache在Red Hat Linux 6.0下的配置与实现。
如果我们在安装LINUX的选择启动进程中选中httpd选项。这样Apache就会将自动完成安装,并且能够满足日常的应用需要,我们只需要进行一些更具体的设置工作就行了。

4.2 Apache的组成
在Red Hat Linux 6.0中,Apache将自己的所有配置文件和日志文件放在了“/etc/httpd”目录下,其中“/etc/httpd/conf”下为配置文件,“/etc/httpd/log”下为日志文件。
同时,它将建立“/home/httpd”目录,并在其下建立三个子目录:“html/”:在这个目录下存放HTML(主页)文件;“cgi-bin/”:在这个目录下可以存放一些CGI程序;“icons/”:在这个目录下是服务器自带的一些图标。

4.3 Apache的设置
Apache服务器软件的配置文件主要有:“access.conf”:用于设置系统中的存取方式和环境;“httpd.conf”:用于设置服务器启动的基本环境;“srm.conf”:主要用于做文件资源上的设定;“mime.type”:记录Apache服务器所能识别的MIME格式。
在具体讲解之前,我们必须告诉大家,LINUX系统已经在安装时就采用了一系列的缺省值,而大家可以根据下面的讲解来理解这些设置的意义,然后根据自己的实际情况做一些细微的调整,以更加适合于你的具体应用。
4.3.1 access.conf的配置
当我们使用“vi”来打开它的时候,我们会发现,就象LINUX一样,内容十分繁多,看得人头晕眼花的。请大家一定要明确,凡是最前面是以“#”号开头的,表示这一行是注释语句,是帮助大家理解文件内容的,而不是配置文件本身。在下面的讲解中,我们也将把这些注释语句略去不说。
该文件的第一段非注释部分如下:

Option Indexes Includes ExecCGI FollowSymLink
AllowOverride None
Order allow , deny
allow from all
大家应该注意到,这一个部分是以开始,以结束的。这表示在其中间的部分都是针对指定目录——“/home/httpd/html”而言的。
1.Option命令有很多的参数,各个参数的意义如下所示:
All:准许以下所有功能(MultiViews除外);
MultiViews:准许内容协商的Multiviews;
Indexes:若该目录下无index文件,则准许显示该目录下的文件以供选择;
IncludesNOEXEC:准许SSI(Server-side Includes),但不可使用#exec和#include功能;
Includes:准许SSI;
FollowSymLinks:准许符号链接到其他目录;
ExecCGI:准许该目录下可以使用CGI。
2.而AllowOverride命令则是用来决定是否准许在“access.conf”文件中设定的权限是否可以被在文件“.htaccess”中设定的权限覆盖。它有两个参数:
All 准许覆盖;None 不准许覆盖。
3.Order命令:用来设定谁能从这个服务器取得控制。它也有两个参数:
allow 可以取得控制;deny 禁止取得控制。
现在我们一起来看看关于目录“/home/httpd/html”的设置的含义:它使得这个目录,如果不存在index.htm文件时,列出目录信息以供选择,准许SSI,允许执行CGI程序,开启了动态连接。它不允许再使用在文件“.htaccess”中设定来覆盖这里所设置的权限。使所有的人都可以取得控制。
该文件的第二段非注释部分如下:

Option ExecCGI
AllowOverride None

这个表示目录“/home/httpd/cgi”的设置为,当前目录下可以执行CGI程序。不允许再使用在文件“.htaccess”中设定来覆盖这里所设置的权限。
需要说明的是,不同的LINUX系统中,可以在这个文件中看到的信息不完全相同,但是根据这里给出的信息,大家可以参照命令的解释自行理解文件中的设置,以及根据自己的需要进行相应的修改。

4.3.2 httpd.conf的配置
这个文件中有许多设定命令,用来设置服务器的运行环境。以下是一些常用的部分:
1. ServerType命令,用来设定服务器的启动方式。它的命令格式如下:
命令格式: ServerType [standalone/inted]
standalone参数表示WEB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如果有就生成一个子进程来为其服务。
inetd参数表示WEB服务不是以一个单独的守候进程的形式支持。而是由Inetd这个超级服务器守候进程进行代劳,当它收到一个客户端的WEB服务请求的时候,再启动一个WEB服务进程为其服务。
在此建议使用standalone参数。
2. Port命令,为服务器的服务指定端口号(套接字)。一般来说,WEB服务使用知名端口号——80,如果你设定了别的端口号,别人再使用你的WEB服务时,就必须输入“http://xxx.xxx.xxx:端口号”,这样是不方便的。所以,建议这里设置为Port 80。
命令格式: Port 端口号例:Port 80
3. Server Admin命令,用来设置WEB管理员的E-Mail地址。这个地址会出现在系统连接出错的时候,以便访问者能够将情况及时地告知WEB管理员。
命令格式: Server Admin [you E-Mail address]
例:Server Admin admin@xxx.com
4. BindAddress命令,用来设定要从哪个地址来接受服务。
命令格式: BindAddress [*/IP/FQDN]
例:BindAddress IP 表示只接受输入IP地址的访问者
BindAddress FQDN 表示只接受输入域名地址的访问者
BindAddress * 表示接受以上两种方式的访问者
5. ErrorLog命令,用来指定错误记录文件名称和路径。
命令格式: ErrorLog [log filename]例:ErrorLog /var/httpd/error.log
6. CacheNegotiatedDocs命令,让代理服务器将数据留在缓存中。在很多情况下,默认为不让代理服务器将数据留在缓存中的,所以这条设定命令是被注释掉的。
7. Timeout命令,只要客户端超过这里设定的秒数还没有完成一个请求的话,服务端将终止这次请求服务。如果网络速度较慢的话,建议在此设置较大的数值。以给客户端更多机会。
命令格式: Timeout [second]例:Timeout 120
8. KeepAlive命令,设置是否开启连续请求的功能。
命令格式: KeepAlive [on/off]
9. MinSpareServer命令,用于设置WEB服务进程的最小空闲个数。当WEB服务进程空闲个数小于此设置时,系统将会自动打开更多的服务进程以使得空闲的WEB服务进程的最小空闲个数。
命令格式: MinSpareServer [number]例:MinSpareServer 5
要注意的是,这个数字太大的话,则空闲的进程在浪费系统资源,大大减少了整个系统的资源。如果太小,则有可能造成频繁的连接使得系统应接不瑕。设置的原则是,如果这个服务器是专用的WEB服务器,则将这个值尽量地设大,否则就设置得够用就可以。
10. MaxSpareServer命令,这个命令则是设置WEB服务进程的最大空闲个数。
命令格式: MaxSpareServer [number]例:MaxSpareServer 10
这个命令与前一个相配合,可以使得WEB服务进程在内存中所占资源最合理。
11.StartServers命令,用来设置刚开启WEB服务器时生成几个服务进程。
命令格式: StartServers [number]例:StartServers 5
12.MaxClients命令,用来设置接受客户端请求的最大数目,以使得维护系统稳定性,避免系统负载过大。
命令格式: MaxClients [number]例:MaxClients 150

4.3.3 srm.conf的配置
这个文件主要用来指定主页文档的位置。下面介绍三个最常用的命令。
1. DocumentRoot命令,用来指定主文档的地址。
命令格式: DocumentRoot [Path]例:DocumentRoot /home/httpd/html
2. UserDir命令,用来指定个人主页的位置。如果你有一个用户test,那么它主目录是“/home/test”,当客户端输入 http://yourdomain/~test”,系统就会到对应的目录“/home/test/UserDir/”中去寻找。其中“UserDir”就是在UserDir命令中设置的指定目录。
命令格式: UserDir [Path]例: UserDir Public_html
3. DirectoryIndex命令,用来声明首页文件名称。一般地,我们使用“index.html”或“index.htm”作为首页的文件名。如果这样设置后,那么客户端发出WEB服务请求时,将首先调入的主页是在指定目录下文件“index.html”或“index.htm”。
命令格式: DirecotryIndex [filename]例:DirecotryIndex index.html

4.3.4 使新的配置生效
在上面,我们可能已经根据新的需求更改了相应的配置选项,如果我们要使得这个新的配置立即生效。我们就必须重新启动WEB服务进程。
在LINUX中,我们可以十分方便地使用命令行来使得WEB服务进程重启。
/etc/rc.d/init.d/httpd restart

4.4 为用户开辟个人主页空间
如果我们利用了LINUX系统架设了一台WEB服务器,我们不仅可以存放公司的主页,而且还可以为公司的每一个员工提供一块个人主页的空间。
1. 首先,为需要个人主页空间的员工在LINUX上开设一个帐号。这样,它就拥有了一个用户主目录“/home/用户帐号名”。
addusr 用户帐号名passwd 用户帐号名
2. 在用户主目录下建立一个目录“public_html”,然后为其设置相应的权限。
cd ~用户帐号名mkdir public_htmlchmod 755 public_html
3. 确认在srm.conf文件中的UserDir命令设置的是public_html目录。
4. 让员工将自己的个人主页上传到自己用户主目录下的public_html目录中。
5. 现在就可以使用 http://www.company.com/~用户帐号名”来访问员工的个人主页了。

4.5 用Apache实现虚拟主机服务

4.5.1 什么是虚拟主机服务
所谓的虚拟主机服务就是指将一台机器虚拟成多台WEB服务器。举个例子来说,一家公司想从事提供主机代管服务,它为其它企业提供WEB服务。那么它肯定不是为每一家企业都各准备一台物理上的服务器,而是用一台功能较强大的大型服务器,然后用虚拟主机的形式,提供多个企业的WEB服务,虽然所有的WEB服务就是这台服务器提供的,但是让访问者看起来却是在不同的服务器上获得WEB服务一样。
具体地说,就是,我们可以利用虚拟主机服务将两个不同公司 www.company1.com与 www.company2.com的主页内容都存放在同一台主机上。而访问者只需输入公司的域名就可以访问到它想得到的主页内容。
用Apache设置虚拟主机服务通常可以采用两种方案:基于IP地址的虚拟主机和基于名字的虚拟主机,下面我们分别介绍一下它们的实现方法。以便大家在具体的应用中能够选择最合适的实现方法。

4.5.2 设置实现基于IP地址的虚拟主机服务
1. 实现前提
这种方式需要在机器上设置IP别名,也就是在一台机器的网卡上绑定多个IP地址去为多个虚拟主机服务。而且要使用这项功能还要确定在你的LINUX内核中必须支持IP别名的设置,否则你还必须重新编译内核。
下面举一个拥有两个虚拟主机的服务设置,以供参考。
2.配置步骤
假设,我们用来实现虚拟主机服务的机器,首先已经为自己提供了WEB服务,现在将为新的一家公司 www.company1.com提供虚拟主机服务。
1) 规划IP地址:为虚拟主机申请新的IP地址。(假设本机IP地址为202.101.2.1)
www.company1.com 202.101.2.2
2) 让ISP作好相应的域名解析工作。
3) 为网卡设置IP别名:
/sbin/ifconfig eth0:0 202.101.2.2 netmask 255.255.255.0
4) 重新设置“/etc/httpd/conf/httpd.conf”,在文件中加入:

ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/www.company1.com
ServerName www.company1.com
ErrorLog /var/log/httpd/www.company1.com/error.log

5)建立相应的目录。
mkdir /home/httpd/www.company1.com
mkdir /var/log/httpd/www.company1.com/error.log
6)将相应的主页内容存放在相应的目录中即可。
3.不利因素
这种虚拟主机的实现方法有一个严重的不足,那就是,每增加一个虚拟主机,就必须增加一个IP地址。而由于IP地址空间已经十分紧张,所以通常情况下是无法取得这么多的IP地址的。而且从某种意义上说,这也是一种IP地址浪费。

4.5.3 设置实现基于名字的虚拟主机服务
而基于名字的虚拟主机服务,是比较适合使用的一种方案。因为它不需要更多的IP地址,而且配置简单,无须什么特殊的软硬件支持。现代的浏览器大都支持这种虚拟主机的实现方法。当然,这也就是指一些早期的客户端浏览器也许不支持这种虚拟主机的实现方法。
正是以上原因,我们没有理由不使用基于名字的虚拟主机服务而使用基于IP地址的虚拟主机服务。
配置基于名字的虚拟主机服务需要修改配置文件:
“/etc/httpd/conf/httpd.conf”,在这个配置文件中增加以下内容。
NameVirtualHost 202.101.2.1

ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/www.company1.com
ServerName www.company1.com
ErrorLog /var/log/httpd/www.company1.com/error.log

ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/www.company2.com
ServerName www.company2.com
ErrorLog /var/log/httpd/www.company2.com/error.log

也就是在基于IP地址的配置基础上增加一句:NameVirtualHost 202.101.2.1而已。在本例中,为了体现只需要增加一次,所以特别地设置了两个虚拟主机服务。
最后也是建立相应的目录,将主页内容放到相应的目录中去就可以了。
------------------------------------
FTP 服务器

在众多的网络应用中,FTP(File Transfer Protocol)有着非常重要的地位。在Internet中一个十分重要的资源就是软件资源。而各种各样的软件资源大多数都是放在FTP服务器中的。可以说,FTP与WEB服务几乎占据了整个Internet应用的80%以上。
FTP服务可以根据服务对象的不同分为两类:一类是系统FTP服务器,它只允许系统上的合法用户使用;另一类是匿名FTP服务器,Anonymous FTP Server,它使用任何人都可以登录到FTP服务器上去获取文件。

5.1 选择和安装FTP服务器软件
如果你在安装LINUX系统的时候,在选择启动进程的时候选择了“ftpd”这一项的话,安装完LINUX系统后,它已经将一个默认的FTP服务器安装到系统中去了。我们已经可以利用它来实现系统FTP服务器的功能了。我们只需在此基础上根据我们的需要进行一些个性化设定就可以了。
在绝大多数的LINUX发行版本中都选用的是Washington University FTP,它是一个著名的FTP服务器软件,一般简称为wu-ftp。它功能强大,能够很好地运行于众多的UNIX操作系统,例如:IBM AIX、FreeBSD、HP-UX、NeXTstep、Dynix、SunOS、Solaris等。所以Internet上的FTP服务器,一大半以上采用了它。
wu-ftp拥有许多强大的功能,很适于吞吐量较大的FTP服务器的管理要求:
1) 可以在用户下载文件的同时对文件做自动的压缩或解压缩操作;
2) 可以对不同网络上的机器做不同的存取限制;
3) 可以记录文件上载和下载时间;
4) 可以显示传输时的相关信息,方便用户及时了解目前的传输动态;
5) 可以设置最大连接数,提高了效率,有效地控制了负载。

5.2 wu-ftp的组成
安装了wu-ftp后,你将在/bin目录下看到以下五个可执行文件:
ftpd FTP服务器程序
ftpshut 用于关闭FTP服务器程序
ftpcount 显示目前在线人数
ftpwho 查看目前FTP服务器的连接情况
ckconfig 检查FTP服务器的设置是否正确
除了这些可执行文件以外,它还在/etc和/var目录下生成了七个配置文件:
/etc/ftpusers
/etc/ftpaccess
/var/run/ftp.pids
/etc/ftpconversions
/var/log/xferlog
/etc/ftpgroups
/etc/ftphosts
系统安装了wu-ftp后,会建立一个特殊的用户ftp,并在/home目录下建立了一个ftpd目录,当用户以匿名登录上来时,将会自动定位于这个目录下。在这个目录下一般会建立几个子目录。
/home/ftpd/bin:存放一些供FTP用户使用的可执行文件
/home/ftpd/etc:存放一些供FTP用户使用的配置文件
/home/ftpd/pub:存放供下载的信息
/home/ftpd/incoming:存放供上载信息的空间

5.3 wu-ftp的配置
5.3.1 查看、修改/etc/inetd.conf文件
/etc/inetd.conf文件是LINUX系统的超级服务器inetd的配置文件。它负责监听多个TCP/IP端口。当它收到请求,就根据配置文件派生一个相应的服务器。通过使用超级服务器,其他服务就可以只在需要时才派生,从而大大节省了系统资源。
而wu-ftp就是利用超极服务器inetd来监听请求的。当超级服务器inetd收到了客户端的FTP请求时,就根据配置文件打开一个FTP服务进程。所以我们如果要使用wu-ftp,就必须确认在超级服务器inetd的配置文件inetd.conf中有这样一句:
ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd
以便当超级服务器收到FTP请求的时候,能够派生一个wu-ftp的FTP服务进程。(注:要确认是否有这样一行时,可以使用文件内容查找命令来确认:
cat /etc/inetd.conf | grep ftp 如果没有,则用手工加入或手工修改。

5.3.2 wu-ftpd的命令选项
wu-ftpd就是wu-ftp的服务进程。它可以不带参数执行,也可以带参数执行。下面简单介绍一下wu-ftpd的执行参数。
-d 当FTP服务器发生错误时,将错误入系统的syslog中;
-l 将每次FTP客户端进行连接的入系统的syslog中;
-t 设置FTP客户端连接几分钟无操作就切断连接;
-a 使wu-ftp使用/etc/ftpaccess的设定;
-A 使wu-ftp不使用/etc/ftpaccess的设定;
-L 将FTP客户端连线后所执行的程序记录在系统的syslog中;
-I 将FTP客户端上载文件的日志记录在/usr/adm.xferlog文件中;
-o 将FTP客户端下载文件的日志记录在/usr/adm/xferlog文件中。
通过对以上参数的理解,我们建议,将上面系统安装时的那条默认配置改为:
ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd –a –I

5.3.3 提供自动压缩、解压缩的功能
如果想让FTP服务器有自动压缩、解压缩的功能,必须先将一些压缩、解压缩的命令文件如tar、gzip、gunzip、compress、uncompress等命令文件拷贝到/home/ftpd/bin目录下。

5.3.4 关于/etc/ftpaccess的设置
这个配置文件是FTP服务器上最重要的配置文件,它直接关系到你的FTP服务器能否正常工作,还有许多权限上的设置。下面是一个典型的配置实例。
loginfails 3
class local real *
class remote anonymous guest *
limit remote 100 Any /etc/ftpd/toomany.
msgmessage /etc/ftpd/welcome.msg login
compress yes local remote
tar yes local remote
private yes
passwd-check rfc822 warn
log commands real
log transfer anonymous guest inbound outbound
log transfer real inbound
shutdown /etc/ftpd/shut.msg
delete no anonymous,guest
overwrite no anonymous,guest
rename no anonymous
chmod no anonymous,guest
umask no anonymous
upload /home/ftpd * no
upload /home/ftpd /bin no
upload /home/ftpd /etc no
upload /home/ftpd /pub yes real 0644 dirs
upload /home/ftpd /incoming yes real guest anonymous 0644 dirs
alias in /incoming
email guest@xxx.net
email guest@yyy.net
deny *.com.tw /etc/ftpd/deny.msg
下面我们逐句进行讲解,并给出每条设置的含义,以便大家触类旁通,以便根据自己FTP服务器的具体情况进行合理的设置。
1. 格式:loginfails [次数]
功能:设定当用户登录到FTP服务器时,允许用户输错密码的次数。
实例:loginfails 3:密码输入错误三次就切断连接。
2. 格式:class [类名] [real/guest/anonymous] [IP地址]
功能:这个指令的功能设定FTP服务器上用户的类别。并可对客户端的IP地址进行限制,允许某部分的IP地址或全部的IP地址访问。而在FTP服务器上的用户基本上可以分为以下三类:
real 在该FTP服务器有合法帐号的用户;
guest 有记录的匿名用户;
anonymous 权限最低的匿名用户
实例:class local real *:定义一个名为local的类,它包含了在任何地方登录(*代表所有IP地址)的real用户。
class remote anonymous guest *:定义一个名为remote的类,它包含了在任何地方登录的anonymous用户和guest用户。
3. 格式:limit [类别] [人数] [时间] [文件名]
功能:这个指令的功能为设置指定的时间内指定的类别允许连接的指定人数上限。当达到人数上限的时候,显示指定文件的内容。
实例:limit remote 100 Any /etc/ftpd/toomany.msg:在任何时间内,remote类的访问用户达到100人时,将不再允许无法产生新的连接,当第101位客户要连接时,连接将失败,并象用户出示文件/etc/ftpd/toomany.msg的内容。
4. 格式:message [文件名称] [指令]
功能:当用户执行所指定的指令时,系统将指定的文件内容显示出来。
实例:message /etc/ftpd/welcome.msg login:当用户执行login命令时,也就是登录到FTP服务器上的时候,系统将显示文件/etc/ftpd/welcome.msg的内容。
5. 格式:compress [yes/no] [类别]
功能:设置哪一个类别的用户可以使用compress(压缩)功能。
实例:compress yes local remote:允许local和remote两个类别的用户都能使用compress(压缩)功能。
6. 格式:tar [yes/no] [类别]
功能:设置哪一个类别的用户可以使用tar(归档)功能。
实例:tar yes local remote:允许local和remote两类的用户都能使用tar功能。
7. 格式:private [yes/no]
功能:设定是否支持群组对文件的取用。
实例:private yes:支持群组对文件的取用。
8. 格式:passwd-check [none/trivial/rfc822] [enforce/warn]
功能:设定对匿名用户anonymous的密码使用方式。
none 表示不做密码验证,任何密码都可以登录;
trival 表示只要输入的密码中含有字符“@”就可以登录;
rfc822 表示密码一定要符合RFC822中所规定的E-Mail格式才能登录;
enfore 表示输入的密码不符合以上指定的格式就不让登录;
warn 表示密码不符合规定时只出现警告信息,仍然能够登录。
实例:passwd-check rfc822 warn:希望能够得到符合规定的E-Mail作为密码,但如果不是,也允许登录。
9. 格式:log command [real/guest/anonymous]
功能:设置哪些用户登录后的操作记录在文件/usr/adm/xferlog中。
实例:log command real:当real用户登录后,将他的操作记录下来。由于其它用户权限较低,所以操作不会引起太大的安全隐患,所以一般只需记下real用户的操作就可以了。
10. 格式:log transfers [real/guest/anonymous] [inbound/outbound]
功能:设置哪些用户的上载(inbound)和下载(outbound)操作做日志。
实例:log transfer anonymous guest inbound outbound:对于匿名用户要更加的关注它们的文件操作,所以无论上载、下载都进行记录。
log transfer real inbound:对于合法用户则只记录他的上载记录。
11. 格式:shutdown [文件名]
功能:FTP服务器关闭的时间可以设置在后面所指定的文件中,当设置的时间一到,便无法登录FTP服务器了,要恢复的话只有将这个文件删掉。而这个文件必须由指令/bin/ftpshut来生成。
实例:shutdown /etc/ftpd/shut.msg
12. 格式:delete [yes/no] [real/anonymous/guest]
功能:设置是否允许指定用户使用delete命令删除文件。默认是允许。
实例:delete no anonymous,guest:为了更好地管理FTP服务器,一般情况下,我们不允许匿名用户执行delete命令。
13. 格式:overwrite [yes/no] [real/anonymous/guest]
功能:设置是否允许指定用户覆盖同名文件。默认是允许。
实例:overwrite no anonymous,guest:为了更好地管理FTP服务器,一般情况下,我们不允许匿名用户覆盖同名文件。
14. 格式:rename [yes/no] [real/anonymous/guest]
功能:设置是否允许指定用户使用rename命令来为文件改名。默认是允许。
实例:delete no anonymous:为了更好地管理FTP服务器,一般情况下,我们不允许匿名用户执行rename命令改变文件名。而对有记录的匿名用户则适当的放宽,允许他们使用改名命令。
15. 格式:chmod [yes/no] [real/anonymous/guest]
功能:设置是否允许指定用户使用chmod命令更改文件权限。默认是允许。
实例:delete no anonymous,guest:为了更好地管理FTP服务器,一般情况下,我们不允许匿名用户执行chmod命令更改文件权限。
16. 格式:umask [yes/no] [real/anonymous/guest]
功能:设置是否允许指定用户使用umask命令。默认是允许。
实例:delete no anonymous:为了更好地管理FTP服务器,一般情况下,我们不允许匿名用户执行umask命令。
17. 格式:upload [根目录] [上载目录] [yes/no] [用户] [权限] [dirs/nodirs]
功能:对可以上载的目录进行更加详细的设置。
实例:upload /home/ftpd * no:表示在子目录/home/ftpd下不允许上载;upload /home/ftpd /bin no:表示在子目录/home/ftpd/bin下不允许上载;upload /home/ftpd /etc no:表示在子目录/home/ftpd/etc下不允许上载;upload /home/ftpd /pub yes real 0644 dirs:允许用服务器上的合法用户在子目录/home/ftpd/pub目录下能上载权限为0644(也就是-rw-r--r--)的文件,而且在这个目录下可以新建子目录。 upload /home/ftpd /incoming yes real guest anonymous 0644 dirs:允许所有的用户在子目录/home/ftpd/incoming下能上载权限为0644的文件,而且在这个目录下可以新建子目录。
18. 格式:alias [目录别名] [目录名]
功能:给指定目录设置一个别名,在切换目录时就可以使用较短的目录别名。
实例:alias inc: /incoming:为子目录incoming设置一个别名inc:。
19. 格式:email [guest的E-Mail地址]
功能:只要将某些E-Mail地址设置在这个地方,那么这些用户登录到FTP服务器时,他的身份将为guest,一般权限比real低一些,比anonymous高。
实例:email guest@xxx.net email guest@yyy.net:这里仅是一个示例,实际上可以包含多个符合规范的E-Mail地址。
20. 格式:deny [IP地址/域名] [说明文件]
功能:这个设置可以限制哪一些IP地址或域名的用户无法登入FTP服务器。
实例:deny *.com.tw /etc/ftpd/deny.msg:设置凡是域名是以“.com.tw”结束的域名,都禁止其访问。而将/etc/ftpd/deny.msg的内容显示给用户看。

5.3.5 设置/etc/ftpuser,禁止某些用户登录
有时我们需要禁止一些用户使用FTP服务。其实这个设置是十分简单的,只需要将要禁止的用户帐号写入文件/etc/ftpuser中。由于从系统的安全考虑,一般我们是不希望权限过大的用户和一些与命令名相同的用户进入FTP服务器。所以在缺省的配置中,一般以下用户已经被列入了“黑名单”。
root uucp news bin adm nobody lp sync shutdown halt mail

5.3.6 设置/etc/ftphosts,禁止某些来自指定机器上的登录
如果你需要拒绝来自某些主机的登录,一种方法就是在/etc/ftpaccess中设置deny命令,另一种更加简单的方法就是在/etc/ftphosts中写入你要禁止的主机的IP地址或域名。

5.3.7 使新的配置生效
到此为止,我们已经能够根据自己的需要对FTP服务器配置进行必要的修改和调整。而让我们重新配置后,就必须使其生效。一般的,对/etc/ftpaccess的配置是直接作用于设置后的下一次FTP服务进程。而其它的则要对inetd进程重新启动。

5.4 wu-ftp相关的其他一些命令的使用

5.4.1 连接数统计命令ftpcount
我们可以使用ftpcount命令十分清楚地统计出当前连接到FTP服务器上的用户数目,并且同时列出上限。命令输出如下所示:
Service class local 0 Users(20maximum)
Service class remote 5 Users(100maximum)

5.4.2 在线用户查看命令ftpwho
我们可以使用ftpwho命令十分清楚地列出当前连接的用户的详细情况。

5.4.2 FTP关闭文件生成命令ftpshut
我们可以使用ftpshut命令生成一个在/etc/ftpaccess中设置的shut.msg文件,用于关机设定。ftpshut命令的格式为:
Ftpshut time
-l 这个参数设定在关闭FTP服务器功能前多少分钟时停止用户的连接;
-d 这个参数设定在关闭FTP服务器功能前多少分钟时切断用户连接;
time 指定关闭FTP服务器的时间。例如6:20分则写为0620;
---------------------------------------------------
eMail 服务器

在Internet出现WWW服务之前,电子邮件系统曾经是使用最为广泛的一种应用服务。电子邮件为人们的沟通带来了方便,眨眼间,通过Internet传送着各种各样的祝福和消息。它为人们的沟通增加了许多方便。

6.1 电子邮件系统的工作原理
电子邮件系统的运作方式与其它的网络应用有着根本上的不同。在其它的绝大多数的网络应用中,网络协议直接负责将数据发送到目的地。而在电子邮件系统中,发送者并不等待发送工作完成,而是仅仅将要发送的内容发送出去。
例如:文件传输协议(FTP)就象打电话一样,实时地接通对话双方,如果一方暂时没有应答,则通话就会失败。而电子邮件系统则不同,发送方将要发送的内容通过自己的电子邮局将信件发给接收方的电子邮局。如果接收方的电子邮局暂时繁忙,那么发送方的电子邮局就会暂存信件,直到可以发送。而当接收方未上网时,接收方的电子邮局就暂存信件,直到接收方去取。可以这么说,电子邮件系统就象是在Internet上实现了传统邮局的功能,而且是更加快捷方便地实现。
现在作为一个普通的用户想要连接到Internet,那么就必须找一家Internet服务商(ISP)提供连接服务。在中国,最大的ISP就是中国电信。ISP在提供连接的同时,还会提供一个电子邮局,分配一个电子信箱给用户使用。而且在Internet上还有许多免费的电子邮局提供电子邮件服务。
值得一提的是,电子邮件总是有一个空间大小的叙述,这是什么意思呢?也就是电子邮局给每个用户所提供的暂存信件的空间。当然,越大越好嘛。

6.2 电子邮件的标准
电子邮件的协议标准是TCP/IP协议族的一部分。它规定了电子邮件的格式和在邮局间交换电子邮件的协议。
每个电子邮件都分为两部分:邮件头和邮件内容。TCP/IP对电子邮件的邮件头的格式作了确切的规定,而将邮件内容的格式让用户自定义。在邮件头中最重要的两个组成部分就是发送者和接收者的电子邮件地址。电子邮件地址的格式如下:
用户名@电子邮局域名 例: abc@990.net
而电子邮件的传输协议(也就是在邮局间交换电子邮件的协议)主要有SMTP(简单邮件传输协议)、POP(电子邮局协议),以及现在新兴的IMAP(互联网邮件应用协议)。

6.3 电子邮件系统的组成
整个电子邮件应用系统由两大部分构成:
1. 电子邮局系统;
2. 电子邮件发送、接收系统。
电子邮件发送、接收系统则象遍及千家万户的邮箱,发送者和接收者通过它将邮件从电脑中发送和接收邮件。这个部分是一个运行在电脑中的客户端程序,最常用的有Microsoft的Outlook Express,Netscape,The Bat,Foxmail,方正飞扬等。用户可以根据自己的喜爱来选择不同的程序。它们从根本上说,实现的功能是一样的。
电子邮局行使着像传统邮局的功能,它在发送者和接收者之间起着一个桥梁作用。它是运行在电子邮局服务器上的一个服务器端程序。最常用的有Microsoft的IIS和sendmail等。而在这里我们介绍的就是功能强大的、免费的,基于类UNIX操作系统的电子邮件服务端程序sendmail的最基本的配置与使用方法。

6.4 安装sendmail
如果你在安装LINUX的时候,选择了E-MAIL服务,sendmail就已经安装在LINUX系统中了,并且已经作了一些最基本的设置。
如果你在安装时没有选择,或者你需要升级sendmail就可以使用以下方法进行。
1. 通过RPM包来安装或升级(仅用于RedHat LINUX):
1) 首先在光盘上或Internet上找到下面几个RPM包:
sendmail-8.9.3-10.i386.rpm sendmail可执行文件
sendmail-cf-8.9.3-10.i386.rpm sendmail.cf生成器
sendmail-doc-8.9.3-10.i386.rpm sendmail.cf文档
2) 然后使用以下命令安装或升级:
安装: rpm –ivh sendmail-8.9.3-10.i386.rpm
升级: rpm –Uvh sendmail-8.9.3-10.i386.rpm
2. 用源代码编译关安装:
1) 首先取得最新版本的源代码 http://www.sendmail.org/
ftp://ftp.dlut.edu.cn/pub/unix/mail/sendmail/
2) 展开源代码:
cd /hometar –zxvf sendmail-8.9.3.tar.gz
这样就会在/home目录下建立一个sendmail-8.9.3目录:
/home/sendmail-8.9.3/README
/home/sendmail-8.9.3/src
/home/sendmail-8.9.3/cf
/home/sendmail-8.9.3/doc
3) 编译:由于sendmail自己带了一个编译程序Build,所以不用make命令:
cd /home/sendmail-8.9.3/src
./Build
install

6.5 用sendmail构建一个E-Mail服务器
当我们在系统中安装了sendmail后我们就可以使用这台机成为我们的电子邮局了。因为sendmail的功能强大,配置繁琐。所以我们在下面的介绍中举一个架设供一个公司使用的Internet E-Mail服务器为例进行讲述。
以下的设置也能运用在较大的电子邮局应用中,但是随着的用户数的增多,将会使得整个邮局的性能有所下降,这时也就相应地要进行更加深入的配置工作。考虑到本书是一个入门级的读物,我们就不进行深入的讨论。有兴趣的读者可以参看相应的书籍。
总而言之,我希望在本章节的描述后,能使大家够迅速地使用LINUX架设一个小型的实用的电子邮局。下面我们就开始吧!

6.5.1 设置sendmail作为守卫进程(daemon)启动
如果你在安装LINUX的时候,选择了E-Mail服务。那么,sendmail就已经成为一个守卫进程启动了。所谓的守卫进程,指的是它就象DOS操作系统中的常驻内存程序一样,运行后,它们在后台侦听,当需要它进行服务的时候,它就完成特定的功能和服务。在LINUX系统中有许许多多的服务就是以守卫进程的方式启动着的。
你可以使用以下命令来确认sendmail是否已经启动。
ps –A|grep sendmail
如果启动了sendmail,那么这个命令将显示出它的相关信息。否则将没有任何提示地回到命令行。如果没有启动,那么你只发好在/etc/rc.d/rc.net文件中加上以下几行代码。
if [-f /usr/lib/sendmail ];
then(cd /usr/spool/mqueue;rm –f if *)
/usr/lib/sendmail-bd-qlh;echo –n ‘sendmail’>/dev/console
fi

6.5.2 设置sendmail.cf
sendmail.cf是sendmail的配置文件。一般说来在安装了LINUX系统之后,它将自动生成一个适合本系统使用的sendmail.cf文件,而且在sendmail.8.9.3/cf目录下还有许多适应各种系统的sendmail.cf的文件样本,根据文件名也可以判断出它们所适用的场合。可以选择它们替换原有的sendmail.cf文件。也就是将它们复制到/etc目录中去,覆盖掉原来的sendmail.cf文件。
而且sendmail还提供了一个sendmail.cf的生成器m4,它通过一系列的人机对话来生成一个用户定制的sendmail.cf文件。具体的用法可以阅读m4的帮助文档。在此就不再详述。

6.5.3 开启SMTP、POP端口
在Internet中,我们采用POP端口提供接收邮件服务,采用SMTP端口提供发送邮件服务。也就是说,客户端的邮件发送、接收系统在要发送邮件的时候,就与电子邮局的SMTP端口连接;当要接收邮件的时候,就与电子邮局的POP端口连接。
而一般在所有的类UNIX系统中,SMTP端口默认是打开的,而POP端口在默认状态下是关闭的,我们必须将它打开。
1. 用root(超级权限)登录到服务器上;
2. 编辑文件/etc/inetd.conf;
3. 找到描述POP端口的语句;
#pop2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop2d
#pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop3d
前面的#号代表这一行是注释语句,不生效。
POP2是早期的端口协议版本,我们现在一般使用的是POP3.
4. 将POP3的描述语句那一行的注释号“#”去掉。确保POP2的那一行是注释语句。
5. 如果没有找到,就手工补上这一行;(另外,我们还可以验证一下是否存在SMTP端口的描述语句);
6. 存盘后退出。
7. 运行inetd命令,使得设置生效。
8. 用以下命令验证,看POP3端口是否打开(生效)。
netstat –a |grep pop
如果打开的话,可以看到以下信息:
tcp 0 0 *:pop3 *:* LISTEN

6.5.4 为新用户开E-Mail帐号
其实,在LINUX中,要为一个新的用户开E-Mail帐号是十分简单的。只要在LINUX系统中新增一个用户就可以了。那么这个用户帐号和密码就是E-Mail的帐号和密码。
例如,我为一个新用户test开一个E-Mail帐号。就用以下命令:
adduser testpasswd test
这样,这个新用户的E-Mail地址就是:
test@company.com
密码当然就是帐号的密码了。

6.5.5 为E-Mail帐号设置别名
如果,有一些用户想使用多个E-Mail地址,是不是就要为他开多个帐号呢?如果是这样就会增加对帐号管理的难度。所以LINUX给我们提供了一种方法:设置别名。
比如说,一个用户叫“王大明”,它想拥有以下的几个E-Mail地址:
wdm@company.com
wangdm@company.com
daming@company.com
我们就通过以下步骤来实现这样的别名设置。
1. 以root登录服务器;
2. 新增一个账号wdm;
3. 编辑文件/etc/aliases;
4. 加上两行:
wangdm:wdm
daming:wdm
5. 存盘退出;
6. 执行命令:
newaliases
这样,发给王大明的邮件可以使用三个邮件地址,而王大明只需要使用一个E-Mail帐号:wdm@company.com就可以接收所有寄给以上三个E-Mail邮件地址的电子邮件。

6.5.6 邮件限额
当一个E-Mail服务器为许多人提供E-Mail服务的时候,无限量的电子邮件将很容易塞满服务器的硬盘,造成很大的负载。如果你的服务器不想为用户提供无限空间的E-Mail暂存空间,那么你就可以使用“邮件限额”来给用户一个有限的暂存空间。
其实,它是利用磁盘限额功能来实现的。电子邮件的暂存空间是在/var/spool/mail目录下,只要通过磁盘限额设定每一个用户在这个目录下能使用的最大空间就可以了。
----------------------------------------------
DNS 服务器

在用TCP/IP协议族架设的网络中,每一个节点都有一个唯一的IP地址,用来作为它们唯一的标志。然而,如果让使用者来记住这些毫无记忆规律的IP地址将是不可想象的。人们就需要一种有记忆规律的字符串来作为唯一标记节点的名字。
然而,虽然符号名对于人来说是极为方便的,但是在计算机上实现却不是那么方便的。为了解决这个需求,应运而生了一个域名服务系统DNS,它运行在TCP协议之上,负责将字符名——域名转换成实际相对应的IP地址。这个过程就是域名解析,负责域名解析的机器就叫域名服务器。

8.1 域名解析的方法

8.1.1 最早的域名解析方法
最简单的主机名解析方法是,在一个文件中记录所有主机名及与其对应的IP地址,并保证该文件中主机名的唯一性,通过检索文件中的便可以完成主机名的解析。采用这种最简单的解决方法有其历史原因:
在整个70年代,APRANET只是一个小规模的,由类似的数百台主机组成的团体。于是为了解决主机名解析的问题,将连接到ARPANET上每台主机的名字与对应的地址都保存在HOSTS.TXT文件中。这样每增加一台机器,就必须修改HOSTS.TXT文件一次。随着网络的不断发展,网络中的主机数量爆炸性地增加,这种域名解析的方法已经无法适应新的解析需要。

8.1.2 分布式的域名服务器
这种方法,我们已经在基础篇的第六章中有了详细的叙述,在此就不再重复了。在这种分布式的域名服务器体系中,每一台域名服务器(DNS)负责解析属于自己的这一部分主机的域名。
一般说来,如果你所处在公司或组织所拥有的主机并不多,一般是将域名的解析工作交给自己的ISP的域名服务器来完成。而如果你所在组织拥有的主机比较多,我们就可以组建自己的域名服务器负责解析你所在组织的主机。

8.2 域名服务器建立实例

8.2.1 实例环境
假设我们需要建立一台应用于以下情况的一个企业主域名服务器。
1. 拥有一个C类网段地址,为202.101.55.0
2. 企业域名注册为company.com。
3. 域名服务器的IP定为202.101.55.55,主机名为dns.company.com。它同时充当Proxy.
4. 企业网通过路由器与Internet连接。
5. 要解析的服务器有:
www.company.com (202.101.55.1) Web服务器
mail.company.com (202.101.55.2) E-Mail服务器

8.2.2 安装前的准备工作
首先要保证在作为系中统有/etc/resolv.conf和/etc/hosts.conf这两个文件。
/etc/resolv.conf文件中内容如下所示:
domain compay.comnameserver 202.101.55.55
其中第一行指出对于任何希望连到它上面的主机应该搜寻的域。而第二行指出了在哪个地址可以找到需要的域名服务大。
/etc/hosts.conf的内容如下所示:
order hosts,bindmulti on
这里的设置告诉主机名称先在/etc/hosts文件中搜索,然后再查询域名服务器。

8.2.3 定义文件/etc/named.boot
要使LINUX系统完成域名服务器的功能,则需要运行一个named的服务进程。这个服务进程可以在安装LINUX时选中。
named启动时需要读取一个初始化文件——/etc/named.boot,这个文件是named的基本配置文件。它并不包含任何DNS数据,针对前面的假定环境,我们要在这个文件中写入:
diretory /etc/named
primary company.com db.company
primary 0.0.127.IN-ADDR.ARPA db.127.0.0
primary 55.101.202.IN-ADDR.ARPA db.202.101.55
cache . db.cache
下面我们逐行讲解这个文件中的内容:
1) 在第一行中我们指定named从/etc/named目录下读取DNS数据文件。这个目录可以自行指定并创建,指定后将所有的DNS数据文件均存放在这个目录下;
2) 第二行指定named作为company.com的主域名服务器,db.company文件中包含了所有*.my.com形式的域名的解析数据。
3) 第三行则指定named作为127.0.0网段(本地loopback)地址的转换主服务器。其中db.127.0.0文件中包含了所有127.0.0.*形式的地址到域名的转换数据。
4) 第四行指定named作为202.101.55网段地址转换主服务器,db.202.101.55文件中包含了所有以202.101.55.*形式的地址到域名的转换数据。
5) 最后一行指定named从db.cache文件中获得Internet的顶层“根”服务器地址。
要说明的是,这些数据文件的名称均是自行决定的。

8.2.3 建立正向域名转换数据文件db.company
根据/etc/named.boot文件中的定义,我们在/etc/named目录下建立文件db.company,并且在其中写入所有在company.com域内的主机节点。根据前面假定的环境,可以写入:
@ IN SOA dns.company.com. root.dns.company.com.(
200002011 ;文件版本号
28800 ;刷新时间(秒)
7200 ;重试时间(秒)
3600000 ;终止时间(秒)
86400) ;TTL生存时间(秒)
IN NS dns.company.comwww
IN A 202.101.55.1email
IN A 202.101.55.2proxy
IN CNAME dns
下面我们就逐句地理解这里的配置。
1. SOA是主服务器设定文件中一定要设定的命令,我们通常将它放在文件的第一行。
1) 最前面的符号“@”代表目前所管辖的域。
2) 接着的“IN”代表地址类别,这里就是固定使用“IN”的。
3) 接下来就是命令SOA。
4) 接下来填入域名服务器,记住由于DNS数据文件的特殊格式规定,在最后一定要加上“·”,在这个例子中,我们填入域名服务器:“dns.company.com.”
5) 接下来是域名服务器管理员的E-MAIL地址,但要注意的是,E-Mail地址中的分隔符“@”在这里用“·”来代替,在最后也要加上“。”,在这里,我们相应写入:“root.dns.company.com.”
6) 接下来在括号内填上各种选项:
文件版本号:当你修改这个文件的内容时,也要修改这个版本序列号。以此来区分是否有更新。
更新时间:指定二级服务器向主服务器拷贝数据的更新时间周期。
重试时间:指定二级服务器在更新出现通信故障时的重试时间。
终止时间:指定二级服务器重新执行更新动作后仍然无法完成更新任务而终止更新的时间。
生存时间:指定当域名服务器询问某个域名和其IP地址后,在域名服务器上放置的时间。
注:二级服务器所设定的域名服务器是主服务器的备份主机。
2. 在第二行中,我们用NS命令指定这个域的域名服务器。在这里我们指出这个域的域名服务器是“dns.company.com”。
3.接下来的两行我们使用A命令来指定域名与IP地址的对应关系。我们将Web服务器的域名 www.company.com与其IP地址202.101.55.1对应起来;将E-Mail服务器的域名mail.company.com与其IP地址202.101.55.2对应起来。
4. 最后一行,我们使用了CNAME命令为dns.company.com指定了另一个域名以供使用:proxy.company.com。

8.2.3 建立反向域名转换数据文件db.127.0.0和db.202.101.55
反向域名转换数据文件用来提供IP地址查询相应的DNS主机名,每个网段分别有一个数据文件。
1. 网段127.0.0通常只有一个地址,那就是127.0.0.1 loopback地址。所以我们在db.127.0.0中写入的内容是:
@ IN SOA dns.company.com. root.dns.company.com.(
200002011 ;文件版本号
28800 ;刷新时间(秒)
7200 ;重试时间(秒)
3600000 ;终止时间(秒)
86400) ;TTL生存时间(秒)
IN NS dns.company.com1
IN PTR localhost
前面两名相信读者已经不会陌生,最后一句我们使用PTR命令让配置文件中的主机可以使用IP地址来知道所对应的域名。
最前面的1代表127.0.0.1,对应的域名就是localhost。
2.网段202.101.55就可能会存在更多的记录,前面假定环境下的设置应是:
@ IN SOA dns.company.com. root.dns.company.com.(
200002011 ;文件版本号
28800 ;刷新时间(秒)
7200 ;重试时间(秒)
3600000 ;终止时间(秒)
86400) ;TTL生存时间(秒)
IN NS dns.company.com1
IN PTR www2
IN PTR email55
IN PTR dns55
IN PTR proxy

8.2.4 获得db.cache文件
在LINUX系统中通常在提供了一个named.ca的文件,该文件中Internet的顶层域名服务器,但是这个文件通常会发生变化,所以建议最好从Internet上下载最新的版本。该文件可以通过匿名FTP从ftp.rs.internic.net/domain下载,文件名是named.boot。将它拷贝一份为db.cache就可以了。

8.3 测试域名服务器

8.3.1 使用nslookup测试
nslookup命令的功能是查询域名服务器中的数据资料。下例就是使用它来测试域名服务器是否架设成功,其中斜体字代表要输入的内容。
# nslookupDefault server:dns.company.com
Address:202.101.55.55 ;能出现这些信息代表成功>
wwwserver:dns.company.com
Address:202.101.55.1

8.3.2 使用ping测试
还有一种更简单的测试方法,那就是用ping命令,如果成功将显示:
# ping www.company.com
Ping www.company.com(202.101.55.1);56 data bytes64 bytes from
202.101.55.1:icmp_seq=0 ttl=255 time=1.3ms64 bytes from
202.101.55.1:icmp_seq=1 ttl=255 time=0.6ms64 bytes from
202.101.55.1:icmp_seq=2 ttl=255 time=0.6ms……

8.4 小技巧
安装好域名服务器后,在内部使用域名进行远程连接时,会发现速度非常慢。其实只要/etc/hosts中加上所有内部的机器的域名就可以了。
----------------------------------------
文件服务器

在一个网络上,可能不只有LINUX系统,还会存在着象Windows NT、Windows95等其它操作系统。如何让这些安装不同操作系统的机器进行文件级的资源共享呢?下面我们就一起来探讨这个问题。

9.1 让LINUX成为文件服务器——安装Samba服务器

9.1.1 什么是Samba
Samba可以想象成一个局域网上的文件服务器。它可以为在同一个了网中的客户(如Win95、WinNT等)提供文件服务和打印服务。也就是说,Samba服务器可以让LINUX实现象Novell Netware文件服务器提供的功能。

9.1.2 Samba工作原理
Samba的工作原理是,让NETBIOS(Windows95网络邻居的通讯协议)和SMA(Server Message Block)这两个协议运行于TCP/IP通信协议之上,并且使用Windows 95的NETBEUI协议让LINUX可以在网络邻居上被Windows 95看到。
其中最重要的就是SMB协议(Server Message Block),这是一个用于不同计算机之间共享打印机、串行口和通讯抽象(如命名管道、邮件插槽等)的协议。SMB协议是一个非常重要的协议,在所有的Microsoft Windows系列操作系统中广为应用。
Samba是SMB服务器在类UNIX系统上的实现。它是开放源代码的GPL自由软件。目前Samba可以在几乎所有的UNIX变种上运行。

9.1.3 安装Samba服务器
在RedHat LINUX操作系统中,只要在安装的时候选择了Samba,那么它就会在安装LINUX的同时安装Samba。如果没有选择的话,也可以在光盘上找到Samba的RPM安装包,使用RPM安装它就可以了。

9.1.4 配置Samba
配置Samba的工作其实就是对它的配置文件smb.conf进行相应的设置。Smb.conf关系着Samba服务器的权限设置,以及共享的目录、打印机和机器所属的工作组等各种细致的选项。
文件smb.conf的语法非常明确。文件被分成段,每一段的名字用一个方括号括起来。在每一段内用“名称=值”的格式来设置参数。最前面加分号表示该句为注释。在后面的讲述中,我们只说明最常用到的最基本的一些部分,而更加深入的设置,请大家阅读这个文件的注释段。
整个配置文件中最基本是三个特殊段。
1. Global段:配置服务器在整个过程中用到的参数,并为其它段提供缺省值。
[global]
workgroup=MYGROUP;
hosts allow = 192.168.1. 192.168.2. 127.
printcap name = /etc/printcap
load printers = yeslog
file = /var/log/samba/log.%m
1) 第一句workgroup用来指定机器在网络邻居所处的工作组。默认值为MYGROUP,大家可以根据自己的喜爱进行相应的修改。
2) 而hosts allow是一个用来指定在局域网中哪些机器可以使用Samba服务的描述。一般情况,无须设置,所以最前面用一个“;”开始,表示将这句注释掉。
3) 而第三句则是告诉Samba,打印机名称的位置。
4) 第四行load printers = yes则是告诉Samba服务器,允许浏览所有的打印机。
5) 最后一句则是指定了log日志文件的存放地址。
2.Homes段:这个段是用来表示允许客户机连接的用户主目录。在smb.conf文件中没有这个目录的特定内容。当发出服务请求时,就在smb.conf文件的其它部分寻找这种特定的服务。如果没有发现这种服务,并且提供了homes段时,就搜索密码文件去发现用户的主目录。通过分解Homes段,Samba使用户主目录作为共享而使用。下面是这个段的最基本的几个设置。
[homes]
comment=Home Directory
browseable=no
writable=yes
1) 其中comment提定客户机在服务器上可以使用的共享。
2) browseable则设置Samba在网络浏览表是否显示目录,建议改为browseable=yes。
3) 最后一句则是表示是否具有写权限。
3. Printers段:设置打印机的共享状况。样板如下表所示:
[printers]
comment=All printers
browseable=no
printable=yes
建议将browseable=no改为browseable=yes。
一般地,在默认的smb.conf文件中已经做了最基本的设置,不加修改就可以应用在多种情况之中。所以建议初学者可以不用修改它。当然如果必要的话,可以参考注释语句进行一些尝试。
也就是说,如果大家不对smb.conf作修改,客户机已经能够使用最基本的Samba服务.

9.1.4 启动Samba服务器
启动Samba服务器的方法有两种。一种是standalone方式,另一种是Inted方式:
启动方式 占有资源 反应速度
Standalone方式 多 快
Inted方式 少 慢
我们建议使用Inted方式启动Samba服务器,要注意的是,我们不能同时采用两种方式运行,否则将造成Samba服务工作不政常。而默认状态下也是使用这种启动方式。
1. 使用Inted方式启动
安装Samba时,会在/etc/services文件中增加类似的以下几行:
netbios-ns 137/tcp
netbios-ns 137/udp
netbios-dgm 138/tcp
netbios-dgm 138/udp
netbios-ssn 139/tcp
netbios-ssn 139/udp
而在/etc/inetd.conf文件中也新增了以下几行:
netbios-ssn stream tcp nowait root /usr/sbin/smbd
smbdnetbios-ns dgram udp wait root /usr/sbin/nmdb nmdb
如果你想要用下一种方式启动,请在它们前面加上一个注释符号“#”,然后执行inetd命令使修改生效。
2. 使用Standalone方式启动
如果你要使用这种方式启动,请在/etc/rc.d/rc.local文件中加入以下几行:
echo “Startting Samba Server……”
/usr/local/samba/bin/smbd –D -d1
/usr/local/samba/bin/nmbd –D –d1 –n LINUX

9.1.5 使用Samba服务
以Windows 9x为例,我们只要打开网上邻居,就可以发现一个新的工作组MYGROUP,
下面还有这台LINUX主机。我们就可以使用Samba服务了。

9.2 网络文件系统NFS
请在安装LINUX的时候选中NFS,让LINUX系统将这项服务安装到系统中来。接着我们就可以十分容易地使用它了。

9.2.1 共享LINUX的文件
通过NFS共享LINUX的文件很简单,只要修改/etc/exports文件就可以了。例如,我们想将/home/nfstest这个目录共享给202.101.55.5这台机器,并且赋予它读、写权限,那么只要将如下信息写入/etc/exports这个文件中去就可以了。
/home/nfstest 202.101.55.5(rw)

9.2.2 在LINUX中将共享的文件挂进来
接着,如果我们可以在202.101.55.5这台机器(202.101.55.1)上将/home/nfstest外挂进来。我们只要简单地执行命令:
mount –t nfs 202.101.55.1:/home/nfstest /mnt/nfstest
这样就将202.101.55.1上的/home/nfstest目录挂到了202.101.55.5的/mnt/nfstest目录下了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10617731/viewspace-961114/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10617731/viewspace-961114/

Linux 组网入门(转)相关推荐

  1. 如何学习Linux / 新手入门

    如何学习Linux / 新手入门 一.从基础开始:常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的.例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用 ...

  2. LINUX新手入门-1.装系统

    LINUX新手入门-1.装系统 首先我们用虚拟机模拟 装linux系统,然后下一步下一步,然后完成后,编辑一些设置,把镜像放上面就可以了 选第一项,安装系统,查看镜像是否能运行,直接跳过,选择语言 和 ...

  3. 计算机书籍-Linux内核 入门篇

    去天猫看看智能鼠标 书名:奔跑吧 Linux内核 入门篇 作者:张天飞 出版社:人民邮电出版社 出版时间:2019年02月

  4. 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...

    本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...

  5. 【转载】应读者强烈要求给出《超容易的Linux系统管理入门书》一书的主要知识点...

    刚开始了一篇连载,收到广大Linux爱好者的反馈,非常欣慰.大家对Linux学习感到很迷茫,不知道学哪些内容,如何学习? <超容易的Linux系统管理入门书>一书是腾讯Linux专家在腾讯 ...

  6. Linux pwn入门教程——CTF比赛

    Linux pwn入门教程(1)--栈溢出基础 from:https://zhuanlan.zhihu.com/p/38985585 0x00 函数的进入与返回 要想理解栈溢出,首先必须理解在汇编层面 ...

  7. 【转载】绝对干货!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载九)如何通过源代...

    2019独角兽企业重金招聘Python工程师标准>>> 除了使用Linux的包管理机制进行软件的安装.更新和卸载,从源代码进行软件的安装也是非常常见的,开源软件提供了源代码包,开发者 ...

  8. 学习鸟哥的Linux私房菜笔记(1)——Linux系统入门

    转载自: 专栏:鸟哥的Linux私房菜笔记 - 博客频道 - CSDN.NET http://blog.csdn.net/column/details/dawanganban-linux-n.html ...

  9. Linux系统入门之如何安装Linux系统

    题目:Linux系统入门之如何安装Linux系统 一.准备工具: 1.Linux 镜像文件(Linux iso文件),直接的在 百度里面输入下载Linux系统版本即可 例如: 2.虚拟机模拟工具,例如 ...

最新文章

  1. axure动态登录和html5,Axure8原型设计实战案例:如何实现登录功能?
  2. 中科大倪茹:感谢开源,我从入门竞赛到Top 10的经验分享
  3. DPDK 大页内存原理(二十一)
  4. SQL2000输入的值与数据类型不一致,或者此值与列的长度不一致“
  5. mysql授权用户主机_MySQL用户授权(GRANT)
  6. 图书 网管天下系列图书 之 网络管理工具实用详解 目录
  7. android:inputType参数类型说明
  8. lorenz系统simulink仿真_simulink控制系统仿真之控制系统的分析方法(2)(频域分析法)...
  9. (转)java中使用memcache
  10. 你选书我买单,包邮送50本!《R语言实战》或者任何什么书都可以!
  11. jsp自定义标签库打包步骤
  12. Python项目--飞机作战完整版(附带图片素材)
  13. 临床试验中edc录入_一文了解EDC临床试验数据采集系统
  14. 数仓工具—Hive的数据组织管理方式(4)
  15. QQHelper:QQ大家来找茬 辅助工具 外挂
  16. Android APK安装常见错误列表
  17. 第69天-内网安全-域横向 CobaltStrikeSPNRDP
  18. 《算法第一步》出版啦!
  19. 教师职业道德与专业发展
  20. ToB和ToC的产品经理的区别

热门文章

  1. 获取qq音乐分享链接
  2. erp实施入门完整流程
  3. 网站处于联机状态,但未对连接尝试做出响应
  4. 二分类的评价指标总结
  5. 国内外计算机视觉的差距在哪里?
  6. Windows7 GHOST Ultimate x86 V2.0万能预装版
  7. 计算机房排风系统,机房新风系统介绍
  8. 如何获取服务器机器码_dmidecode命令详解(获取硬件信息)
  9. 2.2 点亮第一个发光二极管
  10. SOTA model / SOTA result / SOTA模型究竟是什么?