linux必学知识

Samba

2017-10-18  本文已影响0人  不知岁月惜
samba概述
samba原理
samba服务
samba的命令
samba搭建实例
使用GUI工具SWAT管理samba
samba概述
什么是samba?
samba是基于smb(Server Message Block)协议的一种实现方式。
samba的功能是什么?
samba能够用来在windows,unix平台间实现文件共享服务,不同于FTP与NFS的是,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    #服务器介绍信息,参数%v为显示SMB版本号    

;    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>





[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        共享文件夹的路径。
create mask = 0644    设置上传文件权限(默认744)
browseable = yes|no                是否让所有人都看到此目录。
guest ok = yes|no                是否允许来宾账号。
writable = yes|no                是否允许写入。
read only = yes|no                是否设定只读。
write list = group,user            只有在此条中组或用户才能写入。
账号,权限相关
valid users=wang,@admins    添加可访问用户,或者组
与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的共享文件夹:
身份验证:
使用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端口:
进行身份验证:
进入图形设定界面:
上一篇 下一篇

猜你喜欢

热点阅读