; samba | Linux运维部落

samba

samba


  • samba概述

  • samba原理

  • samba服务

  • samba的命令

  • samba搭建实例

  • 使用GUI工具SWAT管理samba


samba概述

什么是samba?

samba是基于smb(Server Message Block)协议的一种实现方式。

samba的功能是什么?

samba能够用来在windows,unix平台间实现文件共享服务,不同于FTP与NFS的是,samba能够很好的跨平台实现共享,并在本地挂载共享文件夹。

samba原理

samba

1.SMB是基于NetBIOS的一个网络文件共享协议,允许cilent从服务器端访问文件资源。
2.NetBIOS协议是一个用来让局域网内的主机互相连接的通讯协议,被广泛用于windows平台间的通信。
3.samba就是基于smb开发的,让unix主机能够通过mbr协议与windows平台进行文件共享。

samba服务

samba的安装包:

 samba                samba服务器端程序。
 libsmbclient         samba客户端库文件。
 samba-client        samba客户端程序。    
 samba-common        samba客户端以及服务端都会用到的文件,如samba.conf等。
 samba-winbind        samba对于windows域的支持的服务端的库。
 samba-winbind-clients    samba windwos域的客户端。

samba的进程文件:

nmb:负责管理工作组,NETBIOS解析,工作在UDP的137,138端口上。
smb:负责对通过验证的请求调用系统资源,工作在TCP的139或445端口上。

samba的文件:

/etc/samba/smb.conf            samba的主要配置文件。
/etc/samba/smbusers            共享服务中,linux与windows的账号的映射,格式为 linuxuser = windowsuser1,windowsuser2
/var/lib/samba/private/passdb.tdb / secrets.tdb            samba用户账号密码存放的数据库。

samba.conf

[global]


  [network]

    workgroup = MYGROUP        工作组名称,要与windows的工作组名称一致。
    server string = Samba Server Version %v        

;    netbios name = MYSERVER

;    interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 
;    hosts allow = 127. 192.168.12. 192.168.13.


  [login]
    log file = /var/log/samba/log.%m    日志文件路径。
    max log size = 50        一个日志文件最大多少Kb进行轮替。

  [独立服务器设定  Standalone Server]
    security = user|share|domain  安全认证方式   
                        share:共享模式  
                        user:使用samba服务器的密码库    
                        domain:使用外部域服务器的密码。        
    passdb backend = tdbsam     密码库格式。


  [域成员设定 domain members]
;    security = domain
;    passdb backend = tdbsam
;    realm = MY_REALM

;    password server = <NT-Server-Name>

.................... 海量设置请自行查看此文件,或者查看/usr/share/doc/samba[version] 帮助手册。


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

[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                    是否允许打印。            

# Un-comment the following and create the netlogon directory for Domain Logons        格式参考模板1
;    [netlogon]
;    comment = Network Logon Service
;    path = /var/lib/samba/netlogon
;    guest ok = yes
;    writable = no
;    share modes = no


# Un-comment the following to provide a specific roving profile share        格式参考模板2
# the default is to use the user's home directory
;    [Profiles]
;    path = /var/lib/samba/profiles
;    browseable = no
;    guest ok = yes


# A publicly accessible directory, but read only, except for people in        格式参考模板3
# the "staff" group
;    [public]
;    comment = Public Stuff
;    path = /home/samba
;    public = yes
;    writable = yes
;    printable = no
;    write list = +staff

smb.conf基础共享属性格式小结:

[NAME]                            共享名称,windows看见的文件夹名称。
comment = [STRING]                 注释信息。
path = /PATH/TO/SHARE_DIR        共享文件夹的路径。
browseable = yes|no                是否让所有人都看到此目录。
guest ok = yes|no                是否允许来宾账号。
writable = yes|no                是否允许写入。
read only = yes|no                是否设定只读。
write list = group,user            只有在此条中组或用户才能写入。

账号,权限相关

与nfs相同,samba的可行性权限也是用户权限与文件夹权限的交集,所以在设置时请确认用户,文件夹权限两点。

如果没有设定guest ok,samba默认是不允许匿名登陆的,一定要设定账号。

samba的命令与客户端访问

testparm:测试有效的exports内的属性。

testparm

pdbedit:管理smb的用户数据库。

pdbedit -L [-vm]      列出数据库中的用户等信息,-v详细信息,-w使用smbpasswd格式。
pdbedit -a -u [user]   新增一个用户,但必须存在实体用户。
pdbedit -r -u [user]   修改一个用户的信息,需搭配其他参数,可参考man文档。
pdbedit -x -u [user]   删除一个用户。
pdbedit -a -m -u [machine account计算机账号]   添加一个计算机账号,域相关。

smbpasswd:改变samba账户的密码。

smbpasswd -a [user]    新增用户以及密码。
smbpasswd -r [user]       修改用户密码。
smbpasswd -x [user]       删除用户。
smbpasswd -d [user]    禁止登陆。
smbpasswd -e [user]    启用用户。

smbclient:unix客户端访问工具。

smbclient -L //IPADDR [-U smbuser]    测试查看目标服务器所开放的共享文件夹
smbclient //IPADDR/dir    -U smbuser     连接共享服务器文件夹。

[root@host2 ~]# smbclient //192.168.1.1/test -U xiao     命令行形式访问。
Enter xiao's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]
smb: \> help
?              allinfo        altname        archive        blocksize      
cancel         case_sensitive cd             chmod          chown      
....

挂载访问。

mount -t cifs -o username=xiao,password=redhat -l //192.168.1.1/test  /tmp

samba搭建实例

smb服务搭建:


host1(192.168.1.1):

[root@host1 ~]# yum install samba
[root@host1 ~]# vim /etc/samba/smb.conf
        [test]
        comment = test on 192.168.1.1 server!
        path = /tmp/samba
        writable = yes
        guest ok = yes
        write list = xiao
[root@host1 ~]# testparm
[root@host1 ~]# pdbedit -a -u xiao
[root@host1 ~]# pdbedit -L
[root@host1 ~]# mkdir -pv /tmp/samba
[root@host1 ~]# setfacl -m u:xiao:rwx /tmp/samba
[root@host1 ~]# service nmb start
[root@host1 ~]# service smb start
ps.配置iptables并设置selinux。

测试:


host2(192.168.1.2):

[root@host2 ~]# smbclient -L //192.168.1.1 -U xiao          查看192.168.1.1共享的文件夹,并指定账户。
Enter xiao's password:                         输入密码。
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]        

    Sharename       Type      Comment
    ---------       ----      -------
    test            Disk      test on 192.168.1.1 server!
    IPC$            IPC       IPC Service (Samba Server Version 3.6.23-30.el6_7)
    xiao            Disk      Home Directories
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]

    Server               Comment
    ---------            -------
    HOST1                Samba Server Version 3.6.23-30.el6_7        可以看到host1。

    Workgroup            Master
    ---------            -------
    MYGROUP              HOST1
    WORKGROUP            XIAOLAOPO

[root@host1 ~]# smbclient //192.168.1.1/test -U xiao        访问192.168.1.1的共享文件夹test
Enter xiao's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7]
smb: \> ls            列出文件夹。
  .                                   D        0  Tue Apr 26 19:03:03 2016
  ..                                  D        0  Wed Apr 27 17:32:03 2016
  a.txt                               A        0  Tue Apr 26 19:02:57 2016

        35418 blocks of size 524288. 23572 blocks available
smb: \> get a.txt                 尝试下载a.txt
getting file \a.txt of size 0 as a.txt (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
smb: \> put install.log            尝试上传。
putting file install.log as \install.log (440.0 kb/s) (average 440.0 kb/s)
smb: \> ls                    查看,上传成功。
  .                                   D        0  Wed Apr 27 17:46:55 2016
  ..                                  D        0  Wed Apr 27 17:32:03 2016
  a.txt                               A        0  Tue Apr 26 19:02:57 2016
  install.log                         A    49565  Wed Apr 27 17:46:55 2016

        35418 blocks of size 524288. 23572 blocks available

windows8(192.168.1.10):

访问192.168.1.1的共享文件夹:

windowstest1

身份验证:

windowstest2

尝试创建文件并查看所有者:

windowstest3

使用GUI工具SWAT管理samba

swat是samba的图形化管理工具,我们可以在配置后通过http来通过网页配置,并且内嵌帮助文档,能够非常直观的配置samba服务,swat是基于xinetd超级守护进程。
[root@host1 tmp]# yum install xinetd -y            安装xinetd超级守护进程
[root@host1 tmp]# yum install samba-swat -y        安装swat程序,主机安装包名为samba-swat,如果直接输入swat是找不到包的!!

[root@host1 tmp]#vim /etc/xinetd.d/swat            编辑swat的配置文件。
    # default: off
    # description: SWAT is the Samba Web Admin Tool. Use swat \
    #              to configure your Samba server. To use SWAT, \
    #              connect to port 901 with your favorite web browser.
    service swat
    {
            port            = 901            <---    监听的端口默认为901。
            socket_type     = stream        <---    socket类型为stream,面向连接的稳定数据传输,即为TCP协议。
            wait            = no            
            only_from       = 192.168.1.0            <---只监听指定范围内的主机,即限制登陆主机,设置为0.0.0.0 则默认为监听所有主机。
            user            = root                <---只允许使用指定用户登录。
            server          = /usr/sbin/swat        <---指定主程序路径。
            log_on_failure  += USERID            
            disable         = no            <---开启swat工具,yes为关闭。
    }
[root@host1 tmp]# service xinetd start        开启xinetd服务即可,因为swat是由xinetd来管理的。

[root@host1 tmp]# ss -tunl | grep 901        查看901端口号,的确为设置的tcp的901
tcp    LISTEN     0      64                    :::901                  :::*
访问服务器的901端口:

swat1

进行身份验证:

swat2

进入图形设定界面:

swat3

原创文章,作者:Net18_肖肖,如若转载,请注明出处:/15661

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐主管QQ  万达娱乐注册  万达娱乐平台  万达主管  万达娱乐直属QQ  万达娱乐开户  guoqibee.com  万达注册  万达娱乐注册  万达登录