设置 SAMBA 服务器
如果你已经依序一步一步的将你的 Linux 当作主机安装好了,这时,你会不会觉得,Linux 跟你的日常工作的 Windows 电脑的交互不是很好呢?在这两部机器之间的数据互传必须经过 FTP 协定才能发送,真麻烦!不是吗?呵呵!这时, SAMBA Server 就是你的救星了!使用了 SAMBA Server 可以让你的 Linux 与 Windows 通过『网上邻居』来互传数据,安装了 SAMBA 之后,从此,你的数据都可以使用『网上邻居』来发送啰!真好!不是吗?
应用实例一:以鸟哥为例,由于我都是使用 Windows 系统来编辑我的网页画面,然后再传到我的 Linux 机器上。一开始,鸟哥也是以 FTP 来发送我的网页的,后来发现,这样在我的 Windows 上面需要有一份网页数据,然后修改完成之后又要传到 Linux 上面,如此便有两个相同的文件,真是讨厌!后来,鸟哥就安装了 SAMBA 服务器,将 Linux 上我的网页目录打开成可以资源分享,如此一来,鸟哥就可以直接通过 Windows 的『网上邻居』来修改我的网页数据啰!
应用实例二:另外,在我的实验室中,由于常常有比较大量的文档数据需要备份,然后我们研究室的电脑也不少,我就在我们 Linux 主机上,利用 SAMBA 开放一个大的磁盘空间,让每个人都可以通过 Windows 的『网芳』将自己的数据传上这部电脑来做为备份之用,这样也比较容易备份的工作呀!
要架设 SAMBA 之前,你得先将你的局域网路内的电脑连接架好,这可以分为两部分来说明:
- 硬件连接:基本上每部电脑都以 Hub 连接,并请注意你的网络线应该都是 RJ-45 接头的平行线,连接的方式可以参考之前的『局域网路』说明。
你必须先在 Windows 当中设置这些通信协定之后,才有办法连上所有其他的电脑呀!因此,请先设置你的局域网路吧!
- 网络设置:除了硬件方面的连接需要注意之外,每一部 Windows 的电脑都需要在网络组态中设置以下的通信协定:
这些协定的设置方式你可以来这里看看。
- TCP/IC
- NetBEUI
- IPX/SPX
假设我们要分享 Linux 上面的网页目录(例如我们这个网页的教学中,缺省的网页目录是 /usr/local/apache/htdocs 这一个),并且,假设我们的 Windows 的 IP 为 192.168.1.11 这一个,而你的局域网路设置中,群组名称为 VBIRDHOME ,Linux 主机的名称为 vbird ,而 Windows 想设置为 VBird_windows,想要使用的人员为 vbird ,也就是:上面注意一下,为了避免设置上的困扰,主机的名称最好一定以主机名称(就是你登录你的系统之后,在指令列中,显示在 @ 之后的名称,以我为例,我的 DNS 为 vbird.adsldns.org ,而主机名称则为 vbird 啰)来设置,鸟哥曾经以不同的名称设置,结果是...残念....。那要如何设置呢?其实很简单的!
- Linux 主机对内 IP 为 192.168.1.2 而名称为 vbird;
- Windows 机器 IP 为 192.168.1.11 而名称为 VBird_Windows;
- 工作群组为 VBirdHome;
- 欲分享的 Linux 目录为 /usr/local/apache/htdocs;
- 欲使用这部机器的人员为 vbird
- 修改 /etc/lmhosts 这个文件:
这个文件的目的是列出你的局域网路中的所有 PC 的 『IP』 与 『电脑名称』,文件有点像这样:你可以将上面的『127.0.0.1 localhost』这一行缺省的主机名称取消,这一行是 PC 中缺省的递归网络,每部机器上都会有的喔!如果还有其他的机器,就一起加上去吧!
[root@tsai /etc]# vi /etc/lmhosts 127.0.0.1 localhost
192.168.1.2 VBird_Linux
192.168.1.11 VBird_win2000
- 设置 /etc/smb.conf 主要设置:
如果照我们刚刚的要求来设置的话,就会像这样:信不信,这样就设置妥当啰!其他的设置都不用改变,只要自行增加上面的 client code page = 950 那一行,及 [apache] 后面那几行,并将 encrypt passwords = yes 那两行的注解拿掉,就 OK 喔!
[root@tsai /etc]# vi /etc/smb.conf
底下为 smb.conf 这个文件的主要内容[global]
client code page = 950 <==这一行请自行输入,可以看见中文!
workgroup = VBirdHome <==这里输入群组名称(重要,需与你的工作群组相同)
server string = VBird's ADSL Server <==这里只是说明列(不打紧)security = user <==这是说明密码为用户
encrypt passwords = yes
smb passwd file = /etc/smbpasswd
上面这两行很重要,请在 /etc/smb.conf 文件中找到这两行,
并将前面的注解(;符号)拿掉!重要!以下是打开用户的家目录与网页目录打开的意思
[homes]
comment = Home Directories
browseable = no
writable = yes[apache]
comment = apache_home_page <==这是说明列
path = /usr/local/apache/htdocs <==欲分享的目录
read only = no <==是否唯读,设置为 no 则你在 windows 中可以读写!
public = yes <==是否公开,是的,请公开!
- 测试 smb.conf 的语法:
设置完了 smb.conf 之后,为了保险,请预先测试看看语法有没有错误,请输入:可以看到,在运行了 testparm 之后,系统告诉你,你总共开了三个资源分享,其中, home 与 printers 是缺省的,只有 apache 是你新加的分享喔!(按 Enter 后就可以离开啰)
[root@tsai /etc]# testparm
Load smb config files from /etc/smb.conf
Processing section "[homes]"
Processing section "[apache]"
Processing section "[printers]"
Loaded services file OK.
Press enter to see a dump of your service definitions
- 开始设置用户密码:
我们是设置这部主机上有纪录的用户才可以使用这部主机的资源分享,如上面的设置,我们假设用户为 vbird ,那样的话,你要如何设置用户呢?可是要记得, vbird 必须已经在你的系统中登录为用户了!
[root@tsai /etc]# touch /etc/smbpasswd <==这是创建密码文件的指令
[root@tsai /etc]# chmod 600 /etc/smbpasswd <==将密码变成只有 root 可读写
[root@tsai /etc]# smbpasswd -a vbird <==增加 SAMBA 用户 vbird
New SMB password: <==输入密码
Retype new SMB password: <==再一次输入密码
Password changed for user vbird.
- 开始启动 SAMBA 服务器:
启动的方法真是简单:这样就 OK 啰!没错,这样就设置完成了!
[root@vbird /etc]# /etc/rc.d/init.d/smb start
[root@vbird /etc]# setup
选择 System services 后,再选择
[*]smb
如此一来,每次开机都会自动运行 SAMBA 啰!
- 设置用户权限:
好啦,刚刚我们不是已经设置要开放主机的网页目录吗?就是 /usr/local/apache/htdocs 这个目录,但是这个目录应该是 nobody 的喔,而且权限大概只会开放到可读与可运行,那样的话,不就没有办法写入或者更改文件了吗?别担心,请将上面的文件设成:chmod 777 /usr/local/apache/htdocs
就可以了!不过要小心的是,如此一来大家都可能可以修改你的文件了,不可不防喔!如果你要考虑的多一点时,可以将目录的所有人设成是你自己(如上面例子,可以用 chown -R vbird:vbird /usr/local/apache/htdocs 来取代之),不过,仍要小心相关套件的配合喔!基本上,比较简单的方法仍然是直接以 chmod 777 来做是比较快!
好了,已经在 Linux 上面设置好了,局域网路也设置完成了,接下来就是直接使用网上邻居来连接了,不过,这里有一些限制喔,请你需要注意一下,不然你一定连不上 Linux 的哩!呵呵!那样就 OK 啰!从此之后,只要以『网上邻居』来连接 Linux 以发送文件数据就可以啰!
- 你的 Linux 的 /etc/smb.conf 文件中,设置的工作群组,必须与你的 Windows 内的工作群组相同;
- 你在登录 Windows 的时候(就是开机画面之后),一定要使用 smbpasswd 文件中有的人名,以我为例,我必须以 vbird 登录我的 Windows 系统。
- 在 /etc/lmhosts 文件中,你的 Linux 主机 IP 对应的 主机名称 必须是 Linux 主机的名称!