背景    
      在window7下面虚拟了一个CentOS6.3,为了学习命令行就没有装图形包,所以我的CentOS是黑屏的那种,呵呵,当然了,VMWare提供 的增强功能我就不能用了(或许能吧,我不知道怎么设置?),正好,就借这个机会逼着自己把samba学习一下,说“逼”一点也不夸张,我从昨天下午6点到 现在8点了都没合眼,当然不睡觉还有其他的原因。下面是我这一夜的成果,写出来给大家看下。
一、简介
    Samba,是在Unix上实现SMB(Server Message Block)的一个工具套件。而SMB通常是windows用来实现共享的,包括文件和打印机等。而Unix上装上SMB,则使得Unix能够和 windows连接在一起,实现两者的资源互通。
二、安装
$rpm -qa | grep samba
$yum install samba,samba-client
三、常用命令
1.service smb status        #查看smd服务的状态
2.service smb start        #运行smb服务
3.service smb stop        #停止服务
4.service smb restart        #重启服务,但在实际中一般不采用
5.service smb reload        #重载服务,在实际中较常用,不用停止服务
6.pstree | grep smb
四、配置
4.1.基本配置
      samba的主要配置文件放在/etc/samba/smb.conf文件夹下。文件可以分为两大部分,第一部分是全局配置,第二部分是局部配置。下面是一个配置文件及相关注释:
[global]  #全局配置,配置文件以[segname]分段,除了global影响全部段之外,各段之间互不影响
workgroup = MYGROUP    #samba的工作组
        server string = Samba Server Version %v    #samba的说明信息
        netbios name =Aric    #简单的说就是计算机名称
        log file = /var/log/samba/%m.log    #日志文件存放位置
        max log size = 10    #日志文件大小,以M为单位
        security = share    #安全选项,可以是share,user,server,domain安全级别递增
        encrypt passwords = yes    #密码是否加密
        smb passwd file = /etc/samba/smbpasswd    #密码文件存放位置
        username map = /etc/samba/smbusers    #用户文件存放位置
[share]        #局部配置,[]里面是段名,也就是我们的共享名
        comment = This is my shared folder.    #该共享的说明
        path = /home/share    #共享路径
        writeable = yes        #共享文件夹是否可写
        browseable = yes    #是否可浏览
        guest ok = yes        #跟public一样,是否允许guest用户
       create mode =0664    #创建文件权限定制
      directory mode=0775    #创建文件夹权限
      valid users=允许访问该共享的用户
      invalid usrs=禁止访问的用户,root,@group,@表示组    
     admin users=该共享的管理者
     write list=有写权限的用户 
    display charset=UTF-8
    unix charset=UTF-8
    dos charset=UTF-8  #这三个是避免乱码的,dispaly是显示目录时的编码,另外两个跟名字对应。若dos下为zh_CN.GB2312.GBK。则3个全部设为cp936
4.2 配置文件中的详细解释
4.2.1 samba的安全级别
    Linux下samba有四种安全级别,即Share、User、Server、Domain,它们的安全级别由低到高,在配置文件中具体由 security参数指定。其中,Share级是指用户不需要账户和口令即可登录服务器;User级是Samba服务器默认的安全级别,是指服务器负责检 查登陆者的账户和口令;Server级是指账户和口令的检查由另外的Samba或Windows服务器负责;Domain级是指由一台Windows NT/2000域服务器负责检查账户和口令。用户在配置Samba服务器时,可以根据所需要的不同安全等级来具体配置
4.2.2 samba的密码存放方式
    passdb backend = tdbsam | passdb | smbpasswd 
    backend即用户后台。有三种后台:smbpasswd、tdbsam和ldapsam。Sam即security account manager。
(1).smbpasswd: 该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba 密码,客户端就用此密码访问Samba资源。也就是说用这种方法创建的永和可以是虚拟的,也就是Linux系统中不存在该用户也可以。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用户账号。
一般叫常用的用法是:
$useradd user1
$smbpasswd -a user1    #这里可以改为pdbedit -a user1
$输入user1的共享密码
$确认user1的共享密码
(3).ldapsam:基于LDAP账户管理方式验证用户。首先要建立LDAP服务,设置“passdb backend = ldapsam:ldap://LDAP Server”这个我也不太清楚,就不说了。

4.3.用户映射
      由于我们在创建samba用户时必须和系统用户同名,这就意味着不安全(当然某些人很乐意看到这样),但是,samba已经解决了这个问题,提供了用户映射,这个文件在/etc/samba/smbusers,
root=administrator
nobody=guest pcguest
test=prefer you
这样就Ok了,钱两行是为了方便windows用户使用,最后一行则是遮盖用户信息,也就是为了安全。

4.4. 常用的共享
[homes]共享默认会将用户的主目录共享,这是不安全的,所以我们要将其注释,当然还有[netlogon]

五、常见问题
5.1.提示没有权限访问
        前提是我们将security=share,即不要求账号密码,这样还是不能访问,总是说没有权限访问。这有以下几种原因:
5.1.1 防火墙的问题 
        samba使用的端口在防火墙里没有添加例外,导致samba服务不能够使用,解决方法可以是
$iptables -F        #清除防火墙的规则
也可以通过setup,将samba使用的端口添加例外,最好用第二中方法,毕竟防火墙还要保证系统的安全。
(2)seLinux的问题
        这是系统本身的原因,我们安装系统的时候安装了selinux,而selinux禁止网络上其他计算机对samba上的共享目录进行写操作,即使在smb.conf中允许了这项操作,解决方法是:
$setenforce 0
我在这上面可吃了不少苦头。
(3)共享文件夹权限的问题
        我们共享的路径本身权限不正确,就是说我们在smb.conf分配的权限是可读可写,但是在Linux文件系统下,该共享文件夹却是只读的,所以就出现了问题,我们一般讲共享的文件夹在Linux下降权限全部开放。
$chmod 777 /share
5.2.提示用户名或则密码不正确
     当我们将安全级别为user时,就需要输入用户名和密码,但是用户名密码都是正确的,但是总是提示错误。这是因为我们在windos下输入用户名时,默认 是在windows域中,二我们的账户是在Linux建立的,所以是不对的,只要将我们Linux主机的域名加载前面就行了。比如Linux下面的 user2,我们直接输入user2可能就不对,我们必须将我们Linux主机的名字加在前面,如
hostname/user2
5.3.NT_STATUS_WRONG_PASSWORD
       当我们在Linux使用
$smbclient //192.168.102.133/share
Enter root's password:此处回车
Domain=[groupname] os=[Unix] Server=[Samba 3.5.10-125.el6]
Server not using user level security and no password supplied
tree connect failed:NT_STATUS_WRONG_PASSWORD
下面是配置文件
[share]
    comment= user share
    path = /home/share
    browseable = yes
    writable = yes
    security = yes
应该不会出错的,但是就是报错啊,后来才知道,少了一行
    public =yes
因为,samba默认是不允许匿名用户访问的
5.4.挂载windows共享文件夹,smbmount不存在,smbfs无效的选项
    这里简单的提一下,我们可以再一挂载windows下的共享文件夹,做法是先在windows下右击文件夹,选择共享选项,然后共享给特定用户。到Linux下
$ smbmount //windowsIP地址/共享名 挂载点 -o 选项1,选项2
但是提示smbmount不存在,yum也找不到,其实smbmount这个包太老了,已经淘汰了,所以肯定找不到的,及时找到了也不能用。可以用mount代替,
smbmount == mount -t smbfs ???    
其实,这也是不等的,因为smbfs也淘汰了,现在时代进步太快了,呵呵,smbfs即smb file system 已经由cifs(common internet file system)代替了,所以我们要用mount -t cifs代替。
最后命令式:
mount -t cifs -o username=xxx password=xxx //windowsIP地址/共享名 /mnt/挂载点

六 一些废话
       由于这是我晚上写的,精神可能不太好,所以难免有错误和不足之处,还希望大家指出来,我们一起进步!

Linux下samba的安装与配置的更多相关文章

  1. Linux下Qt的安装与配置

    参考资料:http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html Linux 下编译.安装.配置 QT 下载qt 这里用的是4.7. ...

  2. Linux 下编译、安装、配置 QT

    转自Linux 下编译.安装.配置 QT 注意:编译安装耗时费力,且很容易出错,要不断调整编译参数,不推荐使用,否则这将会是一个纠结痛苦的过程. 打算做嵌入式图像处理,计划方案嵌入式Linux+Ope ...

  3. .Neter玩转Linux系列之六:Linux下MySQL的安装、配置、使用

    一.Linux安装MySQL (1)下载安装包:https://dev.mysql.com/downloads/mysql/ (2)解压并安装 命令:tar zxvf 文件名 解压完成之后,重名一下文 ...

  4. linux下svn的安装与配置

    ---恢复内容开始--- linux下svn的安装与配置 Linux发行版本:CentOS6.5 1.安装subversion sudo yum -y install subversion 2.创建s ...

  5. linux下redis的安装及配置启动

    linux下redis的安装及配置启动 标签: redisnosql 2014-10-24 14:04 19732人阅读 评论(0) 收藏 举报  分类: 数据与性能(41)  wget http:/ ...

  6. linux下vsftpd的安装及配置使用详细步骤(推荐)

    vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点. vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BS ...

  7. 莫小安 Linux下Redis的安装与配置

    转载自--Linux下Redis的安装与配置 redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了 memcached的不足,它 ...

  8. Linux下的Maven安装与配置

    关于Maven的介绍可以参考:Maven详解 这篇在原理上讲得比较详细,在安装上是windows版本的,这里补上linux下的安装和配置: 1.下载maven安装包 http://maven.apac ...

  9. linux下samba的安装与使用

    samba挺好用的,配置项不多,正好适合我这种懒人使用. 下面是CentOS上面的安装与使用方法. 安装:yum -y install samba        安装一个名字叫samba的软件,安装过 ...

随机推荐

  1. android控件上面实现提醒信息

    android开发中,经常会用到显示一个提醒信息,比如个人中心,有新信息,购买商品后,在购物车控件,显示购物数量等.我们可以用,2个控件来实现,或者用层叠图. 还有一种简单方便的办法,使用别人的开源代 ...

  2. Unity3d Awake、OnEnable、Start生命周期

    Unity3d,Awake.OnEnable.Start,都是游戏开始运行前,所运行的方法. GameObject的Activity为true,脚本的enable为true时,其先后顺序为:Awake ...

  3. navigaitonBar的自定义设置

    navigaitonBar的自定义设置 navigationBar介绍: navigationbar就是一个导航视图控制器上面的导航栏. 如何设置这个navigationbar? 首先我们来探讨如何来 ...

  4. GNU Make----Core Automatic Variables

    $@ 表示规则的目标文件名.如果目标是一个文档文件(Linux中,一般称.a 文件为 文档文件,也称为静态库文件),那么它代表这个文档的文件名.在多目标模式 规则中,它代表的是哪个触发规则被执行的目标 ...

  5. Java中的浅复制和深复制 Cloneable clone

    先看一个简单案例 public class Test {     public static void main(String args[]) {         Student stu1 = new ...

  6. Asp.net 菜单控件

    本文介绍的菜单控件采用的css 和ul list来显示菜单,生成的html小,无需javascript支持,对大部分的浏览器都支持,除ie6要单独修改css也可以使其支持. 通过本文可以了解asp.n ...

  7. WebService笔记-Schema约束

                        Schema约束 俗话说得好 好记性不如烂笔头. 看了下WebService视频,觉得还是得下笔记. 观看的视频地址:http://edu.51cto.com/ ...

  8. ftp文件操作

    PHP FTP操作类( 上传.拷贝.移动.删除文件/创建目录 ) 2016-06-01 PHP编程 /** * 作用:FTP操作类( 拷贝.移动.删除文件/创建目录 ) */ class class_ ...

  9. 很久之前写的Ajax库

    很久之前写的一个小型AJAX的js,放在上面以免以后想玩了找不到了. // version : 0.1 beta // author : __Ajax function __Ajax(url,opti ...

  10. php while循环 指定显示内容 例如不想显示前10条和后10条

    <?php //查询信息总的条数 $db_num = query_num("表","where 1=1"); //每页显示的条数 $page_size=2 ...