由最简单的一个例子说起,匿名用户可读可写的实现

 

  第一步: 配置smb.conf

 

  我们来实现一个最简单的功能,让所有用户可以读写一个Samba 服务器共享的一个文件夹;

  samba的配置文件是smb.conf,该文件默认应该被放置在 /etc/sfw/ 目录下,

  默认情况下/etc/sfw/目录下有一个名为 smb.conf-example 的文件,

  该文件是Solaris系统提供给用户的一个配置例子。

  好的。现在我们给出一个最简单的例子:

  bash-3.00# cd /etc/sfw/

  bash-3.00# touch smb.conf

  编辑smb.conf

  bash-3.00# gedit smb.conf

  用gedit这个类似于UltraEdit的文本编辑工具编辑,输入以下内容:

  [global]

workgroup = hust 
  netbios name = hust_zieckey 
  server string = Solaris Samba Server TestServer 
  security = share 
 
  log file =/var/log/samba/%m.log
  max log size = 50

  [zieckey]

path = /mnt/samba 
writeable = yes 
browseable = yes 
guest ok = yes

 

 

  说明注解:

  [global]这段是全局配置,是必段写的。其中有如下的几行;

 

  workgroup 就是Windows中显示的工作组;

  netbios name 就是在Windows中显示出来的计算机名;

  server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的;

  security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;

另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了;

 

  [zieckey] 这个在Windows中显示出来是共享的目录;

  path = 可以设置要共享的目录放在哪里;

  writeable 是否可写,这里我设置为可写;

  browseable 是否可以浏览,可以;

  guest ok 匿名用户以guest身份是登录;

 

  第二步 建立共享目录

  bash-3.00# mkdir -p /mnt/samba

  再建立一个文件,便于测试

  bash-3.00# touch /mnt/samba/welcome.txt

  第三步:启动smbd和nmbd服务器

  bash-3.00# /etc/init.d/samba start

  下面是关闭命令

  /etc/init.d/samba stop 

  第四步:查看smbd进程,确认Samba 服务器是否运行起来了; 

  bash-3.00# pgrep smb

  1264

  1267

  1274

  看到了相关的进程号,说明samba服务器已经在工作了。  

  第五步:访问Samba 服务器的共享;

 

 

  在 Solaris 中您可以用下面的命令来测试;

bash-3.00# /usr/sfw/bin/smbclient -L //192.168.0.13 注:"192.168.0.13"是系统的IP地址
  Password: 注:直接按回车,因为没有设置密码
  Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.21b]
Sharename Type Comment
--------- ---- -------
ADMIN$ IPC IPC Service (Samba 3.0.21b)
IPC$ IPC IPC Service (Samba 3.0.21b)
homes Disk Home Directories
  Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.21b]
Server Comment
--------- -------
Workgroup Master
--------- -------
HUST HUST_ZIECKEY
  bash-3.00#
  或者:
  bash-3.00# /usr/sfw/bin/smbclient -L hust_zieckey 注:"hust_zieckey"是Samba服务器的计算机别名
  Password:
  Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.21b]
Sharename Type Comment
--------- ---- -------
ADMIN$ IPC IPC Service (Samba 3.0.21b)
IPC$ IPC IPC Service (Samba 3.0.21b)
homes Disk Home Directories
  Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.21b]
Server Comment
--------- -------
Workgroup Master
--------- -------
HUST HUST_ZIECKEY
WORKGROUP APPLE
  bash-3.00#

  在Windows中,您可以用下面的办法来访问;

  在运行命令中输入

  192.168.0.13

  可以看到已经连接到samba上了,但碰到了一些问题。

  问题1:进入zieckey,发现没有权限

  问题1解决方法:回到Solaris看看那个目录的权限信息发现对于其它的用户都没有写信息的权限。

用chmod 777 改一下。

  bash-3.00# chmod 777 /mnt/samba

  再到Windows下测试,试图写一个文件,这个时候就可以写了,当然下载文件也没有问题。

  问题2:在Windows下,看到Samba服务器的中文文件名是乱码。

  用samba的缺省配置,在WinXP下去访问没甚么问题,只是发现中文显示是乱码。

  查了以下man samba, 发现unix charset 缺省是UTF-8编码的。因此修改 smb.conf的[global]节,加上:

  unix charset = GBK

  dos charset = GBK

  display charset = GBK

  重启samba即OK

  第六步 让Samba服务随机启动

  这样就可以省去每次手动开启Samba服务了

  在/etc/rc3.d/下创建S38samba

  vi /etc/rc3.d/S38samba

  /etc/init.d/samba start

  后存盘

  chmod 755 /etc/rc3.d/S38samba

  大S后面的数字说明:

  The numbers mean the ORDER in which the `init` executes them. (Actually, the 'init' executes in the same order as 'ls -l', but of course the bigger number, the latter). So be careful when you add your own script, put the script in the right order -- some script depends on other service(if your script A depends on service B, then A's number MUST bigger than B's).

  至此一个Solaris10系统上最简单也最实用的Samba服务器架设并配置成功了!

 

 

 

Solaris 10 配置 samba 服务

一、samba简介

Samba 提供了Unix系统和Windows之间的文件和打印机共享服务。一台Solaris的机器,如果配置了Samba Server,就能充当共享服务器;同时也能作为客户机访问网络中其它Windows系统上的共享文件,或其它安装了Samba Server的Solaris/Linux系统上的共享文件。

            Solaris10 在系统安装的时候就已经包含了Samba,只需要简单的配置就可以成为Samba Server。

            Samba 服务器包含两个Daemon,nmbd和smbd。smbd是 samba的内核,是建立对话,验证客户和提供文件系统和打印服务的基础; nmbd则处理所有的名字注册和解析请求,实现了网络浏览的功能;它的任务是向局域网广播Samba服务器所提供的服务;Nmbd使得Samba服务器显 示在windows操作系统的网络邻居中,允许用户浏览可以通过samba使用的资源。

Solaris10 自带samba,但samba服务为遗留服务,新安装solaris中未被启用

使用命令 ps –ef | grep mbd,可查看samba进程

samba在solaris10 中的一些目录    

文件及目录

用途说明

其它说明

/etc/sfw/smb.conf-example

Samba 配置文件示例

系统初始自带,是smb.conf的示例文件

/etc/sfw/smf.conf

Samba 配置

系统缺省没有这个文件,需要从/etc/sfw/smb.conf-example拷贝或者手工创建这个文件

/usr/sfw/bin/smb(*)

Samba的常用工具

smbcacls

smbcontrol

smbpasswd

smbtar

smbtree

smbsh

smbclient

smbspool

smbstatus

smbcquotas

/var/samba/log

默认存放samba日志的目录

 

/etc/init.d/samba

samba管理命令

可以带参数start和stop进行samba服务的开启和停止

/usr/sfw/sbin/smbd

/usr/sfw/sbin/nmbd

samba的两个可执行文件

在用samba管理命令事实上调用这两个可执行文件。

 

 

 

二、配置samba 无用户验证方式

1.       创建共享目录

       mkdir -m 777 -p  /export/home/smbshare 

2.       创建samba配置文件

              cp  /etc/sfw/smb.conf-example  /etc/sfw/smb.conf

3.         编辑/etc/sfw/smb.conf 文件

a.         将 security = user 改为 security = share

      连接模式,share为共享模式,不需要用户验证。user和server方式需要用户验证

b.         . log file = /var/samba/log/log.%m 定义了log的默认路径,可自行定义log路径

c.         max log size = 50 定义了log文件默认大小,单位Kb

d.         修改共享文件路径信息

将原有信息

#======== Share Definitions ==========
[homes]
   comment = Home Directories
   browseable = no
   writable = yes

修改为

#===== Share Definitions ============
[homes]
   comment = Home Directories
   browseable = yes
   writable = yes
   path = /expore/home/smbshare                    #共享目录路径
   guest ok = yes

e.         启动samba服务

svcadm enable samba

f.          查看samba服务

ps -ef | grep mbd

g.         在windows 上可用IP访问solaris

         

 

三、配置user(用户验证)方式

配置成user方式是需要提供用户明和密码进行验证的。这要比share方式的不验证相比较会更安全。其配置方式与配置share方式基本上是一致的。只是在smb.conf文件中的security=share方式变成了security=share

       然后添加samba用户,用户可以是已有用户,也可以是即将新建用户

      

       添加用户并重启samba服务后,使用windows访问即会被要求输入用户密码

       若要对不同用户的共享目录进行权限限制可按如下配置smb.conf文件

===== ===== /usr/sfw/smb.conf ==========
        security = user
        [homes]
        comment = Home Directories for %S
        valid users = %S                 # 只有所有者能访问该共享
        browseable = no                         # 该共享对其它用户不可见
        writable = yes
        create mask = 0640               # 创建文件时的权限掩码,权限为rw-r-----
        directory mask = 0750            # 创建目录时的权限掩码,权限为

注意:

1.       此处使用root用户作为共享用户,仅为测试所用,实际生产环境或公共用机,应使用其他用户,不可使用root用户。

2.       这里%S通配符可以扩展成实际的共享名。这样root用户共享的注释将是 “Home Directories for root”。

3.       此处未定义”path” , 每个用户的共享目录为该用户在solais内的home目录内,通常为”/export/home/username”, root用户则为 根目录”/” , 因此使用root用户为文件共享用户,对系统安全有极大威胁

四、解决共享文件夹在windows下新建文件名不能为中文的问题

在smb.conf的[global]节,加上:
unix charset = GBK
dos charset = GBK
display charset = GBK

即可

smb.conf范例


五、Solaris 访问Windows共享资源

1.       查询网络上的Samba服务器

        # /usr/sfw/bin/findsmb

每个找到的服务器都会显示其地址、NetBIOS 名称、工作组名称、操作系统、以及 SMB 服务器版本。

2.       列出Samba服务器上的可用资源

        # /usr/sfw/bin/smbclient -L <hostname>

如果是 user共享方式,就要加“-U <user>”选项如下。
        # /usr/sfw/bin/smbclient -L <hostname> -U <user>
        Password: <password>

如果是 share共享方式,可以不必理会用户和密码,要求输入密码时直接回车即可。

3.       连接Samba共享

        # /usr/sfw/bin/smbclient //<hostname>/<share> [-U <username>]

例如要访问上文中的share共享时,可用
        # /usr/sfw/bin/smbclient //hostname/homes

       

要访问上文中的user共享时,可用
        # /usr/sfw/bin/smbclient //hostname/username -U username
        Password: < username_password>

        Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.25a]
        smb:>

             

连接后,就能象FTP用户一样上传和下载文件。用put表示上传,用get表示下载。键入help获得可用的命令列表。