热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Samba文件共享实现异构通信

Samba是Linux、Unix与Windows之间进行交互操作的软件组件,Samba是基于GPL协议的自由开源软件。自从1992年以来,Samba开始

    Samba是Linux、Unix与Windows之间进行交互操作的软件组件,Samba是基于GPL协议的自由开源软件。自从1992年以来,Samba开始通过SMB/CIFS协议为Windows、OS/2、Linux以及众多其他支持该协议的操作系统提供安全、稳定、快速的文件与打印服务,在使用winbind将Linux/Unix无缝整合到活动目录环境时Samba也是一个重要组件。
所需软件:samba
    Samba由smbd和nmbd两个个守护进程组成,两个进程的启动脚本是独立的,下面分别介绍每个守护进程的作用。
smbd服务进程为客户端提供文件共享与打印机服务。另外,该进程还负责用户权限验证以及锁功能,smbd默认监听的端口是TCP协议的139与445,Samba通过smb服务启动smbd进程,使用netstat -nutlp查看进程端口信息。
nmbd进程提供NetBIOS名称服务,以满足基于Common Internet File System(CIFS)协议的共享访问环境。Samba通过nmb服务启动nmbd进程,该进程默认使用是UDP 137端口。
由于iptables与SELinux默认策略会组织远程用户对Samba的访问,目前我们采用关闭这些服务,关于如果设置防火墙与SELinux策略会在后续文章中详细介绍。
快速配置Samba服务器:
1.    关闭防火墙与SELinux

  1. [root@centos6 ~]# setenforce 0                       #临时关闭SELinux 
  2. [root@centos6 ~]# sed -i "/SELINUX=/c SELINUX=disable" \ 
  3. > /etc/sysconfig/selinux                             #永久关闭SELinux 
  4. [root@centos6 ~]# service iptables stop              #临时关闭防火墙 
  5. [root@centos6 ~]# chkconfig iptables off             #永久关闭防火墙 

2.    安装Samba软件

  1. [root@centos6 ~]# yum -y install samba 

3.    创建共享目录

  1. [root@centos6 ~]# mkdir /common 
  2. [root@centos6 ~]# chmod 755 /common 
  3. [root@centos6 ~]# echo “hello the world” > /common/smb.txt        #创建测试文件 

4.    修改配置文件
    Samba默认配置文件为/etc/samba/smb.conf,默认Samba已经配置为允许用户通过远程共享访问自己的家目录。下面通过在该配置文件末尾追加common目录的共享设置,实现快速自定义共享。

  1. [root@centos6 ~]# vim /etc/samba/smb.conf 
  2. [common]                                    #共享名称为common 
  3.     comment = Common share                  #共享注释 
  4.     path = /common                          #重要,指定共享路径 
  5.     browseable = yes                        #所有人可见 
  6.     guest ok = no                           #拒绝匿名访问 
  7.     writable = yes                          #支持写入数据 

5.    创建访问帐号
    成功访问Samba服务器还需要使用smbpasswd将系统账户添加到Samba并设置相应的密码,在CentOS 6.3系统自动的Samba软件默认会将账户与密码文件存放在/var/lib/samba/private目录下。

  1. [root@centos6 ~]# useradd -s /sbin/nologin smbuser 
  2. [root@centos6 ~]# smbpasswd -a smbuser 
  3. New SMB password:                                #提示输入账户密码 
  4. Retype new SMB password:                         #确认一次密码 
  5. Added user smbuser.                              #成功添加帐号与密码 

smbpasswd命令
描述:    修改账户samba密码
用法:    smbpasswd [选项] 账户名称
选项:    -a        添加账户并设置密码
          -x        删除SMB账户
          -d        禁用SMB账户
          -e        启用SMB账户
6.    启动服务

  1. [root@centos6 ~]# service smb start 
  2. [root@centos6 ~]# chkconfig smb on 

访问Samba共享:
1.    Windows客户端访问
    在Windows环境中通过开始-运行菜单或直接输入Win+R快捷键开启运行,在打开框中输入\\IP,IP为Samba服务器的IP地址,点击确定按钮访问Samba共享,如果是基于用户名密码的访问,系统会提示输入账户与密码,如图4-2。登录成功后可以看到Samba共享了两个目录一个是common目录,另一个是smbuser账户的家目录共享。
 

samba

图4-2

2.    Linux客户端访问
    Linux客户端使用smbclient命令可以查看访问服务器上的共享资源,如果安装有图形的话也可以通过Linux图形界面连接服务器,下面为具体的方法。

  1. [root@centos6 ~]# smbclient -L //192.168.0.101         #查看192.168.0.101主机共享信息 
  2. Enter root's password:                                 #查看不需要密码,直接回车 
  3. Anonymous login successful 
  4. Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6] #服务器基本信息 
  5.  
  6.     Sharename       Type      Comment 
  7.     ---------           ----       ------- 
  8.     common         Disk      Common share                #共享与注释 
  9.     IPC$            IPC       IPC Service (Samba Server Version 3.5.10-125.el6) 
  10. [root@centos6 ~]# smbclient -U smbuser //192.168.0.101/common     #访问samba共享目录 
  11. Enter smbuser's password:                                         #输入账户密码 
  12. Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6] 
  13. smb: \> ls                                                        #通过ls查看共享目录 
  14.   .                                   D        0  Mon Mar 11 00:27:57 2013 
  15.   ..                                 DR        0  Mon Mar 11 20:29:20 2013 
  16. smb.txt                                          16  Mon Mar 11 23:09:29 2013 
  17.         41355 blocks of size 524288. 27640 blocks available 
  18. smb: \>help                                                #查看smblient可用指令 
  19. smb: \>quit                                                #退出 

    有些时候挂载Samba共享目录实现如本地文件系统一样的使用体验是很有意义的,使用root管理员身份运行mount命令可以挂载这样的文件系统。

  1. [root@centos6 ~]# mkdir /com 
  2. [root@centos6 ~]# mount -t cifs //192.168.0.101/common /com \ 
  3. > -o username&#61;smbuser,password&#61;<password> 

    图形访问Samba共享&#xff0c;首先通过nautilus-connect-server命令开启图形配置界面&#xff0c;如图4-3所示&#xff0c;输入Samba服务器IP地址、共享目录、账户名称等信息&#xff0c;输入正确的密码成功登录后将可以看到服务器同享的测试文件smb.txt&#xff0c;另外通过图形访问Samba后会在桌面挂载图标&#xff0c;以后可以随时通过双击该图标打开共享目录。

  1. [root&#64;centos6 ~]# nautilus-connect-server                   #图形访问共享 

 samba

图4-3

配置文件详解
    Samba配置文件非常简介明了&#xff0c;所有的设置都在/etc/samba/smb.conf配置文件中进行&#xff0c;通过对该配置文件的修改我们可以将Samba配置为一台匿名文件服务器、基于账户的文件服务器或打印服务器&#xff0c;默认Samba会开启本地帐号家目录共享与打印机共享&#xff0c;配置文件中以#或;符号开头的行为注释行&#xff0c;配置文件分为若干段&#xff0c;除了global&#xff08;全局配置段&#xff09;之外的其余所有段用来描述共享资源&#xff0c;全局段中的配置代表全局有效&#xff0c;是全局的默认设置。但如果全局配置段中的设置项与共享段中的设置项有冲突&#xff0c;则共享设置段中的设置为实际有效值。下面我们具体说明各个配置选项的含义。
[global]                           #定义全局策略
workgroup &#61; MYGROUP                #定义工作组。
    server string &#61; Samba Server Version %v
#服务器提示字串&#xff0c;默认显示samba版本&#xff0c;建议修改默认值以防止针对版本的网络***。
;interfaces &#61; lo eth0 192.168.12.2/24 192.168.13.2/24
#如果你的服务器有多个网络接口&#xff0c;可以通过interfaces选项指定指定Samba监听哪些网络#接口。
;hosts allow &#61; 127. 192.168.12. 192.168.13. EXCEPT 192.168.13.13
#指定仅允许哪些主机有权访问Samba服务器资源&#xff08;白名单&#xff09;&#xff0c;该参数可以放置在全局
#段也可以放置在共享段。与此相反的选项是hosts deny用来设置黑名单列表&#xff0c;这里可
#以指定允许访问的主机名、IP地址或网段&#xff0c;当指定网段时可以使用192.168.12或
#192.168.12.0/255.255.255.0格式&#xff0c;使用EXCEPT可以指定排除的IP地址。
    log file &#61; /var/log/samba/log.%m
#定义日志文件&#xff0c;因为使用了Samba变量%m&#xff0c;所以每个访问共享的主机会产生独立的
#日志文件&#xff0c;%m会之中替换为客户端的主机名。
max log size &#61; 50
#定义日志单个文件最大容量为50K。
    security &#61; user
#设置security选项将影响客户端访问samba的方式&#xff0c;是非常重要的设置选项之一。Security
#可以被设置为uesr,share,server或domain&#xff0c;user代表通过用户名、密码验证访#问者的身份&#xff0c;#账户需要是服务器本机系统账户&#xff1b;share代表匿名访问&#xff1b;server代表基于验证身份的访问&#xff0c;#但账户信息保存在另一台SMB服务器上&#xff1b;domain同样是基于验证的#访问&#xff0c;账户信息保存#在活动目录中。
    passdb backend &#61; tdbsam
#账户与密码存储方式&#xff0c;smbpasswd代表使用老的明文格式存储账户及密码&#xff1b;tdbsam代
#表基于TDB的密文格式存储&#xff1b;ldapsam代表使用LDAP存储账户资料。
deadtime &#61; 10
#客户端10分钟内没有打开任何Samba资源&#xff0c;则自动停止服务&#xff0c;在大量的并发访问环境中
#这样的设置可以提供服务器性能。
display charset &#61; UTF8                 #设置显示使用的字符集为UTF8
max connections &#61; 0                 
#设置最大连接数&#xff0c;0代表无限制&#xff0c;超过此限制的连接请求服务器将拒绝连接。
guest account &#61; nobody                #设置匿名帐号为nobody
    load printers &#61; yes               #是否共享打印机
    cups options &#61; raw                #打印属性
    [homes]                           #共享名称
    comment &#61; Home Directories        #注释&#xff0c;共享描述信息
    browseable &#61; no                   #是否可以被浏览
    writable &#61; yes                    #是否可以写操作
 [printers]                           #打印机共享
    comment &#61; All Printers
    path &#61; /var/spool/samba            #打印机共享池
    browseable &#61; no
    guest ok &#61; no
    writable &#61; no
    printable &#61; yes
 [common]                              #共享名称为common
    comment &#61; Common share             #注释&#xff0c;共享描述信息
    path &#61; /common                     #重要&#xff0c;指定共享路径
    valid users &#61;tom jerry             #有效账户列表
create mask &#61; 0750                     #客户端上传文件的默认权限&#xff0c;默认为0744
directory mask &#61; 0775                  #客户端创建目录的默认权限&#xff0c;默认为0755
    browseable &#61; yes                   #是否允许所有人可见&#xff08;yes或no&#xff09;
writable &#61; no
write list &#61; tom                       #读写权限账户列表&#xff0c;这里是tom可写
admin users &#61;tom                       #该共享的管理员&#xff0c;具有完全权限
invalid users &#61; root bin               #禁止root与bin访问common共享
guest ok &#61; no  #是否允许匿名访问&#xff0c;仅当全局设置security&#61;share时有效&#xff08;yes或no&#xff09;。
本文出自<丁丁历险>博客&#xff0c;请务必保留此出处http://manual.blog.51cto.com/3300438/1157571



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Linux的uucico命令使用方法及工作模式介绍
    本文介绍了Linux的uucico命令的使用方法和工作模式,包括主动模式和附属模式。uucico是用来处理uucp或uux送到队列的文件传输工具,具有操作简单快捷、实用性强的特点。文章还介绍了uucico命令的参数及其说明,包括-c或--quiet、-C或--ifwork、-D或--nodetach、-e或--loop、-f或--force、-i或--stdin、-I--config、-l或--prompt等。通过本文的学习,读者可以更好地掌握Linux的uucico命令的使用方法。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • UDP千兆以太网FPGA_verilog实现(四、代码前期准备UDP和IP协议构建)
    UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
author-avatar
该改改小心眼_222
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有