LINUX-SAMBA服务配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chenbin.blog.51cto.com/945033/346188

SAMBA服务的配置。

SAMBA简介

NFS只能实现在linux和unix系统之间实现文件共享,而CIFS(公共因特网文件系统)只能实现windows系统之间的文件共享。那么linux或unix系统怎么和windows系统之间共享文件呢?这就要用到SAMBA服务器了,SAMBA服务器能真正实现在不同主机、不同系统之间的文件共享。

 

Samba核心有两守护进程:

smbd:监听139端口,实现主机之间的文件和打印机的共享。

nmbd:监听137,138端口,实现主机之间可以利用NetBios名互相访问。

SAMBA安装

配置IP地址:

[root@rhel3 ~]# ifconfig eth0 192.168.100.30 netmask 255.255.255.0

安装软件:

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-common-3.0.33-3.7.el5.i386.rpm

提供samba的配置文件和语法检验工具,服务器和客户端都要安装。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-client-3.0.33-3.7.el5.i386.rpm

客户端软件。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/perl-Convert-ASN1-0.20-1.1.noarch.rpm         //在安装samba服务器软件时要先安装此软件。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/perl-Convert-ASN1-0.20-1.1.noarch.rpm         //安装samba前要装上这个软件。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-3.0.33-3.7.el5.i386.rpm

服务器端软件。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/xinetd-2.3.14-10.el5.i386.rpm

安装下面的网页配置软件时要先把xinetd软件先装上。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-swat-3.0.33-3.7.el5.i386.rpm

samba的WEB配置。这个最后安装。

 

SAMBA服务配置文件详解。

[global]

 

# ----------------------- Network Related Options -------------------------

 

        workgroup = MYGROUP

设置工作组名称。

        server string = Samba Server Version %v

设置服务器描述。

;       netbios name = MYSERVER

设置NetBios名称。

;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

后面可以跟接口或IP地址,如果服务器不想用默认的IP地址时或想用多个IP地址时设置 此项。

;       hosts allow = 127. 192.168.12. 192.168.13.

设置允许访问主机的IP地址。默认注释,表示允许所有主机访问。

# --------------------------- Logging Options -----------------------------

;       log file = /var/log/samba/%m.log

设置日志文件的存放位置,服务器会每个用户保存一个日志文件,%m表示使用用户访问的NetBios名来命令日志文件。

;       max log size = 50

指定日志文件的大小,单位(KB)

# ----------------------- Standalone Server Options ------------------------

        security = share

设置Samba共享安全级别:

share: 共享级别,服务器不对客户机进行身份验证。

user: 用户级别,服务器对客户机进行身份验证。

server: 服务器级别,Samba服务器必须通过另一台服务器对客户机进行身份验证。如果设置为此值,需另加一行:password Server = IP才行。

domain: 域级别,Samba服务器要通过windows server的域控制器对客户机进行身份验证,同样,如果设置为此值,需另加一行:password Server = IP才行。

        passdb backend = tdbsam

指定Samba服务器对用户帐户和密码的管理方式。一般默认即可。

# ----------------------- Browser Control Options ----------------------------

;       local master = no

如果不想Samba服务器成为局域网内的主浏览服务器,此项选择no.

;       os level = 33

设置刻服务器在局域网内访问的优先级。

;       preferred master = yes

使Samba启动时选择一个本地浏览器,并给它获得选择较高的机会。

#----------------------------- Name Resolution -------------------------------

 

;       wins support = yes

是否支持WINS服务器,Samba可以成为WINS服务器,也可以成为WINS客户端,但不能两者兼得。

;       wins server = w.x.y.z

WINS服务器地址。

;       wins proxy = yes

表示一个非WINS用户通知Samba响应名称解析,本身不为客户端提供查询。

;       dns proxy = yes

同上。

# --------------------------- Printing Options -----------------------------

        load printers = yes

设置是否允许打印机共享,并加裁打印机。

        cups options = raw

指定打印机使用的方式。

;       printcap name = /etc/printcap

设置打印机配置文件的位置。

;       printcap name = lpstat

;       printing = cups

设置打印系统类型,一般默认。只有在打印系统不是标准系统时才指定。

 

#============================ Share Definitions ================

 

[homes]

        comment = Home Directories

描述信息。

        browseable = no

设置其他用户是否可以浏览此共享文件。

        writable = yes

设置此用户是否可写。

       valid users = %S

              设置可访问的用户和组。多个用户用逗号分开,指定组时要在组名前加@。

              invalid users = 用户名/组名

设置不能访问的用户和组,用法同上。

 

Samba定义的变量:

 

%S  当前服务器名。

%P  当前服务器的根目录。

%u  当前服务器的用户名。

%g  当前用户所在的主工作组。

%U  当前对话的用户名。

%G 当前对话的用户我主工作组。

%H 当前服务器用户的home目录。

%v  Samba服务器的版本号。

%h  运行Samba服务器的主机名。

%m 客户机的NetBios名。

%L  服务器的NetBios名。

%M 客户机的主机名。

%N  NIS服务器名。

%p  NIS服务器的Home目录。

%R  所采用的服务器等级。

%d  当前服务进程的ID。

%a  客户机和结构。

%I   客户机的IP。

%T  当前日期和时间。

SAMBA基于共享的简单配置。

编辑配置文件:

[root@rhel3 ~]# vi /etc/samba/smb.conf

# ----------------------- Standalone Server Options ------------------------

        security = share    //不需要用户名和密码的共享模式。

        passdb backend = tdbsam

 

下面是共享目录和权限的设置:(在最后添加)

        [share]

       comment = linux share

        path = /rhel3

        public = yes

        writable = yes

        printable = no

        write list = +staff

如果共享目录是复制例子的,别忘了把前面的;去掉哦!如果还不能访问那就是防火墙在捣乱了。

 

[root@rhel3 ~]# mkdir /rhel3

[root@rhel3 ~]# touch /rhel3/linux.txt

[root@rhel3 ~]# vi /rhel3/linux.txt

This is linux server!

查看一下文件夹的权限:

[root@rhel3 ~]# ll /

drwxr-xr-x   2 root root  4096 Jun  8 21:56 rhel3

因为在共享时设置的是可写的,而在这里除了root用户其他人是没有权限写入,所有还是不能写入,修改一下:

[root@rhel3 ~]# chmod 777 /rhel3

[root@rhel3 ~]# ll /

drwxrwxrwx   2 root root  4096 Jun  8 21:56 rhel3

权限已经修改完成。

[root@rhel3 ~]# service smb restart

现在来测试一下:

windows系统在运行里输入:

 

 

 

linux系统:

[root@rhel2 ~]# mount //192.168.100.30/share /mnt      //mount 后面跟主机名或IP地址,后面是共享名。最后跟挂载点。

Password:           //这里不需要输入密码。

[root@rhel2 ~]# ls /mnt

liunx.txt

 

使用smbclient:

[root@rhel2 ~]# smbclient //192.168.100.30/share         //smbclient后面跟共享主机名或IP地址再加上共享名。

Password:

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.7.el5]

Server not using user level security and no password supplied.

从这里也可以看到服务器是没有使用身份验证的。

smb: \> help

?              altname        archive        blocksize      cancel         

case_sensitive cd             chmod          chown          close         

del            dir            du             exit           get           

getfacl        hardlink       help           history        lcd           

link           lock           lowercase      ls             mask          

md             mget           mkdir          more           mput          

newer          open           posix          posix_open     posix_mkdir   

posix_rmdir    posix_unlink   print          prompt         put           

pwd            q              queue          quit           rd            

recurse        reget          rename         reput          rm            

rmdir          showacls       setmode        stat           symlink       

tar            tarmode        translate      unlock         volume        

vuid           wdel           logon          listconnect    showconnect   

!            

这里显示的是一些客户端使用的命令。如:

smb: \> dir

  .                                   D        0  Wed Jun  9 14:42:23 2010

  ..                                  D        0  Wed Jun  9 14:41:23 2010

  liunx.txt                                   22  Wed Jun  9 14:42:23 2010

 

                61880 blocks of size 65536. 25838 blocks available

 

因为有写的权限,所以写个文件试试:

smb: \> mkdir rhel2

smb: \> dir

  .                                   D        0  Wed Jun  9 15:43:18 2010

  ..                                  D        0  Wed Jun  9 14:41:23 2010

  liunx.txt                                   22  Wed Jun  9 14:42:23 2010

  rhel2                               D        0  Wed Jun  9 15:43:18 2010

 

                61880 blocks of size 65536. 25838 blocks available

 

没问题,可以写入。下载文件:

smb: \> get liunx.txt /share.txt              //get后面第一个参数是远程服务器的文件名,第二个参数是保存到本地的文件名。

getting file \liunx.txt of size 22 as /share.txt (0.2 kb/s) (average 0.2 kb/s)

smb: \> q            //退出

[root@rhel2 ~]# ls /

bin      dev   lib         misc  opt   sbin       srv  usr

boot     etc   lost+found  mnt   proc  selinux    sys  var

chenbin  home  media       net   root  share.txt  tmp

 

[root@rhel2 ~]# cat /share.txt

This is linux server!

没问题,关于每个命令的使用这里就不一一演示,详细说明可以使用帮助。命令如下:

[root@rhel2 ~]# man smbclient

 

SAMBA基于用户的简单配置。

接着上面的做:

修改配置文件:

# ----------------------- Standalone Server Options ------------------------

        security = user

共享目录也就不改了。因为是基于用户的共享,所以这里需要建立用户。

 

[root@rhel3 ~]# useradd samba           //首先要建立本地用户。

[root@rhel3 ~]# passwd samba            //为本地用户创建密码。(如果只是添加Samba用户,这步可以省略。)

Changing password for user samba.

New UNIX password:

BAD PASSWORD: it is too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@rhel3 ~]# smbpasswd -a samba        //创建Samba用户。创建的用户必须也存在于本地用户数据库中。

New SMB password:

Retype new SMB password:

Added user samba.

 

[root@rhel3 ~]# service smb restart

 

可以测试一下samba的配置文件。如下:

 

 

测试:

在windows系统下:

因为连接过了,现在连接的话系统不提示输入用户名和密码了,清除一下:在命令提示符下操作:

D:\Users\chenbin>net use              //查看远程连接。

会记录新的网络连接。

 

 

状态       本地        远程                      网络

 

-------------------------------------------------------------------------------

OK                     \\192.168.100.30\IPC$     Microsoft Windows Network

OK                     \\RHEL3\IPC$              Microsoft Windows Network

命令成功完成。

 

D:\Users\chenbin>net use \\192.168.100.30\IPC$ /delete

\\192.168.100.30\IPC$ 已经删除。

D:\Users\chenbin>net use \\RHEL3\IPC$ /delete

\\RHEL3\IPC$ 已经删除。

再连接:

 

打开后如下图:

 

 

出现输入用户名和密码对话框,输入后确定。

 

 

出现了共享文件夹。samba目录是一个用户目录,后面再说明。关于权限问题这里这不测试了。

在windows下为了方便,可以使用网络映射,在本地映射一个网络磁盘,这样只要访问这个磁盘就可以访问共享文件了,也省去了每次输入地址,用户名和密码。如下:

 

 

接下来选择一个共享目录:

 

 

完成后,在资源管理器里会多出一个Z盘,双击这个磁盘就能访问共享文件了,很方便,如果不想用了,只要在这个磁盘上右击-属性-断开。

 

接下来在linux系统下测试:

列出共享目录:

 

 

连接:

 

关于用法就不演示了。

本文出自 “放飞梦想” 博客,请务必保留此出处http://chenbin.blog.51cto.com/945033/346188


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。