📄 1565.html
字号:
第四章介绍的GhostScript程序,那么,在客户看来,这个打印机将是一个PostScript打<br>
印机,所以这时无论实际的打印机是什么,你都需要在Windows 95客户上将这个打印机<br>
设置成为PostScript打印机(非常有趣,哪一种PostScript打印机无所谓,只要是Post<br>
Script而且幅面大小一样就行了)。<br>
<br>
总之,你可以任意设置samba的各种服务,提供任意多的共享文件和目录。基本方式就<br>
是按照上面的段落格式,每一段给出一个共享目录。<br>
<br>
编辑完毕后,用testparm程序验证是否有错误的行:<br>
<br>
[root@openlab bin]# testparm<br>
<br>
Load smb config files from /etc/smb.conf<br>
<br>
Processing section "[public]"<br>
<br>
Processing section "[homes]"<br>
<br>
Loaded services file OK.<br>
<br>
Press enter to see a dump of your service definitions<br>
<br>
testparm程序自动校验/etc/smb.conf的各个共享段落,然后按下回车键将把这个文件<br>
显示一遍。<br>
<br>
如同刚才说的那样,可以用smbd –D和nmbd –D启动samba,也可以使用ntsysv程序,<br>
使用方法和nfs类似,这里不再详细叙述了。<br>
<br>
如果要察看samba的运行状态,使用smbstatus:<br>
<br>
# smbstatus<br>
<br>
<br>
Samba version pre-2.0.7<br>
<br>
Service uid gid pid machine<br>
<br>
----------------------------------------------<br>
<br>
<br>
No locked files<br>
<br>
<br>
Share mode memory usage (bytes):<br>
<br>
1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total<br>
<br>
5.2.2 swat程序<br>
<br>
想了解samba,可以看smb.conf的手册页面,如man smb.conf。但是这确实不太方便。<br>
而且samba的语法也在不断改变以便跟上Windows NT的发展。为了简化samba的配置,Sa<br>
mba在其中包含了一个可以通过浏览器进行smb配置的工具,这个程序的名字叫swat。<br>
<br>
要使用swat,首先必须将它配置成一个服务器进程,这可以更改/etc/services和/et<br>
c/inetd.conf来实现。首先要为swat分配一个端口,例如在/etc/services中加入这样一<br>
行:<br>
<br>
swat 901/tcp<br>
<br>
901是我们通常给swat分配的端口。<br>
<br>
接下来,在/etc/inetd.conf中启动swat,可以加入这样一行:<br>
<br>
swat stream tcp nowait.400 root /usr/sbin/swat swat<br>
<br>
重新启动inetd:<br>
<br>
kill –HUP inetd<br>
<br>
然后,在浏览器中输入你的Linux机器的地址,比如Linux机器的IP是166.111.111.11<br>
1,那么可以输入http://166.111.111.111:901/,注意901和http://都是不可省略的。<br>
<br>
然后将出现登录窗口:<br>
<br>
<br>
<br>
图5.2 swat登录<br>
<br>
用户名为root,口令输入超级用户口令,输入后,将出现swat的配置屏幕:<br>
<br>
<br>
<br>
图5.3 swat<br>
<br>
每一个标题都代表一组设置,可以用这个界面直接配置samba。特别是,可以在这个界<br>
面里看到smb的手册页面。<br>
<br>
需要注意的是,由于swat程序生成smb.conf的时候会自动删除原来的smb.conf,因此<br>
你应该先备份原来的smb.conf文件。另外,swat使用明文传送用户名和口令,意味着你<br>
的系统口令可能被监听到,所以一定要注意安全。<br>
<br>
5.2.3 重新编译samba<br>
<br>
samba总是在不断地更新中,你应该尽量获得samba的最新版本。然而,由于samba是一<br>
个通用的UNIX程序,你能得到的通常都是源代码,下面我们解释一下如何重新编译samb<br>
a。<br>
<br>
其实编译samba和编译 任何Linux源代码的方法都是一样的,问题在于,为了保证sam<br>
ba在System V和BSD上都能够使用,缺省的samba安装目录是/usr/local/samba,相应的<br>
配置文件也不是在/etc,而是/usr/local/samba/lib。为此,你首先应该执行配置程序<br>
。在配置程序中,你可以设定各种目标目录,设定的命令可以用help参数得到:<br>
<br>
./configure –help |less<br>
<br>
这可以显示用什么命令更改缺省目录,例如-bindir=/usr/bin,--sbindir=/usr/sbi<br>
n等等。<br>
<br>
不过,就我个人来说,我更喜欢直接手工编辑产生的Makefile文件,改变里面的目录<br>
名字,例如,下面是我改动的方法:(注意加粗的部分)首先执行./configure,然后编<br>
辑Makefile:<br>
<br>
........<br>
<br>
prefix=/usr/local/samba<br>
<br>
exec_prefix=${prefix}<br>
<br>
mandir=${prefix}/man<br>
<br>
.........<br>
<br>
srcdir=.<br>
<br>
builddir=/root/samba-pre2.0.7/source<br>
<br>
SHELL=/bin/sh<br>
<br>
<br>
BASEDIR= /usr/local/samba<br>
<br>
BINDIR = /usr/bin<br>
<br>
# we don't use sbindir because we want full compatibility with<br>
<br>
# the previous releases of Samba<br>
<br>
SBINDIR = /usr/sbin<br>
<br>
LIBDIR = ${exec_prefix}/lib<br>
<br>
VARDIR = /var/log/samba<br>
<br>
MANDIR = /usr/man<br>
<br>
CONFIGDIR = /etc<br>
<br>
SMBLOGFILE = $(VARDIR)/log.smb<br>
<br>
NMBLOGFILE = $(VARDIR)/log.nmb<br>
<br>
CONFIGFILE = $(CONFIGDIR)/smb.conf<br>
<br>
LMHOSTSFILE = $(CONFIGDIR)/lmhosts<br>
<br>
DRIVERFILE = $(CONFIGDIR)/printers.def<br>
<br>
PASSWD_PROGRAM = /bin/passwd<br>
<br>
最后再make,make install就可以了。<br>
<br>
5.2.4 从Linux使用windows 文件服务<br>
<br>
通常我们总是从windows 9x来访问Samba共享文件,但是,在个别的情况下,偶尔也需<br>
要使用Linux访问Windows 9x/NT的共享目录,这是通过smbclient和smbmount实现的。要<br>
使用这些工具,确定你已经安装了smb-client软件包。<br>
<br>
smbclient是一个基本的访问Windows 共享目录的软件,例如,假设你的Windows共享<br>
机器是WINWS,共享目录是PUBLIC,那么可以这样执行smbclient:<br>
<br>
smbclient //WINWS/PUBLIC<br>
<br>
然后出现提示:<br>
<br>
added interface ip=202.199.248.6 bcast=202.199.248.255 nmask=255.255.255.0<br>
<br>
Got a positive name query response from 202.199.248.5 ( 202.199.248.5 )<br>
<br>
Password:<br>
<br>
如果是不需要口令的系统,直接回车,否则,按照你当前的Linux用户名输入对应的口<br>
令,然后出现smbclient的提示符:<br>
<br>
smb: ><br>
<br>
在这个提示符下面可以输入命令,help显示所有可用的命令,用法颇类似于ftp,使用完<br>
毕之后,输入quit退出。<br>
<br>
smbclient的常用命令有:<br>
<br>
cd [目录名] 改变目录<br>
<br>
del [文件名] 删除文件<br>
<br>
dir 显示目录<br>
<br>
get [文件名] 从服务器下载文件并且存放到本地目录<br>
<br>
lcd [目录名] 改变本地目录<br>
<br>
mget [一组文件] 取得成组文件<br>
<br>
put [文件名] 上载文件<br>
<br>
recurse 激活递归模式,在这个模式下可以连子目录一起操作<br>
<br>
mput [一组文件] 成组上载文件<br>
<br>
rmdir 删除目录<br>
<br>
mkdir 建立目录<br>
<br>
上面是smbclient的一般用法。如果你想明确地给出用户名和口令,使用-U参数,例如<br>
,用户名test,口令passwd应该给出为<br>
<br>
smbclient //WINWS/PUBLIC –U test%passwd<br>
<br>
另外几个常用的smbclient命令行参数是这样:<br>
<br>
-I [ip地址]显式给出目标服务器的IP地址,由于在smbclient中使用的是netbios名字<br>
,所以有时可能出现无法查询到计算机的情况,在这种情况下,可以通过-I选项给出IP<br>
。<br>
<br>
-L [host] 这个选项显示指定机器上的共享资源列表,例如,smbclient –L //WINW<br>
S<br>
<br>
-W [工作组名] 在登录时指定工作组名字或者域名<br>
<br>
-N 不使用口令<br>
<br>
另外一种使用Windows 9x文件服务的方法是使用smbmount,它的基本语法是<br>
<br>
smbmount //机器名/共享目录名 –c 'mount 连接点'<br>
<br>
这是目前的smbmount的语法,例如,要将前面说的//WINWS/PUBLIC连接到本地的/net<br>
目录,命令是<br>
<br>
smbmount //WINWS/PUBLIC –c 'mount /net'<br>
<br>
以后/net下的内容就是//WINWI/PUBLIC的内容。<br>
<br>
这个命令支持-U,-P(给出口令),-n(禁止口令),-D(给出NT域)等选项。<br>
<br>
要使用共享打印机,需要使用smbprint。可以将smbprint作为一个输入过滤器,例如<br>
,可以将/etc/printcap配置成这样:<br>
<br>
smblp:<br>
<br>
:sd=/var/spool/samba:<br>
<br>
:af=/var/spool/samba/smbprintacc:<br>
<br>
:if=/usr/bin/smbprint:<br>
<br>
:lp=:<br>
<br>
然后需要建立smbprint配置文件,例如在现在的情况下,smbprint位于/usr/bin下,<br>
需要建立/usr/bin/.config文件,内容如下:<br>
<br>
$ cat .config<br>
<br>
server=ASNC <br>
<br>
#服务器的名字<br>
<br>
service=HPLIII<br>
<br>
#共享打印机的共享名<br>
<br>
password="pass"<br>
<br>
#使用口令为pass<br>
<br>
然后就可以用lpr命令打印了。<br>
<br>
<br>
5.2.5 WINS和NetBIOS<br>
<br>
熟悉Windows NT的用户会知道,windows 用NetBIOS名字在网络上确定机器,但是在互<br>
连网络中人们用DNS名字,两个名字可能会不一致;另外,NetBIOS名字的传播是依靠广播<br>
机制,也就意味着Windows 系统的名字不能跨越子网和路由器,对于大型网络这是非常<br>
讨厌的事情。Microsoft使用WINS(windows 通用命名服务)来解决这两个问题。<br>
<br>
WINS Server通常是一台Windows NT服务器,Windows 客户机器通过它彼此交换自己的<br>
NetBIOS名字,因为WINS服务器是通过IP地址访问的,所以使用同一个WINS的机器无论物<br>
理上是否处于同一个网段内都可以直接在网络邻居内看到。<br>
<br>
要将samba配置成WINS 服务器,在[global]段落中使用下面的两行:<br>
<br>
wins support = yes<br>
<br>
以后将windows 客户机的WINS地址设置成samba机器就可以了。例如:<br>
<br>
<br>
<br>
图5.4 启用wins<br>
<br>
如果要让samba使用已有的WINS服务,使用<br>
<br>
wins server = [WINS服务器地址]<br>
<br>
在使用已有的wins服务器的情况下,可以将samba当成一个wins代理来使用。wins代理<br>
实际上也是一个wins服务器,但是它是从某个主wins服务器取得名字信息,然后广播给<br>
别的机器,这可以让netbios名字广播给别的机器。<br>
<br>
要将samba配置成为wins代理,只要设置这样的一行:<br>
<br>
wins proxy = yes<br>
<br>
不要忘记同时应该给出主wins服务器的地址。<br>
<br>
5.3 DHCP<br>
<br>
DHCP即Dynamic Host Configuration Protocol (动态主机配置协议),它用于给子网<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -