samba_samba 服务器 - CSDN
samba 订阅
Samba
信息
操作系统
Windows
开发语言
C/C++
开源协议
GPLv3
Samba
Samba ,是种 自由软件 ,用来让UNIX系列的 操作系统 与 微软 Windows 操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结。在目前的版本(v3),不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的 网域 、扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。 Samba是许多服务以及协议的实现,其包括 TCP/IP 上的 NetBIOS ( NBT )、SMB、 CIFS (SMB的增强版本)、 DCE/RPC 或者更具体来说 MSRPC (网络邻居协议套件)、一种 WINS服 务器(也被称作NetBIOS Name Server(NBNS))、NT 域协议套件(包括NT Domain Logons、Secure Accounts Manager(SAM)数据库、Local Security Authority(LSA)服务、NT-style打印服务(SPOOLSS)、 NTLM 以及近来出现的包括一种改进的Kerberos协议与改进的轻型目录访问协议( LDAP )在内的Active Directory Logon服务)。以上这些服务以及协议经常被错误地归类为NetBIOS或者SMB。Samba也能够用于共享打印机。 Samba能够为选定的Unix目录(包括所有子目录)建立网络共享。该功能使得Windows用户可以像访问普通Windows下的文件夹那样来通过网络访问这些Unix目录。
收起全文
精华内容
参与话题
  • samba安装及使用

    万次阅读 2018-08-23 01:40:44
    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供...

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

    1.samba的作用
    samba是一款软件,主要提供cifs协议(基于文件系统传输)
    2.samba的安装与启用
    环境:服务端:172.25.8.11 客户端:172.25.8.10
    (1)在服务端

    yum install samba samba-client.x86_64 samba-common -y
    systemctl start smb
    systemctl stop firewalld.service
    samba的基本信息
    主配置文件: vim /etc/samba/smb.conf      
    端口:139/tcp 139/udp 445/tcp 445/udp
    systemctl restart smb.service
    
    vim /etc/samba/smb.conf
     89         workgroup = westos     ##工作组的设定
     90         server string = hello world  ##全局共享信息
     91         hosts deny = 172.25.8.10     ##用户黑名单
     92         hosts allow = 172.25.8.11    ##用户白名单
    systemctl restart smb.service
    测试 :客户端  172.25.8.10  
    yum install smaba-client -y
    smbclient -L //172.25.8.11       ##没有密码直接回车 匿名登陆

    黑名单打开 客户端无法访问

    把白名单打开

    本地用户的建立

    在服务端 172.25.8.11 
    samba用户必须是本地用户
    useradd westos
    useradd lee
    smbpasswd -a westos
    smbpasswd -a lee
    pdbedit -L  ##列出samba用户
    pdbedit -x lee  ##删除samba用户
    setsebool -P samba_enable_home_dirs on ###给家目录权限,/etc/samba/smb.conf的30行
    
    测试  虚拟机ip 172.25.8.10
    smbclient -L //172.25.8.10 -U westos    ##输入密码


     

    在smb下命令与linux不同,为了方便操作我们通常将其挂载后使用
    mount //172.25.8.10/westos /mnt -o username=westos,password=westos
    客户端永久挂载 
    vim /etc/fstab
    //172.25.8.11/westos /mnt cifs defaults,username=westos,password=westos 0 0

    自定义共享目录

    mkdir /westos
    semanage fcontext -a -t samba_share_t '/westos(/.*)?' ##开放当前目录的selinux安全上下文
    安全上下文查看   ls -dZ 目录
    restorecon -FvvR /westos/
    vim /etc/samba/smb.conf
    [DATA]
    comment = westos     ##描述
    path = /westos     ##共享目录
    systemctl restart smb
    touch /westos/aa
    


    测试效果  在客户端 172.25.8.10

    当目录是系统目录时

    IP 172.25.8.11 服务端
    vim /etc/samba/smb.conf 
            [system]
            comment = file
            path = /mnt
    setsebool -P samba_export_all_ro on
    systemctl restart smb.service
    
    
    测试  客户端  172.25.8.10 
    smbclient  -L //172.25.8.11 -U westos
    

    匿名用户登陆
    vim /etc/samba/smb.conf
     124 map to guest = bad user
     321         [westos]
     322         comment = westos
     323         path = /westos
     324         guest ok = yes                              ###匿名用户可以登陆
     systemctl restart smb
    
    测试  IP:172.25.8.250
     mount //172.25.254.125/westos  /mnt/ -o username=guest   ##直接回车
     df



    权限控制
    IP 172.25.8.11 服务端

     chmod 777 /westos
     setsebool -P samba_export_all_rw on
     vim /etc/samba/smb.conf
     writable = yes | no                           ###是否开启写权限(开启所有用户都可以写)
    把上面的writable = yes | no注释掉,在测试下面的情况
     write list = westos                            ###给dream写的权限
     write list = +westos                           ###给dream组写的权限
     admin users = westos                           ###设定当前共享的root为dream
     valid users = @westos                         ###设定当前共享的有效用户组
     browseable = yes | no                         ###当前共享是否隐藏
    
    测试: IP 172.25.8.10 客户端
    mount //172.25.8.11/westos /mnt/ -o username=westos,password=westos



    samba多用户挂载

    在客户端  172.25.8.10 
     yum install cifs-utils.x86_64 -y
     vim /root/sambapasswd
     username=westos
     password=westos
    
    chmod 600 /root/sambapasswd
    mount -o credentials=/root/sambapasswd,sec=ntlmssp,multiuser //172.25.8.11/westos /mnt/


     

    展开全文
  • Linux samba的配置和使用

    万次阅读 多人点赞 2018-08-24 02:30:21
    在最近学习FFmpeg的过程中自己使用了VMware Workstation安装的Linux(CentOS6)开发环境,在环境的搭建过程中需要使用samba,其实在日常工作中也经常使用samba,只是自己很少去亲自操作,而这次自己从头开始搭环境时...

    Linux samba的配置和使用

    背景

    在最近学习FFmpeg的过程中自己使用了VMware Workstation安装的Linux(CentOS6)开发环境,在环境的搭建过程中需要使用samba,其实在日常工作中也经常使用samba,只是自己很少去亲自操作,而这次自己从头开始搭环境时遇到了一些问题,因此打算研究一下samba的常规使用方法和常见问题的解决。

    samba是什么

    samba是什么?能干什么?什么场合需要用到它?

    1. samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。
    2. Linux对于开发来说是一个非常好的系统,但是人机友好不如windows,我就通常在windows上用sourceinsight编辑代码,然后在Linux端编译运行,而且经常需要把音视频从Linux和windows端互相拷贝,这时候Samba就显得很方便了。

    samba怎么安装

    我用的系统是CentOS,安装软件一般使用yum(全称为 Yellow dog Updater, Modified)包管理器,yum基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

    • 切换到root执行安装命令
    [root@localhost]#yum install samba -y

    说明:-y的意思是,在安装过程中的所有提问都填“yes”
    *扩展:yum的其他命令

    [root@localhost]#yum list samba            //列出软件包的信息
    [root@localhost]#yum remove samba          //卸载软件包
    [root@localhost]#yum check-update samba    //检查是否有可更新的软件包
    [root@localhost]#yum update samba          //更新samba软件包

    samba怎么配置

    • 申请一个新的账号(当然也可以不用申请,使用默认的也可以)例如heijunma
    [root@localhost william]# useradd heijunma
    [root@localhost william]# passwd heijunma

    申请一个新的账户,密码必须设置,否者ssh无法登陆
    当需要删除一个账户时可以按如下方式执行,注意加 -r才能删除彻底,不加-r仅能删除 /etc/passwd 、/etc/group、/etc/shadow、/etc/gshadow四个文件内的账户信息,但是/home/下的主目录信息不能删除,-r才能彻底删除。

    [root@localhost william]# userdel -r heijunma
    • 配置samba的配置文件,用vim 打开smb.conf
    [root@localhost heijunma]# vim /etc/samba/smb.conf

    smb.conf的配置项说明如下:

    Samba的主配置文件为/etc/samba/smb.conf
    
    主配置文件由两部分构成
    
        Global Settings (55-245行)
    
      该设置都是与Samba服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的。
    
        Share Definitions (246-尾行)
    
      该设置针对的是共享目录个别的设置,只对当前的共享资源起作用。
    
    全局参数:
    
    #==================Global Settings ===================
    [global]
    
    config file = /usr/local/samba/lib/smb.conf.%m
    说明:config file可以让你使用另一个配置文件来覆盖缺省的配置文件。如果文件不存在,则该项无效。这个参数很有用,可以使得samba配置更灵活,可以让一台 samba服务器模拟多台不同配置的服务器。比如,你想让PC1(主机名)这台电脑在访问Samba Server时使用它自己的配置文件,那么先在/etc/samba/host/下为PC1配置一个名为smb.conf.pc1的文件,然后在 smb.conf中加入:config file = /etc/samba/host/smb.conf.%m。这样当PC1请求连接Samba Server时,smb.conf.%m就被替换成smb.conf.pc1。这样,对于PC1来说,它所使用的Samba服务就是由 smb.conf.pc1定义的,而其他机器访问Samba Server则还是应用smb.conf。
    
    workgroup = WORKGROUP
    说明:设定 Samba Server 所要加入的工作组或者域。
    
    server string = Samba Server Version %v
    说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
    
    netbios name = smbserver
    说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了。
    
    interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
    说明:设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
    
    hosts allow = 127. 192.168.1. 192.168.10.1
    说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反。
    例如:hosts allow=172.17.2.EXCEPT172.17.2.50
    表示容许来自172.17.2.*的主机连接,但排除172.17.2.50
    hosts allow=172.17.2.0/255.255.0.0
    表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
    hosts allow=M1,M2
    表示容许来自M1和M2两台计算机连接
    hosts allow=@pega
    表示容许来自pega网域的所有计算机连接
    
    max connections = 0
    说明:max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。
    
    deadtime = 0
    说明:deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。
    
    time server = yes/no
    说明:time server用来设置让nmdb成为windows客户端的时间服务器。
    
    log file = /var/log/samba/log.%m
    说明:设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。如果pc1、pc2访问过Samba Server,就会在/var/log/samba目录下留下log.pc1和log.pc2两个日志文件。
    
    max log size = 50
    说明:设置Samba Server日志文件的最大容量,单位为kB,0代表不限制。
    
    security = user
    说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。
    1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
    2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
    3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用 Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
    4. domain:域安全级别,使用主域控制器(PDC)来完成认证。
    
    passdb backend = tdbsam
    说明:passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。
    1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
    2.tdbsam: 该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库 可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的 参数很多,我们列出几个主要的。
      pdbedit –a username:新建Samba账户。
      pdbedit –x username:删除Samba账户。
      pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
      pdbedit –Lv:列出Samba用户列表的详细信息。
      pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
      pdbedit –c “[]” –u username:恢复该Samba用户的账号。
    3.ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”
    
    encrypt passwords = yes/no
    说明:是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。
    
    smb passwd file = /etc/samba/smbpasswd
    说明:用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。
    
    username map = /etc/samba/smbusers
    说明:用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯。
    
    guest account = nobody
    说明:用来设置guest用户名。
    
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    说明:用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。
    
    domain master = yes/no
    说明:设置Samba服务器是否要成为网域主浏览器,网域主浏览器可以管理跨子网域的浏览服务。
    
    local master = yes/no
    说明:local master用来指定Samba Server是否试图成为本地网域主浏览器。如果设为no,则永远不会成为本地网域主浏览器。但是即使设置为yes,也不等于该Samba Server就能成为主浏览器,还需要参加选举。
    
    preferred master = yes/no
    说明:设置Samba Server一开机就强迫进行主浏览器选举,可以提高Samba Server成为本地网域主浏览器的机会。如果该参数指定为yes时,最好把domain master也指定为yes。使用该参数时要注意:如果在本Samba Server所在的子网有其他的机器(不论是windows NT还是其他Samba Server)也指定为首要主浏览器时,那么这些机器将会因为争夺主浏览器而在网络上大发广播,影响网络性能。
    如果同一个区域内有多台Samba Server,将上面三个参数设定在一台即可。
    
    os level = 200
    说明:设置samba服务器的os level。该参数决定Samba Server是否有机会成为本地网域的主浏览器。os level从0255,winNT的os level是32,win95/98的os level是1。Windows 2000的os level是64。如果设置为0,则意味着Samba Server将失去浏览选择。如果想让Samba Server成为PDC,那么将它的os level值设大些。
    
    domain logons = yes/no
    说明:设置Samba Server是否要做为本地域控制器。主域控制器和备份域控制器都需要开启此项。
    
    logon script = %u.bat
    说明:当使用者用windows客户端登陆,那么Samba将提供一个登陆档。如果设置成%u.bat,那么就要为每个用户提供一个登陆档。如果人比较多, 那就比较麻烦。可以设置成一个具体的文件名,比如start.bat,那么用户登陆后都会去执行start.bat,而不用为每个用户设定一个登陆档了。 这个文件要放置在[netlogon]的path设置的目录路径下。
    
    wins support = yes/no
    说明:设置samba服务器是否提供wins服务。
    
    wins server = wins服务器IP地址
    说明:设置Samba Server是否使用别的wins服务器提供wins服务。
    
    wins proxy = yes/no
    说明:设置Samba Server是否开启wins代理服务。
    
    dns proxy = yes/no
    说明:设置Samba Server是否开启dns代理服务。
    
    load printers = yes/no
    说明:设置是否在启动Samba时就共享打印机。
    
    printcap name = cups
    说明:设置共享打印机的配置文件。
    
    printing = cups
    说明:设置Samba共享打印机的类型。现在支持的打印系统有:bsd, sysv, plp, lprng, aix, hpux, qnx
    
    共享参数:
    #================== Share Definitions ==================
    [共享名]
    
    comment = 任意字符串
    说明:comment是对该共享的描述,可以是任意字符串。
    
    path = 共享目录路径
    说 明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes] 共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目 录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用 户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以 这样写:path = /home/share/%m 。
    
    browseable = yes/no
    说明:browseable用来指定该共享是否可以浏览。
    
    writable = yes/no
    说明:writable用来指定该共享路径是否可写。
    
    available = yes/no
    说明:available用来指定该共享资源是否可用。
    
    admin users = 该共享的管理者
    说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。
    例如:admin users =david,sandy(多个用户中间用逗号隔开)。
    
    valid users = 允许访问该共享的用户
    说明:valid users用来指定允许访问该共享资源的用户。
    例如:valid users = david,@dave@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)
    
    invalid users = 禁止访问该共享的用户
    说明:invalid users用来指定不允许访问该共享资源的用户。
    例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
    
    write list = 允许写入该共享的用户
    说明:write list用来指定可以在该共享下写入文件的用户。
    例如:write list = david,@dave
    
    public = yes/no
    说明:public用来指定该共享是否允许guest账户访问。
    
    guest ok = yes/no
    说明:意义同“public”。
    
    几个特殊共享:
    [homes]
    comment = Home Directories
    browseable = no
    writable = yes
    valid users = %S
    ; valid users = MYDOMAIN\%S
    
    [printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = no
    guest ok = no
    writable = no
    printable = yes
    
    [netlogon]
    comment = Network Logon Service
    path = /var/lib/samba/netlogon
    guest ok = yes
    writable = no
    share modes = no
    
    [Profiles]
    path = /var/lib/samba/profiles
    browseable = no
    guest ok = yes
    
    Samba安装好后,使用testparm命令可以测试smb.conf配置是否正确。使用testparm –v命令可以详细的列出smb.conf支持的配置参数。
    

    配置新创建的用户

    打开smb.cnf 增加一个共享项

    [heijunma]
            comment = heijunma guest share  #共享描述
            path = /home/heijunma       #共享目录
            public = yes                #允许guest用户访问
            writable = yes              #允许在heijunma目录下写入
            directory mask = 0775       #默认创建目录权限 rwxrwxr_x
            create mask = 0775          #默认创建文件权限 rwxrwxr_x
            valid users = heijunma,root  #允许访问该共享的用户
            write list = heijunma,root  #可写入共享的用户列表
            browseable = yes             #该指定共享目录可浏览
            available = yes              #该指定共享资源可使用

    编辑好之后保存,然后运行如下命令重新加载smb.conf,并重启samba

    [root@localhost heijunma]#service smb reload
    Reloading smb.conf file:                                   [  OK  ]
    [root@localhost heijunma]#service smb restart
    Shutting down SMB services:                                [  OK  ]
    Starting SMB services:                                     [  OK  ]
    [root@localhost heijunma]#service nmb restart
    Shutting down NMB services:                                [  OK  ]
    Starting NMB services:                                     [  OK  ]

    接着关闭防火墙SElinux,这种关闭重启Linux后又会开启

    [root@localhost heijunma]#service iptables stop
    [root@localhost heijunma]#setenforce 0

    这些弄好之后在win7端映射网络驱动
    在win7端映射网络驱动
    但是输入Linux端heijunma的账户密码却登陆失败
    账户密码都没错,但是登录失败
    原因是因为Linux的用户密码和samba的用户密码并不是一码子事,只是samba的用户必须是Linux的用户,因此需要将heijunma这个账户添加到samba的用户数据库,执行如下命令:

    [root@localhost heijunma]#smbpasswd -a heijunma
    New SMB password:
    Retype new SMB password:
    Added user heijunma.

    设置heijunma在samba中的密码后,即可添加heijunma账户到samba成功,
    此时重新映射网络硬盘即可成功(注意:输入samba的密码登陆):
    成功映射heijunma网络硬盘

    尝试在里面新建文件和文件夹,确认是否有权限,结果新建成功
    这里写图片描述
    再在Linux端查看新建文件及文件夹:
    新建文件夹和文件
    但是我们发现文件夹的权限是 rwxrwxr_x(775),文件的权限是rwxrw_r__(764)跟我们设定的文件夹和文件都是775不一样啊?其实这是因为新版的samba一定要在[global]后面追加文件及文件夹,放在smb.conf最后是无效的我们可以试着改一下,在[global]下面添加文件和文件夹权限
    在global下增加文件和文件夹默认权限
    然后执行:

    [root@localhost heijunma]# service smb reload

    这样在共享目录新建文件和文件夹的权限就都是 775了
    修改Global权限后的新建文件和文件夹

    如此就完成了samba的基本配置,可以开始下一步的学习了!

    展开全文
  • 在嵌入式系统开发应用平台中,tftp、nfs和samba服务器是最常用的文件传输工具,tftp和nfs是在嵌入式Linux开发环境中经常使用的传输工具,samba则是Linux和Windows之间的文件传输工具。 samba是模仿Windows网上邻居...

    在嵌入式系统开发应用平台中,tftp、nfs和samba服务器是最常用的文件传输工具,tftp和nfs是在嵌入式Linux开发环境中经常使用的传输工具,samba则是Linux和Windows之间的文件传输工具。

    samba是模仿Windows网上邻居的SMB的通讯协议,将Linux操作系统“假装成”Windows操作系统,通过网上邻居的方式来进行文件传输的。

     

    虚拟机版本:VMware10

    Linux操作系统版本:Red Hat Enterprise Linux 5

     

    Samba服务器介绍

    Samba是在Linux系统上实现SMB(Session MessageBlock)协议的一个免费软件,以实现文件共享和打印机服务共享。 

    Samba服务器组件

    samba有两个主要的进程smbd和nmbd。smbd进程提供了文件和打印服务,而nmbd则提供了NetBIOS名称服务和浏览支持,帮助SMB客户定位服务器,处理所有基于UDP的协议。 

    Samba服务器相关的配置文件

    1. /etc/samba/smb.conf 
      这是samba的主要配置文件,基本上仅有这个文件,而且这个配置文件本身的说明非常详细。主要的设置包括服务器全局设置,如工作组、NetBIOS名称和密码等级,以及共享目录的相关设置,如实际目录、共享资源名称和权限等两大部分。
    2. /etc/samba/lmhosts 
      早期的 NetBIOS name 需额外设定,因此需要这个 lmhosts 的 NetBIOS name 对应的 IP 檔。 事实上它有点像是 /etc/hosts 的功能!只不过这个 lmhosts 对应的主机名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!目前 Samba 预设会去使用你的本机名称 (hostname) 作为你的 NetBIOS name,因此这个档案不设定也无所谓。
    3. /etc/sysconfig/samba 
      提供启动 smbd, nmbd 时,你还想要加入的相关服务参数。
    4. /etc/samba/smbusers 
      由于 Windows 与 Linux 在管理员与访客的账号名称不一致,例如: administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系,可使用这个档案来设定
    5. /var/lib/samba/private/{passdb.tdb,secrets.tdb} 
      管理 Samba 的用户账号/密码时,会用到的数据库档案;
    6. /usr/share/doc/samba-<版本> 
      这个目录包含了 SAMBA 的所有相关的技术手册喔!也就是说,当你安装好了 SAMBA 之后,你的系统里面就已经含有相当丰富而完整的 SAMBA 使用手册了!值得高兴吧! ^_^,所以,赶紧自行参考喔!

    至于常用的脚本文件案方面,若分为服务器与客户端功能,则主要有底下这几个数据:

    • /usr/sbin/{smbd,nmbd}:服务器功能,就是最重要的权限管理 (smbd) 以及 NetBIOS name 查询 (nmbd) 两个重要的服务程序;

    • /usr/bin/{tdbdump,tdbtool}:服务器功能,在 Samba 3.0 
      以后的版本中,用户的账号与密码参数已经转为使用数据库了!Samba 使用的数据库名称为 TDB (Trivial DataBase)。 
      既然是使用数据库,当然要使用数据库的控制指令来处理啰。tdbdump 可以察看数据库的内容,tdbtool 则可以进入数据库操作接口直接手动修改帐密参数。不过,你得要安装 tdb-tools 这个软件才行;

    • /usr/bin/smbstatus:服务器功能,可以列出目前 Samba 的联机状况, 包括每一条 Samba 联机的 PID, 分享的资源,使用的用户来源等等,让你轻松管理 Samba 啦;

    • /usr/bin/{smbpasswd,pdbedit}:服务器功能,在管理 Samba 的用户账号密码时, 早期是使用 smbpasswd 这个指令,不过因为后来使用 TDB 数据库了,因此建议使用新的 pdbedit 指令来管理用户数据;

    • /usr/bin/testparm:服务器功能,这个指令主要在检验配置文件 smb.conf 的语法正确与否,当你编辑过 smb.conf 
      时,请务必使用这个指令来检查一次,避免因为打字错误引起的困扰啊!

    • /sbin/mount.cifs:客户端功能,在 Windows 上面我们可以设定『网络驱动器机』来连接到自己的主机上面。在 Linux 上面,我们则是透过 mount (mount.cifs) 来将远程主机分享的档案与目录挂载到自己的 Linux 主机上面哪!

    • /usr/bin/smbclient:客户端功能,当你的 Linux主机想要藉由『网络上的芳邻』的功能来查看别台计算机所分享出来的目录与装置时,就可以使用 smbclient来查看啦!这个指令也可以使用在自己的 SAMBA 主机上面,用来查看是否设定成功哩!

    • /usr/bin/nmblookup:客户端功能,有点类似 nslookup 啦!重点在查出 NetBIOS name 就是了

    • /usr/bin/smbtree:客户端功能,这玩意就有点像 Windows 
      系统的网络上的芳邻显示的结果,可以显示类似『靠近我的计算机』之类的数据, 能够查到工作组与计算机名称的树状目录分布图!

     

    安装Samba

     

    首先确认一下自己的Linux是否安装了Samba,使用命令:

    [root@localhost ~]# rpm -qa | grep samba

    其中:samba、samba-common、samba-client三个程序是必须的。

    如果没有安装,有两种方式可以安装:

    第一种方式:yum安装

    yum是一个集与查找,安装,更新和删除程序的Linux软件。它运行在RPM包兼容的Linux发行版本上,如:RedHat、Fedora、SUSE、CentOS、Mandriva。

    yum install -y samba

    第二种方式:安装包安装

    安装包都在光盘里,首先需要挂载:

    [root@localhost ~]# mount /dev/cdrom /mnt

    这个时候,会出现一个问题:

    mount: block device /dev/sr0 is write-protected, mounting read-only 

    提示信息说,虚拟机挂着光驱光驱时提示只读。用以下命令可解决该报错:

    mount -o remount,rw /dev/cdrom /mnt

    此时,我们会发现,原本空的文件夹/mnt现在多了很多的文件。

    在/mnt/Server文件夹中,会能找到关于Samba的安装包:

    找到安装包之后,就是安装Samba了(只需要安装自己没有的那个就行了)。使用命令:

    rpm samba-3.0.25b-0.el5.4.i386.rpm
    rpm samba-client-3.0.25b-0.el5.4.i386.rpm
    rpm samba-commons-3.0.25b-0.el5.4.i386.rpm

    安装完之后,再使用命令验证一下是否安装完成:

    [root@localhost ~]# rpm -qa | grep samba

     

    配置Samba

    修改配置文件

    samba服务器最主要的配置文件其实只有一个,就是/etc/samba/samba.conf,这个配置文件可以分为两个部分,一个部分是全局参数,一部分是共享资源相关参数。

    #1.全局部分参数设置:
    [global]
            #与主机名相关的设置
            workgroup = zkhouse  <==工作组名称
            netbios name = zkserver   <==主机名称,跟hostname不是一个概念,在同一个组中,netbios name必须唯一
            serverstring = this is a test samba server <==说明性文字,内容无关紧要
            #与登录文件有关的设置
            log file = /var/log/samba/log.%m   <==日志文件的存储文件名,%m代表的是client端Internet主机名,就是hostname
            max log size = 50      <==日志文件最大的大小为50Kb
            #与密码相关的设置
            security = share       <==表示不需要密码,可设置的值为share、user和server
            passdb backend = tdbsam
            #打印机加载方式
            load printer = no <==不加载打印机
    -----------------------------------------------------------
    #2.共享资源设置方面:将旧的注释掉,加入新的
    #先取消[homes]、[printers]的项目,添加[temp]项目如下
    [temp]              <==共享资源名称
            comment = Temporary file space <==简单的解释,内容无关紧要
            path = /tmp     <==实际的共享目录
            writable = yes    <==设置为可写入
            browseable = yes   <==可以被所有用户浏览到资源名称,
            guest ok = yes    <==可以让用户随意登录

    也就是说,将上面“#2共享资源设置方面”加入到配置文件的最后即可。

    添加用户并设置密码

    设置账号用于登录samba服务器,同时并设置密码。具体命令:

    [root@localhost ~]# useradd sambauser
    [root@localhost ~]# smbpasswd -a sambauser
    New SMB password:
    Retype new SMB password:

    重启Samba服务器

    [root@localhost ~]# /etc/init.d/smb restart

    如果这段命令无法运行,就是Samba没有正确安装的原因。

     

    登录Samba

    在Windows和Linux网络都畅通的情况下,在Windows下登录Samba服务器。使用命令查看Samba的IP地址:

    [root@localhost ~]# ifconfig

    在Windows的运行,输入\\223.3.119.170(Samba对应的IP地址):

    这个时候会弹出登录界面,直接输入之前设置的登录账号和密码就行了。

     

    问题汇总及补充

    之前Samba的安装和配置都是一步一步来的,没有什么问题。但是很多情况下,就是最后在Windows的运行中,输入了\\IP地址之后,没有任何反应。这是最麻烦的地方,因为完全不知道是什么原因导致的。下面提供几个可能出问题的地方:

    网络选择

    在配置Samba服务器的时候,网络选择为bridge桥连接。

    这是因为:要保证Linux下的IP和Windows下的IP处于同一网段中,并且保证相互可以ping通。

    怎么验证?

    在Windows的命令行中,输入命令ipconfig:

    同时在Linux中输入命令ifconfig(两个命令不一样,需要注意):

    可以看到:两个IP地址223.3.119.239和223.3.119.170之间前3个都是一样的,只有最后一个不同,这就保证了在同一网段。如果前3位不同,可在Linux中使用命令:

    [root@localhost ~]# ifconfig eth0 223.3.119.130

    只需要保证只有最后一个不同即可。

    接下来验证Windows和Linux之间的ping通,在Windows命令行中输入ping Linux的IP地址

    结果如果不是timeout,就代表两者之间ping通。

    防火墙问题

    如果防火墙不关闭,Windows和Samba之间的连通可能会被阻挡。

    Windows上关闭防火墙:控制面板->系统和安全->Windows防火墙->打开或关闭Windows防火墙;

    Linux上关闭防火墙:

    [root@localhost ~]# setenforce 0
    [root@localhost ~]# service iptables stop

    记得要重启Samba服务器。

    权限问题

    可能会出现权限不够的问题,修改你想要的那个文件的权限。

    [root@localhost ~]# chmod 777 /home

    无法访问

    如果用windows访问samba,跳出以下对话框的错误:

    无法访问。您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限。

    不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接,然后再试一次……或者直接重启Windows。

    怎么断开连接(即退出Samba服务器)呢?

    在Windows的命令行中输入:

    net use * /delete /y

    自动连接

    使每次打开Linux自动运行smba服务器:

    在终端中输入setup->system service->找到smb,按下空格,便可选中->退出完成(注意切换用tab键)。

     

    如果还有什么问题,也可以参考连接:【Linux】samba服务器的安装和配置159 samba 无法访问。您可能没有权限使用网络资源 net use命令

     

    展开全文
  • Samba使用大全(绝对经典)

    万次阅读 2018-12-19 17:26:24
    Samba使用大全(绝对经典) 转载于:http://www.360doc.com/content/16/0817/17/8335678_583901757.shtml (一)samba服务器 Samba协议基础 在NetBIOS 出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印...

    Samba使用大全(绝对经典)

    转载于:http://www.360doc.com/content/16/0817/17/8335678_583901757.shtml

    (一)samba服务器

    Samba协议基础

    在NetBIOS 出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协议, Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们Lan Manager和Windows NT服务器系统中,实现不同计算机之间共享打印机、串行口和通讯抽象(如命名管道、邮件插槽等)。

    随着 Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为 CIFS(Common Internet File System),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。

    因此,为了让Windows和Unix计算机相集成,最好的办法即是在Unix计算机中安装支持SMB/CIFS协议的软件,这样Windows客户就不需要更改设置,就能如同使用Windows NT服务器一样,使用Unix计算机上的资源了。Samba是用来实现SMB的一种软件,它的工作原理是,让NETBIOS(Windows95网络邻居的通讯协议)和SMB(Server Message Block)这两个协议运行于TCP/IP通信协议之上,并且使用Windows的NETBEUI协议让Unix计算机可以在网络邻居上被Windows 计算机看到。它的功能有:

    1.共享Linux磁盘给Win95/NT

    2.共享Win95/NT磁盘给Linux机器

    3.共享Linux打印机给win95/NT

    4.共享win95/NT打印机给Linux机器。

    同时它的文件服务功能比NT系统还高,而且在Windows2000之前就提供了用户磁盘空间限制的功能。

    Samba的配置

    在我写这篇文章的时候,Samba的版本已经到了2.2.2了,需要的可以通过ftp://samba.org/pub/samba/Binary_Pa...011013.i386.rpm得到最新的rpm安装包。然后执行rpm -Uvh samba-2.2.2-20011013.i386.rpm来安装或者升级它。安装完后,可以看见/etc/samba这么一个目录,里面存放和 Samba相关的一些文件,最主要的是smb.conf,现在根据配置文件讲讲它的配置选项:

    全局设置:

    workgroup = MYGROUP

    定义该Samba服务器所在的工作组或者域(如果下面的security=domain的话)。

    server string = MY Samba Server

    设定机器的描述,当我们通过网络邻居访问的时候可以在备注里面看见这个内容,而且还可以使用samba设定的变量。这里说一下samba定义的变量:

    %S = 当前服务名(如果有的话)

    %P = 当前服务的根目录(如果有的话)

    %u = 当前服务的用户名(如果有的话)

    %g = 当前用户说在的主工作组

    %U = 当前对话的用户名

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

    %H = 当前服务的用户的Home目录

    %v = Samba服务的版本号。

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

    %m = 客户机的NETBIOS名称

    %L = 服务器的NETBIOS名称

    %M = 客户机的主机名

    %N = NIS服务器名

    %p = NIS服务的Home目录

    %R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)

    %d = 当前服务进程的ID

    %a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)

    %I = 客户机的IP

    %T = 当前日期和时间

    hosts allow = 网络或者主机

    这里可以设置允许访问的网络和主机IP,比如允许192.168.1.0/24和192.168.2.1/32访问,就用host allow = 192.168.1. 192.168.2.1 127.0.0.1(网络注意后面加”.”号,各个项目间用空格隔开,记得把本机也加进去)

    printcap name = printcapFile

    到printcapFile(一般是/etc/printcap)这个文件中取得打印机的描述信息

    load printers = yes|no

    设定是否自动共享打印机而不用设置下面的[printer]一节的相关东西

    printing = PrintSystemType

    定义打印系统的类型,缺省是lprng,可选项有:bsd, sysv, plp, lprng, aix, hpux, qnx。

    guest account = pcguest

    定义游客帐号,而且需要把这个帐号加入/etc/passwd,不然它就用缺省的nobody

    log file = LogFileName

    定义记录文件的位置LogFileName(一般是用/var/log/samba/%m.log)

    max log size = size

    定义记录文件的大小size(单位是KB,如果是0的话就不限大小)

    security = security_level

    定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:

    share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。

    user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。

    server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。

    domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。

    后面三种安全级都要求用户在本Linux机器上也要系统帐户。否则是不能访问的。

    password server =

    当前面的security设定为server或者domain的时候才有必要设定它。

    password level = n

    这是设定针对一些SMB客户像OS/2之类而设的,这样的系统在发送用户密码的时候,会把密码转换成大写再发送,这样就和samba的密码不一致,这个参数可以设定密码里允许的大写字母个数,这样samba就根据这个数目对接收到的密码进行大小写重组,以重组过的密码尝试验证密码的正确性。n越大,组合的次数就越多,验证时间就越长,安全性也会因此变得越低。例如n=2,用户的密码是abcd,但发送出去其实是ABCD,samba就会把这个ABCD进行大小写重组,组合后的结果可以是: Abcd, aBcd, abCd, abcD, abcd, ABcd, AbCd, AbcD,aBCd,aBcD,abCD。

    所以如果没有必要,就把n定为是零。这样的话samba只尝试两次,一个是接收到的密码,另一个尝试的是这个密码都是小写的情况。

    username level = n

    这个是对于用户名的情况,说明和上面一项类似。

    encrypt passwords = yes|no

    设置是否对密码进行加密,samba本身有一个密码文件/etc/samba/smbpasswd,如果不对密码进行加密则在验证会话期间客户机和服务器之间传递的是明文密码,samba直接把这个密码和Linux里的/etc/samba/smbpasswd密码文件进行验证。但是在Windows 95 OS/R2以后的版本和Windows NT SP3以后的版本缺省都不传送明文密码,要让这些系统能传送明文密码必须在其注册表里更改,比较麻烦,好的方法就是把这里的这个开关设置为yes。

    smb passwd file = smbPasswordFile

    设置存放samba用户密码的文件smbPasswordFile(一般是/etc/samba/smbpasswd)。

    ssl CA certFile = sslFile

    当samba编译的时候支持SSL的时候,需要指定SSL的证书的位置(一般在/usr/share/ssl/certs/ca-bundle.crt)。

    unix password sync = yes|no

    passwd program = /usr/bin/passwd %u

    passwd chat = *New*UNIX*password* %n

    *ReType*new*UNIX*password* %n

    *passwd:*all*authentication*tokens*updated*successfully*

    这三项设置能否从windows的应用程序修改unix系统的用户密码

    username map = UsermapFile

    指定用户映射文件(一般是/etc/samba/smbusers),当我们在这个文件里面指定一行root = administrator admin的时候,客户机的用户是admin或者administrator连接时会被当作用户root看待。

    include = MachineConfFile

    指定对不同机器的连接采用不同的配置文件MachineConfFile(一般为了灵活管理使用/etc/samba/smb.conf.%m,由于采用了samba的变量,把配置文件和客户机的NETBIOS名称关联起来,能很容易地控制这些客户机的权限和设置)。

    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

    这个是网络socket方面的一些参数,能实现最好的文件传输性能。相关的选项还有SO_KEEPALIVE、 SO_REUSEADDR、SO_BROADCAST、IPTOS_LOWDELAY、IPTOS_THROUGHPUT、SO_SNDLOWAT (*)、SO_RCVLOWAT(*),带*号的要指定数值。一般如果在本地网络,就只用IPTOS_LOWDELAY,如果是有一个本地网络的,就用 IPTOS_LOWDELAY TCP_NODELAY,如果是广域网络,就试试IPTOS_THROUGHPUT。

    interfaces = interface1 interface2

    如果有多个网络接口,就必须在这里指定。如interface = 192.168.12.2/24 192.168.13.2/24

    remote browse sync = host(subnet)

    这里指定浏览列表同步信息从哪里取得, 如果用host(比如192.168.3.25)或者整个子网(192.168.5.255)。

     

    ★这里说明一下什么是浏览(Browse):

    在SMB 协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表(例如在Windows下使用网络邻居查看可以访问的计算机),这个机制就被称为浏览(Browse)。虽然SMB协议中经常使用广播的方式,但如果每次都使用广播的方式了解当前的网络资源(包括提供服务的计算机和各个计算机上的服务资源),就需要消耗大量的网络资源和浪费较长的查找时间,因此最好在网络中维护一个网络资源的列表,以方便查找网络资源。只有必要的时候,才重新查找资源,例如使用Windows下的查找计算机功能。

    但没有必要每个计算机都维护整个资源列表,维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的,这些计算机被称为Browser,这些Browser通过记录广播数据或查询名字服务器来记录网络上的各种资源。

    Browser 并不是事先指定的计算机,而是在普通计算机之间通过自动进行的推举产生的。不同的计算机可以按照其提供服务的能力,设置在推举时具备的不同权重。为了保证一个Browser停机时网络浏览仍然正常,网络中常常存在多个Browser,一个为主Browser(Master Browser),其他的为备份Browser。★

     

    remote announce = host(subnet)

    指定这些机器向网络宣告自己,而不是有Browser得到。

    local master = yes|no

    这个参数指定nmbd是否试图成为本地主浏览器,默认值是yes,如果设为no则samba服务器就永远都不会成为本地主浏览器。但即使设置了yes,也不等于samba服务器就会成为本地主浏览器。只是参与本地主浏览器选择。

    os level = n

    n的值是个整数,决定了nmbd是否有机会成为本地广播区域的工作组里的本地主浏览器,默认值是零,零则意味着nmbd失去浏览选择。如果要nmbd更有机会成为本地主浏览器的话,可以设为65。

    domain master = yes|no

    这个参数让nmbd成为一个域浏览器,取得各本地主浏览器的浏览列表,并将整个域的浏览列表递交给各本地主浏览器。

    preferred master = yes|no

    这个参数指定nmbd是否是工作组里的首要的主浏览器,如果指定为yes,nmbd在启动的时候就强制一个浏览选择。

     

    ★Domain master和local master

    工作组和域这两个概念在进行浏览时具备同样的用处,都是用于区分并维护同一组浏览数据的多个计算机。事实上他们的不同在于认证方式上,工作组中每台计算机都基本上是独立的,独立对客户访问进行认证,而域中将存在一个(或几个)域控制器,保存对整个域中都有效的认证信息,包括用户的认证信息以及域内成员计算机的认证信息。浏览数据的时候,并不需要认证信息,Microsoft将工作组扩展为域,只是为了形成一种分级的目录结构,将原有的浏览和目录服务相结合,以扩大Mircrosoft网络服务范围的一种策略。

    工作组和域都可以跨越多个子网,因此网络中就存在两种Browser,一种为 Domain Master Browser ,用于维护整个工作组或域内的浏览数据,另一种为Local Master Browser,用于维护本子网内的浏览数据,它和Domain Master Browser通信以获得所有的可浏览数据。划分这两种Browser 主要是由于浏览数据依赖于本地网广播来获得资源列表,不同子网之间只能通过浏览器之间的交流能力,才能互相交换资源列表。

    但是,为了浏览多个子网的资源,必须使用NBNS名字服务器的解析方式,没有NBNS的帮助,计算机将不能获得子网外计算机的NetBIOS名字。Local Master Browser也需要查询NetBIOS名字服务器以获得Domain Master Browser的名字,以相互交换网络资源信息。

    由于域控制器在域内的特殊性,因此域控制器倾向于被用做Browser,主域控制器应该被用作Domain Master Browser,他们在推举时设置的权重较大。★

     

    preserve case = yes|no

    short preserve case = yes|no

    指定拷贝DOS文件的时候保持大小写,缺省是no

    default case = lower|upper

    所有的DOS文件的缺省是大写还是小写

    case sensitive = yes|no

    大小写敏感,一般是no,不然会出现一些问题。

    共享设置:

     

    ★共享资源:

    每个SMB服务器能对外提供文件或打印服务,每个共享资源需要被给予一个共享名,这个名字将显示在这个服务器的资源列表中。如果一个资源的名字的最后一个字母为$,则这个共享名就为隐藏共享,不能直接表现在浏览列表中,而只能通过直接访问这个名字来进行访问。在SMB协议中,为了获得服务器提供的资源列表,必须使用一个隐藏的资源名字IPC$来访问服务器,否则客户无法获得系统资源的列表。★

     

    共享设置中有个比较奇怪的段:

    [homes],在smb.conf文件中一般没有对这个目录的设定特定内容比如路径等。当客户机发出服务请求时,就在smb.conf文件的其它部分查找友特定内容的服务。如果没有发现这些服务,并且提供了homes段时,那么就搜索密码文件得到用户的Home目录。通过Homes段,Samba可以得到用户的Home 目录并使之共享。下面是这个段的最基本的几个设置。

    [homes]
    
    comment=Home Directory
    
    browseable=no
    
    writable=yes

    比较正常的共享的配置如下例:

    [MyShare]
    
    comment = grind’s file
    
    path = /home/grind
    
    allow hosts = host(subnet)
    
    deny hosts = host(subnet)
    
    writable = yes|no
    
    user = user(@group)
    
    valid users = user(@group)
    
    invalid users = user(@group)
    
    read list = user(@group)
    
    write list = user(@group)
    
    admin list = user(@group)
    
    public = yes|no
    
    hide dot files = yes|no
    
    create mode = 0755
    
    directory mode = 0755
    
    sync always = yes|no
    
    short preserve case = yes|no
    
    preserve case = yes|no
    
    case sensitive = yes|no
    
    mangle case = yes|no
    
    default case = upper|lower
    
    force user = grind
    
    wide links = yes|no
    
    max connections = 100
    
    delete readonly = yes|no

    其中[]里面的MyShare指定共享名,一般就是网络邻居里面可以看见的文件夹的名字。

    comment指的是对改共享的备注。

    path 指定共享的路径,其中可以配合samba变量使用。比如你可以指定path=/data/%m,这样如果一台机器的NETBIOS名字是grind,它访问MyShare这个共享的时候就是进入/data/grind目录,而对于NETBIOS名是glass的机器,则进入/data/glass目录。

    allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。

    writeable指定了这个目录缺省是否可写,也可以用readonly = no来设置可写。

    user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开。

    valid users指定能够使用该共享资源的用户和组。

    invalid users指定不能够使用该共享资源的用户和组。

    read list 指定只能读取该共享资源的用户和组。

    write list指定能读取和写该共享资源的用户和组。

    admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。

    public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的。

    hide dot files指明是不是像unix那样隐藏以“.”号开头的文件。

    create mode指明新建立的文件的属性,一般是0755。

    directory mode指明新建立的目录的属性,一般是0755。

    sync always指明对该共享资源进行写操作后是否进行同步操作。

    short preserve case指明不管文件名大小写。

    preserve case指明保持大小写。

    case sensitive指明是否对大小写敏感,一般选no,不然可能引起错误。

    mangle case指明混合大小写。

    default case指明缺省的文件名是全部大写还是小写。

    force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。

    wide links指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用。

    max connections = n设定同时连接数是n。

    delete readonly指明能否删除共享资源里面已经被定义为只读的文件。

    有两类特殊的共享,分别是光驱和打印机

    光驱的共享设置:

    [cdrom]
    
    comment = grind’s cdrom
    
    path = /mnt/cdrom
    
    public = yes
    
    browseable = yes
    
    root preexec = /bin/mount -t iso9660 /dev/cd0 /mnt/cdrom
    
    root postexec = /bin/umount /mnt/cdrom

    这里root preexec指明了连接时用root的身份运行mount命令,而root postexec则指明了断开时用root身份运行umount,有效实现了对光驱的共享。

    打印机共享的设置:

    [printers]
    
    path = /var/spool/samba
    
    writeable = no
    
    guest ok = yes
    
    printable = yes
    
    printer driver = HP LaserJet 5L

     

    这里printable指明该打印机可以打印, guest ok说明游客也能打印,path指明打印的文件队列暂时放到/var/spool/samba目录下。printer driver的作用是指明该打印机的类型,这样我们在安装网络打印机的时候可以直接自动安装驱动而不必选择。

    添加用户:

    samba 添加用户比较方便,一般是用smbadduser,用法是smbadduser unixid:netid,举个例子:如果你的本机有个叫grind的用户,你用smbadduser grind:grind,这样从网上邻居访问的时候用户名就用grind,而如果你用了smbadduser grind:glass的话,网上邻居访问的时候提供的用户名就是glass而不是grind了。

    关于samba服务端的设置基本就是这些,我想一般应用中所要使用的上面几乎都覆盖到了,所以有些不重要的就省略了,如果要更加详细的信息可以用man smb.conf参考。<

    Samba使用大全(二)-Samba客户端

    使用Samba网络打印:

    使用unix网络打印以前的文章比较少涉及,最近试验了一下,效果还是不错的,现在讲讲基本的实现方法:

    比如你要建立一台网络打印机grind,而打印机对应网络上面的//glass/HPLaserj,所有需要配置的文件有下面几个:

    1./etc/printcap,内容一般为:

    grind:
    
    :sh: #禁止提示的header
    
    :ml=0: #打印的文件的长度下限,
    
    :mx=0: #最大的打印文件大小,0为不限制
    
    :sd=/var/spool/lpd/grind: #打印机的spool目录
    
    :lp=|/usr/bin/smbprint: #打印输出需要的设备名或者管道名
    
    :lpd_bounce=true: #强制lpd守护进程过滤打印文件
    
    :if=/usr/share/printconf/mf_wrapper: #过滤命令文件

    2.smbprint这个一般在安装完smb相关的rpm包以后就有了,主要内容是:

    eval acct_file=$$#
    
    spool_dir=`dirname $acct_file`
    
    config_file=$spool_dir/.config
    
    eval `cat $config_file`
    
    share=`echo $share | sed "s/[]///g"`
    
    if [ "$user" != "" ]; then
    
    usercmd="-U"
    
    else
    
    usercmd=""
    
    fi
    
    if [ "$workgroup" != "" ]; then
    
    workgroupcmd="-W"
    
    else
    
    workgroupcmd=""
    
    fi
    
    if [ "$translate" = "yes" ]; then
    
    command="translate ; print -"
    
    else
    
    command="print -"
    
    fi
    
    cat | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I}
    
    $hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup"
    
    -c "$command" 2>/dev/null

    3.mf_wrapper是一个magic filter文件,是相关的一些过滤规则。内容是:

    MF_RULE_DIR='/usr/share/printconf/mf_rules'

    MF_RULES=$MF_RULE_DIR/mf[[:digit:]][[:digit:]]-*

    TMP_FILE=`mktemp /tmp/printconf.XXXXXX`' 'exit 1

    cat ./mf.cfg $MF_RULES | m4 > $TMP_FILE

    if [ -n "$DEBUG" ]; then

    case "$DEBUG" in

    2)

    DEBUGSTRING="--debug --debug"

    ;;

    3)

    DEBUGSTRING="--debug --debug --debug"

    ;;

    4)

    DEBUGSTRING="--debug --debug --debug --debug"

    ;;

    5)

    DEBUGSTRING="--debug --debug --debug --debug --debug"

    ;;

    *)

    DEBUGSTRING="--debug"

    ;;

    esac

    else

    DEBUGSTRING=""

    fi

    # Run magic filter

    /usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* < /dev/stdin

    RETVAL=$?

    if [ -f $TMP_FILE ]; then

    rm -f $TMP_FILE;

    fi

    ;;

    esac

    else

    DEBUGSTRING=""

    fi

    # Run magic filter

    /usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* < /dev/stdin

    RETVAL=$?

    if [ -f $TMP_FILE ]; then

    rm -f $TMP_FILE;

    fi

    if [[ $RETVAL -eq 0 ]]; then

    TERMINATION=`grep '^[[:space:]]*#[[:space:]]*TERMINATION=' ./mf.cfg | se

    d 's/^[[:space:]]*#[[:space:]]*TERMINATION=//;'`

    if [ -n $TERMINATION ]; then

    echo -n -e $TERMINATION;

    fi

    fi

    同时需要在/var/spool/lpd/grind下面有这么两个文件:mf.cfg和script.cfg。

    mf.cfg的内容是:

    define(TEXTfilter, text ""

    14 )dnl

    define(PSfilter, `filter /usr/share/printconf/util/mf_postscript_wrapper --mfomatic -d lj5gray-75168.foo')dnl

    script.cfg的内容是:

    share="//glass/HPLaserj" #glass机器上面共享的打印机

    hostip="192.168.1.123" #glass这台机器的IP

    user=""

    password=""

    workgroup=""

    translate="no"

    完成这个工作后,启动lpd进程,然后就能用lpr等命令使用网络打印机打印了。

    使用网络共享文件资源:

    列出网络资源:

    一般可以用smbclient来列出某台机器相关的资源,smbclient的用法参考http://www.linuxaid.com.cn/training...owtod.jsp?i=241

    。这里讲比较有用的使用方法:

    smbclient -L IP或者NETBIOS名称,作用是显示某台提供samba服务的服务器上的共享资源。命令执行效果如下:

    smbclient -L glass

    Sharename Type Comment

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

    IPC$ IPC 远程 IPC

    HPLaserJ Printer HP LaserJet 6P

    ADMIN$ Disk 远程管理

    littlep Disk

    C$ Disk 默认共享

    Server Comment

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

    GLASS

    GRIND

    Workgroup Master

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

    BLUESUN GLASS

    WORKGROUP HEIHEI

    第一段列举了该机器(glass)上面的共享资源,第二段列举了glass所在的工作组里面所有提供samba服务的机器,第三列举了其他工作组提供 browse服务的Master机器(关于Master和Browse服务可以参考我的前面一篇samba使用大全-samba服务器)。

    使用网络资源:

    smbclient //IP或者NETBIOS名称/共享资源名 [-U 用户名]

    命令执行效果如下:

    smbclient //glass/littlep
    
    added interface ip=192.168.1.123 bcast=192.168.1.255 nmask=255.255.255.0
    
    Got a positive name query response from 192.168.1.123 (192.168.1.123)
    
    Password:
    
    Domain=[BLUESUN] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
    
    smb: >

    接下来的操作和ftp的时候命令一样,用get下载文件而用put上传文件,命令可以用help查看。

    还有一种方法是用文件系统的方式(这种方式要确定你的内核支持smbfs,如果没有支持的话,编译内核的时候必须选中File systems--->Network File Systems---> SMB file system support (to mount Windows shares etc.) ):

    smbmount //IP或者NETBIOS名称/共享资源名 /本地挂接点 [-o option]

    常用的的option有username=<用户名>,password=<密码>,guest(指定为用guest访问,不用提供密码,前面的即使用username=guest参数的话也会要求输入密码),ro(有时候为了系统安全要指定为只读模式),rw,同时多个 option的话用逗号隔开。

    或者可以用mount -t smbfs [-o option] //IP或者NETBIOS名称/共享资源名 /本地挂接点来实现同样的功能。

    例子如下:

    smbmount //glass/littlep /test -o guest或者mount -t smbfs -o guest //glass/littlep /test,然后就能通过访问/test来使用网络上的资源了。

    如果不需要使用的时候,可以简单地使用smbumount /test或者umount /test来解除这个挂接。

    关于samba的功能(共享Linux磁盘给Win95/NT、共享Linux打印机给win95/NT、共享win95/NT打印机给Linux机器。、共享Win95/NT磁盘给Linux机器),前面两个属于samba服务器的内容而后两个属于samba客户段的内容,在我的两篇文章中都有介绍了他们的实现方法,但是samba实在是一个强大的工具,无法十分详细地介绍它地全部功能,而且限于笔者的知识有限,有不到之处请各位指出,还望各位多多交流。

     

     

    Samba使用大全中有这样一段:

     

    force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。

     

    如上面所述,我建立一个共享文件夹(smb.conf片断)

    ...........

    [MyShare]
    
    comment = share directory
    
    path = /home/myshare
    
    writable = yes
    
    public = yes
    
    create mode = 0755
    
    directory mode = 0755
    
    force user = root
    
    

    按照资料的意思,不论我以任何用户登陆到这个共享文件夹,在这个文件夹里建立的文件都是属于root用户的,当前用户建立文件之后应该就是没有删除的权限了。

    我试验,在win2000登陆到samba服务器,进入myshare目录,在里面建立好一个文本文件test.txt之后,我在samba服务器上用 root登陆,进入myshare目录,用ls -l查看,test.txt的属主是root,属性是 -rwxr--r--,这样应该说我在win2000上就应该不能删除这个test.txt文件了,但是,在win2000里,却可以删除这个文件,不知道兄弟们有没有注意这个问题?到底怎样解释?

     

    还有一个问题,/home/myshare目录是root用户建立的,用命令chmod 777 /home/myshare 更改过权限,上面的权限问题是不是和这个文件夹的权限有关?

     

    meteorsky

    有分号的是注释

     

    meteorsky

     

    我发现force user = ...这一行的作用不是“force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了”这个意思,而是任何登陆的用户进入这个目录时就被当作root,作为root当然可以进行任何操作,登陆身份的改变是在刚登陆之后。

    我在linux系统中察看当前连接到samba的用户id时发现:不管我用那一个用户登陆samba服务器,只要我进入MyShare目录,当前的用户id就变为root,

     

    可是,这样的话,我就无法实现限制用户在指定目录里只能写,不能删除的权限了,这样的权限限制在windows的ntfs文件系统中是很容易实现的,

     

    不知道在samba中如何才能实现这样的限制,抑或根本就实现不了?

    还请大家帮忙!!

     

    Samba服务器的使用

     

    一、Samba基础

     

    1、 简介

    1).SMB协议

    SMB(Server Message

    Block,服务信息块)协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和Linux机器提供文件系统、打印服务或是其他一些信息。

    SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这两种协议运行在TCP/IP的通信协议上,且使用NetBIOS

    nameserver让用户的Linux机器可以在Windows的网络邻居里被看到,所以就可以和Win95/NT主机在网络上相互沟通,共享文件与服务了。

    目前Microsoft正在开发一种新的文件和打印共享协议--CIFS(Common Internet Files

    System,通用网络文件协议),该协议支持TCP/IP和DNS等协议,能在www上支持文件和打印共享。在CIFS下服务器实际上是DNS名,由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的。目前CIFS还没有得到广泛的应用。现在在Linux和Win95/NT之间的文件共享注意还是 SMB和NFS。

     

    2).什么是Samba

    Samba是用来实现SMB的一种软件,由澳大利亚的Andew Tridgell开发,是一种在Linux(Unix)环境下运行的免费软件。

    通过使用Samba,Linux系统可以实现如下功能:

    文件服务和打印服务(在Linux和Win95/NT之间系统之间提供打印机和磁盘的共享)

    登陆服务器,使用Windows客户能注册到网络上

    作为主要域控制器和域中成员的功能

    WINS服务器以及浏览功能

    支持SSL(Secure Socket Layer)

    支持SWAT (Samba Web Administration Tool )

    Samba除了支持Linux(Unix)和Win95/NT之外,还支持DOS、IBM OS/2、Macintosh 等操作系统。

     

    在Samba的软件包中所包括的组件参看表1-1:

     

    表1-1 Samba软件包的组成列表

     

    2、Samba的记录文件

    Samba为smbd、nmbd和访问Samba的客户提供了下列记录文件,分别记录有关smbd、nmbd运行信息和每个客户的访问信息:

    记录smbd 信息

    /var/log/samba/log.smb

    记录nmbd信息

    /var/log/samba/log.nmb

    记录客户访问信息

    /var/log/samba/log.%m

     

    3、启用Samba服务器

    Samba的运行包含两个后台守护进程:smbd和nmbd,它们是Samba的核心,在全部时间内运行。nmbd

    程序使得通过企图计算机可以浏览Linux服务器。Smbd守护进程在SMB软件包到达网上时对它们进行处理,并且为使用或共享它的资源与Linux进行协调。如果指定的是一个文件,该资源就是一个文件;而一个打印机请求就要求访问一台打印机。实际上,在请求访问打印机时,Smbd把要打印的信息存储到打印机队列中;在请求访问一个文件时,Smbd把数据发到内核,最后将它存到磁盘上。

    你可以从inetd选择启动它们,但这种方法会使Samba变慢。建议使用下面命令可以启动这两个进程:

    /etc/rc.d/init.d/smb start

    /usr/sbin/samba start

    如果想要在系统启动时自动启动samba,可以使用/usr/sbin/turboservice命令,选中其中的"SMB (Windows)File

    Services"。

     

    二、Samba配置及使用

    1、定制文件/etc/smb.conf

    在安装完Samba后,还需要定制它的配置文件smb.conf,才能使Samba正常工作以符合要求。由于SMB是一个非常复杂的协议,所以配置Samba的工作也是比较繁琐的,大约有超过170条配置项出现在smb.conf文件中。

     

    1).smb.conf的语法

    smb.conf文件有一个清晰的语法结构,与Windows的*.ini文件十分类似。如下所示:

    该文件被分成几部分,每一部分都包括几个参数,用来定义Samba输出的共享及其详细操作。

     

    文件被分隔成若干节,每一节都由一个被方括号括起来的标识开始(例如,[global]、[home]、[printers]),每一个配置参数或是一个全局参数(影响或控制整个服务器),或是一个服务参数(影响或控制服务器提供的某项服务 )。

    global部分定义的参数用来控制Samba的总特性。除global部分外,每一部分都定义了一个专门的服务。

    你可以使用下面的语句来指定一个参数:

    name=VALUE

    name可以是一个单词或者用空格隔开的多个单词。VALUE可以是布尔值(ture或false;yes或no;1或0)、数字或字符串。

    注释以分号开头,可以单独一行,也可以跟在一条语句之后。

    通过在一行的最后一个字符后加反斜杠"\\"可以将一行分成多行。

    每一部分的名字和参数都不区分大小写,例如,参数browseable=yes与browseable=YES是完全等价的

     

    2).smb.conf文件的功能

    smbd和nmbd这两个守护进程启动时(通常为系统引导时)读配置文件smb.conf,这一配置文件向这两个守护进程说明输出

    什么共享、共享输出给谁以及如何进行输出等等。

    因为安全问题是最重要的,所以你必须指定哪些计算机可以访问这一共享,smb.conf文件可以很灵活的明确指定每一服务有哪些用户可以访问。随着Linux网络的增大,这一控制越来越重要。

     

    3).smb.conf文件结构

    smb.conf文件主要包括三部分:

    global(全局)参数

    directory shares (目录共享)部分--包括标准的[home]部分

    printer shares(打印共享)部分

    其中,global参数用来设置整个系统的规则;[home]部分和[printer]部分是服务的特定例程,services(服务)这一术语是网络客户机共享或输出的目录和打印机的Samba术语。这些服务定义了哪些用户可以访问这些目录和打印机以及如何访问这些目录和打印机。

     

    清单1-1给出了smb.conf文件的一个简单的例子。

    清单1-1 smb.conf文件的一个简单示例

    [global]
    
    netbios name = FRODO
    
    workgroup = UAB-TUCC
    
    server string = John Blair\'s Linux Box
    
    security = user
    
    printing = lprng
    
    log file = /var/log/samba
    
    lock directory = /var/lock/samba
    
    [homes]
    
    comment = Home Directory
    
    browseable = no
    
    read only = no
    
    [printers]
    
    browseable = no
    
    guest ok = yes
    
    printable = yes

    在 [global] 段中设置了主机名称, 主机所在的工作组名称和浏览时可看到的对本机的描述。安全参数告诉 Samba

    使用"用户级别"的安全保护方式。 SMB 有两种安全模式: 共享级别, 将资源加密码控制;用户级别, 可以使用某一用户的所有资源。

    这里不能详细解释两种方式的微妙差别, 但大部分情况下, 你会想用用户级别安全控制。

    [global] 段中还定义了日志文件目录和锁定文件的位置。日志文件在解决故障和完善系统时是很有用的,锁定文件可以阻止多个用户同时修改相同的文件。

    [homes] 段中的设置控制了每一个用主目录的共享权限。comment 参数指定的字符串在你浏览本机资源时出现在指定资源的旁边。

    browseable 参数控制一项服务是否能够出现在网络资源浏览表中。这里是一些非直觉的东西, browseable = no

    意味着这个目录将在浏览时显示为要验证的用户名称。 举例来说, 指定 browseable = no, 当我浏览这个 Samba 服务器时,

    我将看到一个名称为 cuckoo 的共享目录。当指定 browseable = yes 时, 我将看到一个名为 homes 和 cuckoo

    的共享目录。设置 read only = no 将允许通过验证的用户对主目录有写入的权限。 但是, 如果他们的主目录的 UNIX 权限 不允许写入,

    那么他们就没有写的权限。 无论 UNIX 的权限怎样, 设置 read only = yes 后, 他们的主目录是只读的。

    printing 命令描述了本地打印系统类型, 这可以让 Samba 知道怎样提交打印任务, 显示打印队列, 删除打印任务和其它操作。

    如果打印系统是 Samba 所不知道的, 你必须在每次执行打印操作时指明命令。

    清单中[printing]一段配置允许任何能够登录到 Samba 服务器的用户使用 printcap 中出现的 每一台打印机。 正常情况下,

    如果使用用户级别安全控制, guest ok = yes 并不能授权每一个用户(使用系统)。 每一个打印服务必须定义为 printable =

    yes。

    下面的一段配置片断增加了一个命名为 public 的共享目录, 直接对匿名FTP目录有只读的 权限。 你必须在客户机上建立打印机驱动程序。 对于

    Windows 95 和 Windows NT 客户机, 你可以使用printer name 和 printer driver命令自动建立打印驱动。

     

    [public]
    
    comment = Public FTP Directory
    
    path = /home/ftp/pub
    
    browseable = yes
    
    read only = yes
    
    

    这段描述并不是解释一些微妙的主题,

    例如用户级和共享级安全性的区别或者其它的授权认证主题。它仅仅让我们看到了Samba这座冰山的一角。另一方面,这是一个良好的例子,从中我们可以了解产生一个简单但可工作的smb.conf文件是多么容易。

    下面,我们举另一个例子说明如何通过Samba把Linux的打印机共享给Windows机器。

    为了共享Linux的打印机给Windows机器,必须确定Linux机器上的打印机已经设置好。如果能从Linux上打印,那么设定Samba的打印机共享是很简便的。只要根据自己的情况,对smb.conf文件有关打印的部分进行修改就可以了。在修改中唯一需要注意的是确保打印机的路径要与 /etc/printcap中的spool目录相符合,然后就可以在Win95/NT上配置网络打印机了(关于如何在Win95/NT上配置网络打印机,本文不做介绍)。

     

    4).标准smb.conf文件清单

    在Samba的软件包里的example目录中有一个缺省的配置文件 smb.conf.defaults。我们可以对它做适当修改后拷贝到你的安装目录下的lib目录里,并改名为smb.conf。清单1-2是Samba 系统提供的标准的配置文件。为方便读者阅读,本文翻译了文件中的注释并适当的添加了解释。

     

    清单1-2 标准smb.conf 文件

    # 这是服务器的主要配置文件。您应该阅读smb.conf(5)的用户手册以了解下面
    
    # 列出的每一个选项。Samba有很多的选项,它们之中的大多数并没有出现在这
    
    # 个例子中。
    
    #
    
    # 以分号";"或井号"#"开始的每一行都是注释,在执行时被忽略。在本例中
    
    # 我们使用"#"作为注释而使用";"作为可选配置的注释。
    
    #
    
    # 注意:无论何时修改了这个配置文件,您都要运行"testparm"命令来检查您所
    
    # 做的修改有没有基本的语法错误。
    
    #
    
    #=================== 全局变量设置Global Settings ====================
    
    [global]
    
    # workgroup用来指定您的机器在网络上所属的NT域名或组名。格式是
    
    # workgroup = NT-Domain-Name or Workgroup-Name。缺省的组名是 MYGROUP。
    
    workgroup = MYGROUP
    
    # server string 用来设置NT描述域。缺省值是Samba Server 。
    
    server string = Samba Server
    
    # 下面的选项对于安全很重要。它允许您设置哪些领域的机器可以访问您的Samba
    
    # 服务器。下面的这个例子允许两个C类子网和"lookup"的连接请求而禁止来
    
    # 自其他网段机器的连接请求。有关的例子请参看smb.conf的用户手册。
    
    ; hosts allow = 192.168.1. 192.168.2. 127.
    
    # 允许自动加载打印机列表,而不需要您单独设置每一台打印机。
    
    load printers = yes
    
    # 您也许希望覆盖原有的printcap 文件。
    
    ; printcap name = /etc/printcap
    
    # 对于SystemV系统,如果将printcap名设置为lpstat 将允许您从SystemV 的
    
    # spool中自动获得打印列表。
    
    ; printcap name = lpstat
    
    # 除非您的打印机不是标准型号,否则您没有必要在下面指定打印机系统的类型。
    
    # 目前支持的打印机系统包括:bsd, sysv, plp, lprng, aix, hpux, qnx
    
    ; printing = bsd
    
    # 如果希望建立一个客户帐号,去掉下面语句前面的分号";"。同时,您必须在
    
    # /etc/passwd中加入这个帐号的定义,否则将使用用户"nobody"作为客户帐户。
    
    ; guest account = pcguest
    
    # 此选项将为每一个与服务器连接的机器定义一个单独的日志文件。
    
    log file = /usr/local/samba/var/log.%m
    
    # 此选项设置最大的日志文件的大小(以KB为单位)
    
    max log size = 50
    
    # 定义安全模式。大多数人都喜欢用户级安全模式,详细内容参看security_level.txt
    
    security = user
    
    # 只有当安全模式设置为服务器级(security = server)时,才定义下面选项。
    
    ; password server =
    
    # 如果用户想使用加密口令的话,请参阅ENCRYPTION.txt、Win95.txt和 WinNT.txt
    
    # 文件,请在阅读以上文件后使用下面选项。
    
    ; encrypt passwords = yes
    
    # 使用此选项允许您对每一个机器使用不同的配置。%m将被替换成与服务器
    
    # 请求连接机器的NetBIOS名。
    
    ; include = /usr/local/samba/lib/smb.conf.%m
    
    # 大多数人会发现此选项将显著提高服务器的执行效率,请参读speed.txt和用户
    
    # 手册以了解更多细节。
    
    socket options = TCP_NODELAY
    
    # 配置Samba来使用多个网络界面,如果您有多个网络界面,那么必须按照下面
    
    # 格式在这里列出。请参阅用户手册以获得更多的细节。
    
    ; interfaces = 192.168.12.2/24 192.168.13.2/24
    
    # 浏览控制选项
    
    #如果不想使您的Samba服务器成为局域网内部的主浏览服务器,将此选项设为no
    
    ; local master = no
    
    # OS Level决定了该服务器在局域网内的访问优先权。
    
    ; os level = 33
    
    # Domain Master将Samba服务器定义为主域浏览器。此选项将允许Samba在子
    
    #网列表中比较浏览。如您已经有一台Windows NT域控制器,不要使用此选项
    
    ; domain master = yes
    
    # Preferred Master使Samba在启动时选择一个本地浏览器并给它获得选择的较高
    
    # 的机会
    
    ; preferred master = yes
    
    #仅当您的网络中有一台在安装时设置为主域控制器的NT服务器时使用此选项。
    
    ; domain controller =
    
    # 如果想使Samba成为Windows95工作站的登录服务器,则使用此选项。
    
    ; domain logons = yes
    
    # 如果允许域登录服务,那么您也许希望每台机器或每个用户的登录脚本运行一
    
    # 个特定的每工作站的登录批处理文件。,
    
    ; logon script = %m.bat
    
    # 运行一个特定的每用户名登录批处理文件。
    
    ; logon script = %U.bat
    
    # 放置roving profiles 文件的位置(仅用于 Win95 和WinNT) ,%L代表该服务器
    
    # NetBIOS名,%U是用户名,您必须取消后面定义的[Profiles]前面的注释号。
    
    ; logon path = \\\\%L\\Profiles\\%U
    
    # Windows的Internet名服务支持记录部分
    
    # WINS Support告诉NMBD守护进程支持WINS服务器。
    
    ; wins support = yes
    
    # WINS Serve选项告诉NMBD守护进程作为WINS的客户机。
    
    # 注意:Samba既可以作为WINS服务器也可以作为 WINS客户机,但不能兼
    
    # 而有之。
    
    ; wins server = w.x.y.z
    
    # WINS Prox代表一个非WINS客户通知Samba响应名字解析请求。要使此选项
    
    # 正常工作必须保证网络中至少有一台WINS服务器。缺省值是NO。
    
    ; wins proxy = yes
    
    # DNS Proxy选项决定Samba是否通过DNS 的nslookups 去解析主机的NetBIOS
    
    # 名。对于1.9.17 以前的版本内置值是yes ,对于1.9.18之后的版本内置值是no 。
    
    dns proxy = no
    
    #================== 定义共享服务Share Definitions ===================
    
    # 所有使用者的home目录
    
    [homes]
    
    comment = Home Directories
    
    # 当一个客户程序以客人用户类出本服务器的共享服务时,不列出homes服务。
    
    # 但是本机用户创建的主目录服务仍使用[global]节设定的browseable。
    
    browseable = no
    
    writable = yes
    
    # 如果要创建一个netlogon目录则取消下面的注释。
    
    ; [netlogon]
    
    ; comment = Network Logon Service
    
    ; path = /usr/local/samba/lib/netlogon
    
    ; guest ok = yes
    
    ; writable = no
    
    ; share modes = no
    
    # 如果要提供一个特定的共享roving profile则取消下面的注释。
    
    # 缺省值是使用用户的home目录。
    
    ;[Profiles]
    
    ; path = /usr/local/samba/profiles
    
    ; browseable = no
    
    ; guest ok = yes
    
    # 注意:如果您有一个BSD 风格的打印系统,您不需要单独定义每台打印机。
    
    [printers]
    
    comment = All Printers
    
    path = /usr/spool/samba
    
    browseable = no
    
    # 设置public = yes 将允许以guest 帐号登录的用户使用打印机。
    
    guest ok = no
    
    writable = no
    
    printable = yes
    
    # 此选项定义网络用户共享文件的临时目录。
    
    ;[tmp]
    
    ; comment = Temporary file space
    
    ; path = /tmp
    
    ; read only = no
    
    ; public = yes
    
    # 一个用户共享目录,除了在"staff "组里的用户有些写的权限之外之外,对
    
    # 其它用户是只读的。
    
    ;[public]
    
    ; comment = Public Stuff
    
    ; path = /home/samba
    
    ; public = yes
    
    ; writable = yes
    
    ; printable = no
    
    ; write list = @staff
    
    # 其他例子:
    
    #
    
    # 下面定义了一台只有fred可以使用的私人打印机。Spool数据放在fred的home
    
    # 目录里。注意:fred必须对Spool目录有写的权限,不管这个目录在什么位置。
    
    ;[fredsprn]
    
    ; comment = Fred\'s Printer
    
    ; valid users = fred
    
    ; path = /homes/fred
    
    ; printer = freds_printer
    
    ; public = no
    
    ; writable = no
    
    ; printable = yes
    
    # 下面定义一个只有用户fred才能使用的私人目录。fred 必须对这个目录拥有
    
    # 写的权限。
    
    ;[fredsdir]
    
    ; comment = Fred\'s Service
    
    ; path = /usr/somewhere/private
    
    ; valid users = fred
    
    ; public = no
    
    ; writable = yes
    
    ; printable = no
    
    # 下面定义的是对每个域服务器连接的机器有不同的目录的服务。这将允许您
    
    # 对于不同的机器使用不同的配置,同样也可以使用%U选项为每个用户使用不
    
    # 同的配置。%m在连接时将被替换为客户机的主机名。
    
    ;[pchome]
    
    ; comment = PC Directories
    
    ; path = /usr/pc/%m
    
    ; public = no
    
    ; writable = yes
    
    # 下面定义一个所有用户都可以读写的共享目录。注意用户在这个目录中创建的
    
    # 文件都将归默认用户所有。所以任何可以访问这个目录的用户都可以删除别的
    
    # 用户在这个目录里放置的文件。显然,这个目录对于默认用户必须是可写的。
    
    # 当然,也可以指定某个用户,这时,该目录的所有文件将为此用户所有。
    
    ;[public]
    
    ; path = /usr/somewhere/else/public
    
    ; public = yes
    
    ; only guest = yes
    
    ; writable = yes
    
    ; printable = no
    
    # 下例说明了如何定义让两个用户共享一个目录,他们在这个目录里放置的文件
    
    # 归他们各自所有。在此例中,这两个用户对该目录都有写的权限。当然文件的
    
    # 保护应该设置恰当。很显然,这个例子可以扩展到适合于多个用户的情况。
    
    ;[myshare]
    
    ; comment = Mary\'s and Fred\'s stuff
    
    ; path = /usr/somewhere/shared
    
    ; valid users = mary fred
    
    ; public = no
    
    ; writable = yes
    
    ; printable = no
    
    ; create mask = 0765
    
    

     

     

    2 共享访问限制

    1).通过主机地址

    使用以下参数来限制通过主机地址访问:

    allow hosts

    hosts allow

    deny hosts

    hosts deny

    "allow hosts"、" hosts

    allow"这两个功能相同的参数指定允许访问一个服务的主机列表,主机列表用","号、空格或制表符隔开。如用于[global]段,则应用于所有服务,而忽略在每个服务中的各自的设置。

    主机列表的组成可以是主机名、IP地址、子网地址或网络号码/掩码。也可以使?quot;EXCEPT"关键字来限制子网中的个别主机的访问。例如:

    hosts allow = 202.204. 3 EXCEPT 202.204.3.30

    允许在202.204.3子网上的主机访问,但禁止其中的202.204.3.30访问。

    "deny hosts"、" hosts deny"这两个功能相同的参数指定禁止访问某个服务的主机列表,与"allow

    hosts"相反。当与"allow hosts"列表冲突时,"allow hosts"列表优先。

     

     

    2).通过用户口令

    使用以下参数来限制通过用户口令访问:

    security

    参数security可以确定对客户用户名/口令的验证方式。缺省为"user",即对Samba服务器的任何访问都要通过用户名/口令的验证。如果客户登录客户机,如Windows

    所用的用户名与Samba服务器上的UNIX用户名一致,则通过口令验证后就可以访问;如Windows

    所用的口令也与UNIX一样,那么不经任何提示就可以访问。

    但如果客户机上登录的用户名与Samba服务器上的UNIX用户名不一致,则需要在一个映射文件中(如/etc/smbusers)写入客户机用户名到UNIX用户名的映射,同时使用"username

    map"参数指定映射文件,例如:

    username map = /ect/smbusers

    在/etc/smbusers文件中的内容如下:

    cuckoo = "cuckoo doo"

    这样,在客户机上以"cuckoo

    doo"注册后,再与Samba服务器连接时,输入UNIX客户cuckoo的口令就可以进入,因为Samba已经把"cuckoo

    doo"映射为cuckoo。

    security 参数的另一个值是"share",表示Samba服务器不需要客户机使用用户名/口令来登录,而是根据每个共享的设置来决定是否需要用户名/口令验证。设置security为share一般用于客户机上大多数用户名与Samba服务器上UNIX用户名不相同的情况,以及Samba服务器主要提供guest 访问。

    在smb.conf文件中,如果没有设置"encrypt

    passwords",Samba将使用UNIX的password数据库来验证用户口令。这需要客户机将口令以"普通文件"的方式传递过来。如果设置了"encrypt

    passwords",Samba则使用另一个加密口令文件,通过"smb passwd file"来设置,例如:

    encrypt passwords = yes

    smb passwd file = /etc/smbpasswd

     

    3).通过用户名

    public

    guest ok

    上面的两个参数的功能相同,都可以使用相应的服务允许guest用户,即不需要用户名/口令验证。如果还指定了"guest

    only",那么相应的服务器只允许由guest用户来访问。

    invalid users

    valid users

    这两个参数分别设置不允许注册某个服务和允许注册某个服务的用户列表。一个用户同时出现在两个列表中的时候,不允许注册优先。列表中的用户名可以用空格隔开,以"@"开头的名字被认为是NIS

    组名或UNIX组名;以"+"开头的名字被认为是UNIX组名;以"&"开头的名字只被认为是NIS组名。

    only user

    此参数控制是否只允许在"user ="列表中指定的用户访问某个服务。如果设置为true,则只有在"user ="列表中的用户才能访问。

     

    4).通过是否可以读写来控制

    read only

    此参数设置为"yes",则使用服务的用户不能在该服务的目录中创建或修改文件。

    writable

    writeable

    write ok

    这三个参数功能相同。如果它们被设置为"no",则使用服务的用户不能在该服务的目录中创建或修改文件。

    read list

    write list

    这两个参数分别指定只允许对一个服务进行只读访问或同时有"写"权限的主机列表,这里,如果一个主机同时在两个列表里,则"写"优先。

     

    5).通过是否在浏览器列表中显示来控制

    browsable

    browseable

    这两个功能相同的参数控制该段是否在浏览列表中列出。浏览列表列出的是可获得的共享列表。一般[home]段禁止浏览,以提高安全性。

     

    3、Windows 9x做为SMB客户的设置

    1).配置microsoft网络客户

    在客户机(WIN9X)上,在控制面板里添加microsoft网络客户。选中microsoft网络客户--标识--计算机名--my_computer_name--my_group,其中,my_computer_name将作为表示客户机的NetBIOS名,

    my_group为组名

     

    2).编辑注册表记录

    如果在SMB服务器上的smb.conf 文件中没有用到"encrypt

    passwords",即使用"普通文本"格式的口令,则必须要编辑注册表,来允许使用"普通文本"格式的口令。

    在Windows的注册表的以下条目中:

    /HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP

    新建DWORD值,将新建的值命名为EnablePlainTextPassword;双击EnablePlainTextPassword,将键值设为1。

     

    3).重新启动

    重新启动计算机,以用户名/口令登陆。该用户名/口令将用于与SMB服务器连接时进行用户身份认证,所以如果要访问SMB服务器上用户自己的home目录,建议使用与SMB服务器上相同的用户名/口令。

     

    4).访问Samba服务器

    通过网络邻居浏览访问Samba服务器,可以在列表里选择,也可以在命令窗口里使用命令:

    \\\\sambaserver

     

    4 、Samba服务器提供的其他命令

    smbstatus

    smbstatus指令用于显示当前的SMB服务器的连接状态。例如,在IP地址为202.204.3.16的"cuckoo"客户机上,用户john访问SMB服务器的"public"服务时,命令输出如下:

    /usr/bin/smbstatus

    Samba version 2.0.3

    Service uid gid pid machine

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

    public john john 10009 cuckoo (202.204.3.16) Fri Jul 21 20:3

    No locked files

    Share mode memory usage (bytes):

    1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total

    此命令可以附加一些开关来显示不同的内容,下表列出了主要的开关及其含义:

    表1-2 smbstatus命令主要选项表

     

    nmblookup

    nmblookup命令用于把一个NetBIOS名字映射到IP地址。对于上面的例子,可以使用下面的命令查找主机cuckoo:

    /usr/bin/nmblookup sale

    可以使用合适的选项来允许nmblookup查询一个IP广播域或是一个单独的机器,该命令常用的选项参看表1-3。

    表1-3 nmblookup 命令主要选项列表

     

    smbclient

    smbclient是访问SMB服务器资源的客户程序。该程序提供的接口与ftp程序类似,访问操作包括从SMB服务器下载文件到本地,或从本地上载文件到SMB服务器,还可以在SMB服务器上检索目录信息等。

    命令语法如下:

    /usr/bin/smbclient //smbserver/service [passwd][-U username]

    其中,smbserver是SMB服务器的NetBIOS名,一般与服务器的主机名一样,但不是必须的。"service"为服务器提供的服务,如文件服务public或打印服务printer。

    passwd是访问某些服务时需要的口令。如果在命令行输入,后面则不会再提示输入口令。否则,将在后面提示输入口令。虽然有些要访问的服务器不需要口令,但仍然会有输入口令的提示。如果不希望有口令提示,则可以在命令行使用"-N"选项。

    如果要使用其他的端口与SMB服务器进行TCP连接,可以使用"-p"选项来指定,缺省值为139。

    "-U"可以指定与SMB服务器连接时使用的用户名。如果没有指定,smbclient使用环境变量USER指定的值作用户名。如果没有USER环境变量,则用"guest"。

    在环境变量USER中,可以设置"USER=username%password",这样就不用在命令行上输入口令。同时,使用ps命令看不到命令行参数,具有一定的安全性。同样,也可以使用"-U

    username%password"的形式指定用户名和口令。?quot;-U"指定的口令"%password"要优先于在命令行[password]中指定的口令。

     

    "-L"选项可以列出在一个服务器上提供的服务,例如:

    /usr/bin/smbclient -L smbserver

    使用下面的命令可以进入与ftp类似的提示状态:

    /usr/bin/smbclient //smbserver/service

    执行结果:

    smb:\\>

    其中"\\"表示服务器当前的工作目录。在该提示符下可以使用的命令可以通过"?"、"help"命令列出。命令不分大小写。

    在该提示符下除了可以使用很多与ftp类似的命令外,还有命令recurse,它可以被设置为on,以便在使用mget或mput命令时能够get或put匹配的子目录。recurse缺省为off,即只get或put当前目录中的文件。

     

    在该提示符下还可以使用下面的命令:

    smb:\\>tar c localfile filename

    将服务器上文件名为"filename"的文件和目录(可以使用通配符)经过tar 拷贝到本地的"localfile "文件中。或者:

    smb:\\>tar x localfile filename

    可以把本地tar 文件localfile 中的文件filename拷贝到服务器上;如果filename省略,则拷贝所有的文件。

    上面的命令也可以在smbclient命令行上来执行,如:

    /usr/bin/smbclient //smbserver/service [passwd] -T c local file filename

    /usr/bin/smbclient //smbserver/service [passwd] -T x local file filename

    smbprint

    smbprint是在Linux系统下将打印文件提交给远地SMB服务器打印的脚本程序。程序中调用的命令就是smbclient。下面举例说明此命令的使用方法。

    例如,远端SMB服务器NetBios名为prtserver(Windows

    9X),提供打印服务。服务名为netpcl(NEC激光打印机),不需要口令。

    在Linux系统中配置如下:

    1. 编辑/etc/printcap文件,加入下面一行

    smb:lo=/dev/null:sd=/usr/spool/smb:sh:if=/usr/bin/smbprint:af=/var/spool/lpd/smb/acct

    2.建立目录/usr/spool/smb、/var/spool/lpd/smb

    3.用下面命令建立记帐文件

    touch /var/spool/lpd/smb/acct

    4.建立/var/spool/lpd/smb/.config文件,包含下面内容:

    server = prtserver

    service = necpcl

    password = ""

    5.编辑/usr/bin/smbprint文件,在smbclient命令参数中使"echo

    translate"有效,这样可以使UNIX文件到Windows 9x系统打印时,进行与的转换。

    6.启动lpd:

    /etc/rc.d/init.d/lpd start

    7.使用lpr命令打印/etc/hosts文件

    /lpr -P smb/etc/hosts

    lpr缺省使用的打印机名为lp,这里使用的是smb。

     

    5、使用Samba加密口令

    客户机访问Samba服务器时进行的用户身份认证包括使用"普通文本"格式的口令,通过网络传送给SMB服务器,与UNIX的帐户数据库(如/etc/passwd)进行核查;或者使用加密口令,通过"SMB

    challenge/response"验证进行核查。本文着重介绍加密口令的用法。

    在Samba服务器中使用了与Windows NT兼容的口令加密算法,因此可以像Windows NT一样对Samba的客户进行用户口令核实。

    Windows

    NT 使用一个包含用户口令hashed值的文件,是通过对用户的"普通文本"的口令经过加密算法得到的,称为"hashed口令"。不能从该hashed值返回得到原始的"普通文本"的口令。在Samba服务器上可以形成同样的hashed口令,保存在smbpasswd文件中。

    当一个Samba客户(如Windows 9x

    或NT)使用Samba资源时,它先请求一个连接,并商讨连接使用的协议。Samba回答客户请求时产生一个随机值,发送给客户,并且还储存在Samba服务器上,称为"challenge"。"challenge"对于每一个客户连接是不一样的。

    客户然后使用hashed口令与"challenge"进行加密运算,产生24个字节的"response",发送给Samba服务器。

    Samba服务器使用自己保存的hashed值的用户口令(保存在smbpasswd文件中)与先前产生的"challenge"进行同样的加密运算,将产生的结果与客户发送过来的结果进行比较,如果结果相同,则客户被允许访问;否则,禁止用户访问。

     

    对于Samba服务器来说,它不存储"普通文本"格式的口令,储存的是从"普通文本"口令转换的hashed口令。并且在网络连接时,"普通文本"和 "hashed口令"都不被传送,所以比UNIX安全。因为当客户程序与UNIX服务器连接时(如telnet),口令往往是以"普通文本"在网络上传送的,可以被网络窃听软件(如tcpdump)截获。Samba加密口令文件smbpasswd会被利用成为潜在的漏洞。所以该文件是要由root所有,读写权限应该为600。

    Windows 9x

    或NT缺省的用户认证方式是使用加密的口令,这?quot;普通文本"不在网络上传送。相应的,Samba也要使用加密口令的认证方式。但如果想使用"普通文本"格式的口令,可以编辑Windows

    NT的注册表来允许。这样,Samba服务器就可以使用/etc/psswd文件来验证用户口令,而不需要smbpasswd文件。

    要想让Samba使用与Windows

    NT兼容的口令加密算法,则必须在Samba服务器上保存包含与用户名对应的hashed值的口令文件。可以使用/usr/bin/mksmbpasswd.sh程序产生加密口令文件的框架,文件名由"smb

    passwd file"参数设置,这里是/etc/smbpasswd,命令行格式为:

     

    cat /etc/passwd |mksmbpasswd.sh >/etc/smbpasswd

     

    然后root可以使用smbpasswd命令可以设置用户口令,例如设置客户cuckoo的smb口令为smbpassword:

    /usr/bin/smbpsswd cuckoo smbpassword

    root还可以使用smbpsswd 进行添加用户、取消口令等操作。但添加的用户必须在/etc/psswd文件中存在。普通用户使用smbpsswd

    命令只能像使用passwd程序一样更改自己的smb口令。

     

     

    三、Samba常见故障排除

     

    Samba的故障排除可以在SMB服务器和SMB客户机上通过各自的命令来完成。

    1 SMB服务器上的操作

    1).使用下面的命令来查看是否有错误的配置。

    /usr/bin/testparm /etc/smb.conf

    2). 在服务器上以及客户机上用ping命令检查tcp/ip是否正常工作。

    3). 在SMB服务器上用

    /usr/bin/smbclient -L SMBserver

    命令将得到一个共享的列表。

    如果出现失败信息,则要检查与服务器相关的"hosts allow"、"hosts deny"、"valid users"、"invlid

    users"等参数的设置。如果出现"connection

    refused",则检查Samba服务器进程是否启动;若Samba以守护进程形式运行的话用"netstat -a"命令检查端口是否处于监听状态。

    4). 运行了命令"/usr/bin/nmblookup SMBserver",将返回SMB服务器的IP地址。否则nmbd没有正确的运行。

    5). 运行"/usr/bin/nmblookup -d 2 \'*\'

    "命令,在子网中运行NetBIOS/TCPIP的主机将会响应。否则说明nmblookup

    不能正确的得到广播地址,可以尝试在smb.conf文件中用interfaces参数人工设置IP地址、广播地址和子网掩码。

    6). 运行"/usr/bin/smbclient

    \' \\\\SMBserver\\homes"命令,需要输入客户在SMB服务器上的用户口令,然后会出现类似"smb>"的提示符。这时可以使用 dir命令浏览客户在SMB服务器帐户目录下的文件,用help命令可以得到其他命令的帮助。如果不能出现类似"smb>"的提示符,并且有 "invalid

    network name"的错误信息,则有可能homes共享没有正确的设置;或者有"Bad password",则要检查"shadow

    password"、"password encryption"以及参数"valid users"和"path"的设置。

     

    2、SMB客户机上的操作

    1). 运行"net view \\\\SMBserver"命令,应该能够列出SMB服务器上的共享。

    如果出现类似"network name not found"的错误,则要检查客户机上DNS或WINS的设置。如果出现"Invalid network

    name"或"bad password error"的错误,则参照与上面"smbclient

    -L"命令中同样的错误结果的解决方法。要注意客户机将要用客户注册客户机时所用的用户名/口令去与SMB服务器连接,所以在SMB服务器上,用户最好有同样的用户名/口令。

    2). 使用"net use

    x;\\\\SMBserver\\homes"命令,可以把SMB服务器上客户home目录映射到客户机"x:"盘,"x:"应该是一个客户机上未用的盘号。这样,共享的目录可以在客户机上以"x:"盘来看待。正常的信息为"command

    complete successfully"。

    如果要停止使用"x:"盘,可以使用"net use

    x:/delete"命令。如果不能正常的把客户的home目录映射到"x:"盘,则要检查SMB服务器上"hosts

    allow"等参数的配置。如果客户机上的用户名不能与服务器上的用户名匹配,尝试使用"username map"选项。

    3). 如果在SMB服务器上没有使用"encrypted passwords",则在客户机上要在注册表中允许使?quot;普通文本"格式的口令。

     

    小结

     

    Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。

    守护进程smbd和nmbd是Samba的核心,在全部时间内运行。nmbd

    程序使得通过企图计算机可以浏览Linux服务器。Smbd守护进程在SMB软件包到达网上时对它们进行处理,并且为使用或共享它的资源与Linux进行协调。

    在安装完Samba后,还需要定制它的配置文件smb.conf,才能使Samba正常工作以符合要求。smb.conf文件的的语法结构与Windows 的*.ini文件十分类似;文件结构主要包括三部分:全局参数部分、目录共享部分、打印共享部分;本文着重介绍了如何配置各选项以完成特定的功能。

    通过使用不同的参数,可以实现对Samba的不同访问控制:通过主机地址限制访问、通过用户口令限制访问、通过用户名限制访问、通过验证读写权限限制访问、通过是否在浏览器列表里显示来控制等。所有这些方法,大大的增强了Samba服务器的安全性。

    展开全文
  • SAMBA配置与使用详细解析

    万次阅读 2013-10-21 10:54:52
    Samba使用大全(一)-samba服务器 1. Samba协议基础。 在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server ...
  • samba文件共享以及用法(访问控制)

    千次阅读 2018-11-28 12:35:41
    Samba Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,有服务端和客户端程序构成。随着Linux的普及,如何共享Linux下的文件成为用户关心的问题。其实,几乎所有的Linux发行套件都提供了一个很好的工具Samba...
  • Samba

    2020-10-16 00:46:44
    一.samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。 在此之前我们已经了解了NFS,NFS与samba一样,也是在网络中实现文件共享的一种实现,但不幸的是,其不支持windows...
  • centos7安装samba(最全教程)

    万次阅读 2019-05-08 20:33:19
    关闭防火墙 [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# systemctl disable firewalld.service Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service....
  • samba

    千次阅读 2019-06-29 11:29:25
    一、samba简介 Samba最大的功能可用于Linux与windows系统直接的文件共享和打印共享,Samba既可用于windows与Linux之间的文件共享,也可用于Linux与Linux之间的资源共享,由于NFS的出现,因而 Samba更多用在Linux与...
  • openwrt设置samba共享

    万次阅读 2014-10-11 14:37:12
    Samba共享 安装samba36-server和luci-app-samba opkg install samba36-server luci-app-samba   简单介绍 Openwrt的samba配置是先读取/etc/config/samba,结合/etc/samba/smb.conf.template文件,生成配置...
  • linux下卸载samba组件

    万次阅读 2017-06-27 09:53:44
    linux下卸载samba组件
  • ubuntu重启samba服务

    万次阅读 2013-09-14 17:10:27
    sudo service smbd restart
  • samba添加用户 smbpasswd -
  • 启动或停止Samba服务

    万次阅读 2017-04-15 00:11:17
    启动Samba服务 /etc/rc.d/init.d/smb start 停止Samba服务 /etc/rc.d/init.d/smb stop 重新启动Smaba服务 /etc/rc.d/init.d/smb restart 重新加载Smaba服务 /etc/rc.d/init.d/smb reload 编辑启动加载项 ...
  • 首先确保你的服务端已经配置好samba并成功启动服务,方法可参考此文章http://blog.csdn.net/linglongwunv/archive/2010/01/19/5212875.aspx,我们就可以从 Windows 客户端通过Windows网络连接到Samba,这里以 ...
  • centOS下卸载samba

    万次阅读 2010-01-19 15:50:00
    1、 首先检查Samba服务包,输入命令#rpm -qa | grep samba,会出现下面两到三个包:samba-common-2.2.7a-7.9.0.i386 //服务器和客户端均需要的文件samba-2.2.7a-7.9.0.i386 //服务器端文件samba-client-2.27a-...
  • ubuntu下Samba服务器的搭建

    万次阅读 2017-12-22 19:53:33
    当我们需要windows和linux更好的进行文件交互时,使用Samba服务是一个不错的选择,本文介绍如何在linux中搭建Samba服务和怎样在windows下访问linux共享文件。 1、安装和卸载samba命令: sudo apt-get install samba ...
  • samba忘记用户名和密码

    万次阅读 2018-05-18 11:37:29
    如果忘记了登陆用户名和密码。可以使用root来登陆:smbpasswd -a root然后输入新密码。就可以登陆了。
  • linux及samba用户的查看与删除

    万次阅读 2019-03-16 13:18:37
    查看samba服务器中已拥有哪些用户: pdbedit -L 删除samba服务中的某个用户 smbpasswd -x 用户名 查看Linux中所有用户: cat /etc/passwd 查看Linux中添加了多少用户: cat /etc/passwd|grep -v ...
  • APP - IPad访问samba共享

    万次阅读 2014-06-30 22:17:51
    尝试了 TOID, Remote File Browser Pro
1 2 3 4 5 ... 20
收藏数 61,659
精华内容 24,663
关键字:

samba