samba安装配置小记

最近机房改建,很多数据需要转移,打算用samba来处理,特此分享,希望能大家多多建议!

这个帖子只是为了介绍samba的具体操作,对于Samba的一些原理性的基础知识这里不做介绍。

有兴趣的可以参考51CTO上Samba专题http://os.51cto.com/art/200512/12843.htm

首先说一下我的环境:

  • 操作系统:centos 64位(系统编码格式为LANG="zh_CN.UTF-8")
  • ssh客户端工具:secureCRT(编码格式默认为UTF-8,后面会对当前对话窗口进行字符编码改为GB2312安装

1、首先安装samba,我这里直接采用了yum的方式,其他方式安装也一样。

  
  
  
  
  1. [root@Samba_Test ~]# yum install samba 

2、安装完成Samba后我们开始配置,Samba使用了139.445端口,正常使用Samba服务必须开启这两个端口

  • 将139、445端口加入iptables允许列表(推荐方式
  
  
  
  
  1. [root@Samba_Test ~]# vi /etc/sysconfig/iptables 
  2. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 
  3. -A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT 
  4. -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT 
  • 保存后重启iptables
  
  
  
  
  1. [root@Samba_Test ~]#service iptables restart 

3、设置好iptables后,我们将smb服务加入开机启动

  • 编辑/etc/rc.local,将service smb start添加到rc.local

4、接下来我们开始添加账户,由于samba需要依赖系统本地账户,所以我们先添加本地系统账户,我们这里添加账户“SambaTest”为例:

  • adduser SambaTest (添加系统账户)
  •    
       
       
       
    1. [root@Samba_Test ~]# useradd SambaTest 
  • smbpasswd-a SambaTest(创建samba账户)
  •    
       
       
       
    1. [root@Samba_Test ~]# smbpasswd -a SambaTest  
    2. New SMB password: 
    3. Retype new SMB password: 
    4. Added user SambaTest. 

5、到这里我们就可以使用创建好的SambaTest来访问共享,默认我们会看到一个以SambaTest命名的目录被共享出来

被共享的文件必须使用777权限

关闭selinux

  • (及时生效,重启后必须手工再次关闭):setenforce 0
  • 永久生效,需要重启,修改/etc/selinux 文件 
  • setenforce 1 设置SELinux 成为enforcing模式
  • setenforce 0 设置SELinux 成为permissive模式

不关闭selinux和修改777权限会造成samba只能访问目录而不能访问文件,也不能对目录进行修改

  • 当看到上图说明samba已经安装成功

6、测试没有问题了,我们再来看看samba的配置文件如果是使用yum的方式安装,"smb.conf"文件默认为/etc/samba/smb.conf因为大多使用samba的环境都在于要在linuxwindows下之间的文件访问,那么编码的不一致就是一个很大的问题,笔者曾经为了能够让编码一致做过很多测试,但是目前还是没能很好的解决。这里我介绍一种方法,能保证在windows中看到的共享能够是中文,在secureCRTsecureFX中使用GB2312的编码方式看到的看到的是中文,系统使用的编码方式为LANG="zh_CN.GB2312", 在系统本地看到的中文是乱码,欢迎大家能够给我提出宝贵的意见具体配置如下:

  • 系统语言
  •    
       
       
       
    1. [root@Samba_Test ~]# vi /etc/sysconfig/i18n 
    2. LANG="zh_CN.GB312"  
  • smb.conf配置
  •    
       
       
       
    1. #------------------ Global Settings ------------------    
    2. [global]  
    3. dos charset = GBK  
    4. unix charset = GBK  
    5. display charset = GBK     
    6. #-----------------  Network Related Options ----------  
    7. #新建的共享目录  
    8. [文件共享]  
    9. comment = 文件共享(SambaTest)  
    10. path = /home/文件共享  
    11. browseable = yes  
    12. writable = yes  
    13. write list =SambaTest  
  • 保存后配置文件重启samba

        
        
        
        
    1. [root@Samba_Test ~]# service smb restart

     

    刷新共享目录,会出现下图所示

     

     

 7、简单整理下比较常用的配置注释

[global]全局配置

(74行) workgroup = WORKGROUP     这是设置工作组
       server string = Samba Server Version %v    工作组的说明而已,注释
       username map=/etc/samba/smbusers     指名系统帐号跟虚拟帐号的对应关系文件夹位置(默认没有这个文件的)
 
日志选项
(88行) # logs split per machine
         log file = /var/log/samba/%m.log    日志存放地方
       # max 50KB per log file, then rotate
         max log size = 50                   设置日志文件最大尺寸,单位KB
使用Samba服务器的每个客户机的日志分别保存在与客户主机同名的“%m.log”文件中,“%m”变量表示客户端主机的名称,其中,当samba服务器刚刚建立好后,只有两个日志文件,分别是nmbd.log和smbd.log,它们分别记录nmbd和smbd进程的运行日志。
nmbd.log是用来管理群组还NETBOIS解析的
smbd.log是用来管理samba服务器共享目录,文件与打印等信息
当客户端通过网络访问samba服务器后,会自动添加客户端机器的相关日志
 
安全选项
(101行)  security = user
         passdb backend = tdbsam
         smb passwd file =/etc/samba/smbpasswd  
         Samba用户和密码文件(这行要自己加)
“security”值有4个含义
1、share 表示用户不需要账户及密码即可登入Samba服务器(需要匿名登录就设置他)
2、user 表示由提供服务的Samba服务器负责检查账户及密码(Samba默认的安全等级,登录需要帐号和密码)
3、server 表示检查账户及密码的工作指定由另一台Windows服务器或Samba服务器负责,就是说需要转交给其他服务器来验证
4、domain 表示指定Windows域控制服务器来验证用户的账户及密码
 
共享目录 Share Definitions
[eo]                                    这个是共享文件夹名字(可以随便取)
        comment = sharefile directory   共享文件夹的说明,注释而已
        path = /hdtv                    实际上共享的是这个目录,使用绝对路径
        public=yes/no                   设置是否匿名访问
        read only=yes/on                是否只读(不能读取不代表不能写入,要看写入权限开没有)
        writeable = yes/on              是否写入(只要设置能写入,读取权限可以不设置)
        valid users = user1,user2       指定能够进入此资源的特定用户
#valid users=用户名/@组名(如果加@符号就代表组名,只有加入这个组的成员才能访问资源,加入组命令在下面有讲解,多用户用“,”隔开)
        invalid users = user1,user2     指定不能使用该共享资源的用户和组
        read list = user1,user2         指定只能读取该共享资源的用户和组
        write list = user1,user2        指定读取和写该共享资源的用户和组
        public = user1,user2            指定该共享资源能给游客帐号访问和
                                        guest ok类似
        hide dot files = yes/no         指明是否隐藏“.”开头的文件
            

你可能感兴趣的:(linux,中文乱码,samba)