⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0370samba.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
		而且若有其他额外的参数须知,务必自行 man smb.conf 喔!</span>重要的很!<br /><br />
	</div>

	<hr /><a NAME="server_share"></a><img src="images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">没有密码的 smb.conf 设定(纯测试)</span><br />
	<div class=block2>
		瞎密?不需要密码就能够使用 SAMBA 主机所提供的目录资源?真假?没错啦,可以达到的。
		不过,因为不需要密码就能够登入,虽然你可以设定权限成为唯读,让使用者可以『瞧瞧而已』,
		但是毕竟比较危险,因为如果你不小心将重要资料放置到该分享的目录当中,岂不危险?
		所以尽量不要这样设定。不过,我们还是得介绍一下啦!先说明一下我们的设定需求∶<br /><br />

		<li><span class=text_import1>主机预计设定的参数状况∶</span></li>
		<ul>
		<li>在 LAN 内所有的网芳主机工作群组 (workgroup) 为∶ vbirdhouse
		<li>这部 Linux 主机 (Samba 服务) 的 NetBIOS 名称为∶ vbirdserver
		<li>使用者登入层级设定为∶ share
		<li>仅分享 /tmp 这个目录而已,且取名为∶ temp
		<li>Linux 主机的编码格式假设为万国码 (Unicode, 亦即 utf8)
		<li>用户端为中文 Windows ,在用户端的软体也使用 big5 的编码
		</ul>

		底下就开始依序来进行 samba 的设定吧!<br /><br />

		<a name=lmhosts></a>
		<hr /><li><span class=text_import1>1. 设定 lmhosts 档案内容 (optional)∶</span></li>
		<div class=block2>
		我们前面谈到 NetBIOS 名称可以由广播的方式自动取得,而 NetBIOS 也可以透过区域网路内经由一部主控电脑来管理,
		此外,你也可以利用自己主机当中的 lmhosts 这个设定档来进行 NetBIOS 与 IP 的对应,
		让 NetBIOS  与 TCP/IP 可以对应上关系呐!一般来说,这个档案是可以不必设定的,因为可以经由广播的方式取得对应的嘛!
		不过,某些时刻确实可以设定一下,免除一些额外的搜寻时间说。我的区网中电脑名称与 IP 是这样的∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/samba/lmhosts</span>
<span class=term_write>127.0.0.1       localhost
192.168.1.254   vbirdserver
192.168.1.21    vbirdcpu2
192.168.1.11    vbirdcpu1</span>
<span class=term_say># 这个档案的内容很简单,与 /etc/hosts 很类似,左边是 IP 右边是主机名称。
# 只是主机名称必须符合 NetBIOS name 的标准,包括∶
# 主机名称不要超过 15 个字元,不要含有特殊字元等等。
# 亦可使用 man lmhosts 来查阅喔!</span>
</pre></td></tr></table>

		鸟哥区网内常用的有三部主机,除了 Linux 这部机器外,还有两部个人电脑,我将这几部电脑的 NetBIOS name
		写到这个档案当中,可以免除 Samba 自己去搜寻棉!而再次强调,这个名称是 NetBIOS name 而非 HOSTNAME 喔!<br />
		</div>

		<hr /><li><span class=text_import1>2. 检查语系资料</span></li>
		<div class=block2>
		过去朋友们在进行 SAMBA 的设定时,最容易发生错误的地方就是在中文档名部分,
		绝大部分的朋友只要使用了中文档名,常常会发生一些问题,就是无法顺利的上传下载,
		或者是原先的中文档名上传后,却变成奇怪的乱码档名。<br /><br />

		为了解决这个问题,你必须要知道几个项目∶<br />
		<ul><span class=text_import2>
		<li>原始档案 (你要分享的档案) 编码的格式为何?一般来说,中文 Windows  的编码预设为 Big5 ;
		<li>这个档案放置在 Linux 上,则这部 Linux 的预设语系编码为何?这与 /etc/sysconfig/i18n 有关;
		<li>在 Samba 上头的显示编码为何?一般来说与上述的 Linux 预设编码相同即可;
		<li>在用户端连接到 Samba 主机的软体之语系编码为何?如果是中文 Windows 作业系统,预设为 Big5。
		</span></ul>
		你的语系资料必须要在上面这几个环境中进行转换,因此如果你的用户端连上 Samba 的软体编码为 Big5 ,
		你的 Samba 使用的语系也是 Big5 ,但是 Linux 主机却预设仅支援 utf8 的编码时,而你的 smb.conf 
		又没有设定好,此时资料传输就会发生一些错误,因此你就会看到很多乱码档名了。<br /><br />

		所以,你至少得要知道你的 Linux 语系编码为何?在 Red Hat 系统 (含我们的 CentOS) 可以查阅 /etc/sysconfig/i18n 这个档案,
		如下所示为鸟哥的 i18n ∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>cat /etc/sysconfig/i18n</span>
LANG="en_US.UTF-8"  <span class=term_say>&lt;==这才是你需要注意的地方!</span>
SUPPORTED="zh_HK.UTF-8:zh_HK:zh:zh_CN.UTF-8:zh_CN:zh:zh_SG.UTF-8:
zh_SG:zh:zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
</pre></td></tr></table>

		由上头看起来,鸟哥预设的语系编码为 en_US.UTF-8,不过尚有支援 zh_TW 这样的中文编码。
		先假设鸟哥的编码为万国码 (Unicode) 好了。知道了之后就能够开始处理 smb.conf 棉!<br /><br />
		</div>

		<hr /><li><span class=text_import1>3. 设定 smb.conf 设定档</span></li>
		<div class=block2>
		在这个例子当中我们仅分享 /tmp 这个目录而已,而且假设这个分享出来的目录是可读写的,
		另外,我们并没有分享印表机喔!而在 smb.conf 当中的注解符号可以是『 # 』也可以是『 ; 』喔!要注意!<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>cd /etc/samba</span>
[root@linux samba]# <span class=term_command>cp smb.conf smb.conf.raw</span>  <span class=term_say>&lt;==先备份再说!</span>
[root@linux samba]# <span class=term_command>vi smb.conf</span>
<span class=term_say># 先设定好主机方面的参数</span>
<span class=term_write>[global]
        <span class=term_say># 与主机名称有关的设定资讯</span>
        workgroup     = vbirdhouse
        netbios name  = vbirdserver
        server string = This is vbird's samba server

        <span class=term_say># 与语系方面有关的设定项目喔,为何如此设定请参考前面的说明</span>
        unix charset    = utf8
        display charset = utf8
        dos charset     = cp950

        <span class=term_say># 与登录档有关的设定项目,注意变数 (%m)</span>
        log file = /var/log/samba/%m.log
        max log size = 50

        <span class=term_say># 这里才是与密码有关的设定项目哩!</span>
        security = share

        <span class=term_say># 其他预设存在的项目</span>
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = no
        template shell = /bin/false
        winbind use default domain = no

<span class=term_say># 底下则是针对 /tmp 的设定而来的!可浏览且可写入喔!</span>
[temp]
        comment   = Temporary file space
        path      = /tmp
        read only = no
        public    = yes</span>
</pre></td></tr></table>

		请您特别留意,在原本的 smb.conf 上面就已经有很多预设值了,这些预设值如果你不知道他的用途,
		尽量保留预设值,也可以使用 man smb.conf 去查询该预设值的意义。举例来说, CentOS 4.x 的 smb.conf  
		预设有针对 server/client 的封包传递项目设定值的 socket options ,也有针对 Windows NT 及 Unix 系统的帐号对应之
		idmap uid 之类的设定值,这些设定值在大型的区网架构会使用到,在我们仅有一两部 Linux samba 伺服器的环境下....
		应该是可以不予理会的啦!<br /><br />
		</div>

		<a name="testparm"></a><hr /><li><span class=text_import1>4. 用 testparm 查阅 smb.conf 的语法设定正确性</span></li>
		<div class=block2>
		在启动 samba 之前,我们务必要了解到 smb.conf 里面语法是否正确,检验的方式使用 testparm 这个指令即可。
		测试方式如下∶<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>testparm</span>
<span class=term_say>参数∶
-v ∶查阅完整的参数设定,连同预设值也会显示出来喔!</span>

[root@linux ~]# <span class=term_command>testparm</span>
Load smb config files from /etc/samba/smb.conf
Processing section "[temp]"   <span class=term_say>&lt;==这个地方可以仔细看看,如果有问题会在这边显示</span>
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions <span class=term_say>&lt;==请按 [Enter] 按键</span>

# Global parameters
[global]
        dos charset = cp950
        display charset = utf8
        workgroup = VBIRDHOUSE
        netbios name = VBIRDSERVER
        server string = This is vbird's samba server
        security = SHARE
        log file = /var/log/samba/%m.log
        max log size = 50
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = No

[temp]
        comment = Temporary file space
        path = /tmp
        read only = No
        guest ok = Yes
</pre></td></tr></table>

		上头是语法验证与各个项目的列出,如果你下达 testparm 却出现如下画面那就是有问题∶<br />

<table class="term"><tr><td class="term"><pre>
Unknown parameter encountered: "linux charset" <span class=term_say>&lt;==错误的设定</span>
Ignoring unknown parameter "linux charset"
Processing section "[temp]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
</pre></td></tr></table>

		如果发现上述的错误,这表示你的 smb.conf 有个 linux charset 的设定参数,不过 smb.conf 其实是不支援这个参数的。
		可能的问题是 samba 2.x 与 samba 3.x  有一些项目的支援已经不存在了,所以你使用旧版的 2.x 设定档来 3.x 
		上头执行时,就会出现问题。此外,『打字错误』也是很常见的一个问题呐!赶紧测试一下语法先,
		然后根据 smb.conf 有的项目去进行修改吧。<br /><br />

		如果你想要了解 samba 的所有设定 (包括没有在 smb.conf 里头设定的预设值),可以使用 testparm -v 来作详细的输出,
		资料相当的丰富,透过这个您也可以知道你

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -