配置Samba服务



Samba是实现Windows系统和Linux系统的文件共享服务。


一、Samba的配置文件

首先是安装Samba

[root@tpp ~]# yum install -y samba samba-client

Samba的配置文件是/etc/samba/smb.conf,默认未注释的部分如下:

[root@tpp ~]# vim /etc/samba/smb.conf
[global]
      workgroup = MYGROUP
       server string = Samba Server Version %v
       log file = /var/log/samba/log.%m
       max log size = 50
       security = user
       passdb backend = tdbsam
       load printers = yes
       cups options = raw
[homes]
       comment = Home Directories
       browseable = no
       writable = yes
[printers]
       comment = All Printers
       path = /var/spool/samba
       browseable = no
       guest ok = no
       writable = no
       printable = yes

注:主要有以上三个部分:[global], [homes], [printers]

[global] 定义全局的配置,workgroup用来定义工作组,一般情况下,需要我们把这里的MYGROUP改成WORKGROUP(windows默认的工作组名字)。

●security = user  //这里指定samba的安全等级。关于安全等级有四种:

    (1)share:用户不需要账户及密码即可登录samba服务器

    (2)user:由提供服务的samba服务器负责检查账户及密码(默认)

    (3)server:检查账户及密码的工作由另一台windows或samba服务器负责

    (4)domain:指定windows域控制服务器来验证用户的账户及密码。

passdb backend = tdbsam  //passdb backend(用户后台),samba有三种用户后台:smbpasswd, tdbsam和ldapsam.

    (1)smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用此密码访问Samba资源。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用户账号。

    (3)ldapsam:基于LDAP账户管理方式验证用户。首先要建立LDAP服务,设置 “passdb backend =ldapsam:ldap://LDAP Server”

load printers 和 cups options 两个参数用来设置打印机相关。


除了这些参数外,还有几个参数:

netbios name = MYSERVER               //设置出现在网上邻居中的主机名

hosts allow = 127. 192.168.12. 192.168.13.   //用来设置允许的主机,如果在前面加 ”;” 则表示允许所有主机

log file = /var/log/samba/%m.log     //定义samba的日志,这里的%m是上面的netbios name

max log size = 50               //指定日志的最大容量,单位是K


[homes] 该部分内容共享用户自己的家目录,也就是说,当用户登录到samba服务器上时实际上是进入到了该用户的家目录,用户登陆后,共享名不是homes而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。


[printers] 该部分内容设置打印机共享。



二、Samba试验

下面我们来进行试验,不过实验之前要先关闭iptables和selinux,否则很有可能试验失败。


实验一

要求:共享一个目录,任何人都可以访问,即不用输入密码就可访问,要求只读。

1、打开Samba的配置文件

[root@tpp ~]# vim /etc/samba/smb.conf        
[global]                           //修改如下两处
      workgroup = WORKGROUP
      server string = Samba Server Version %v
      security = share        
      passdb backend = tdbsam
      load printers = yes
      cups options = raw
[tppshare]                          //在末尾处增加
       comment = share all
       path = /tmp/samba
       browseable = yes
       public = yes
       writable = no


2、创建测试目录

[root@tpp ~]# mkdir /tmp/samba
[root@tpp ~]# chmod 777 /tmp/samba
[root@tpp ~]# cd /tmp/samba/
[root@tpp samba]# mkdir 12
[root@tpp samba]# touch test.txt
[root@tpp samba]# echo "1234dfgxc6" > test.txt



3、启动Samba服务

[root@tpp ~]# /etc/init.d/smb start
启动 SMB 服务:           [确定]

也可以用testparm命令测试smb.conf文件是否配置正确:

[root@tpp ~]# testparm



4、测试

(1)在Windows下测试:

win+r 输入 \\192.168.0.109 就可以看到如下图所示:

wKiom1X1FYbCClp7AABO-RRKVJ8582.jpg

wKioL1X1F7jybynpAACT6fh-ReU039.jpg

你可以试着修改下文件,或者新建文件,都会发现没有权限,只能读。


(2)在Linux下测试:

客户机上要安装cifs-utils

[root@tpp ~]# yum install -y cifs-utils

挂载到/opt/目录下

[root@tpp ~]# mount -t cifs //192.168.0.109/tppshare /opt   //不要输入密码直接回车
[root@tpp ~]# df -h

wKiom1X1G-HRZM4iAAEYVoSXdjg739.jpg

[root@tpp ~]# ls -l /opt/
总用量 4
drwxr-xr-x 2 root root  0 9月  13 21:44 12
-rw-r--r-- 1 root root 11 9月  13 21:29 test.txt




实验二

要求:共享一个目录,使用用户名和密码登录后才可以访问,要求可以读写。

1、打开Samba的配置文件

[root@tpp ~]# vim /etc/samba/smb.conf        
[global]                           //修改如下
      workgroup = WORKGROUP
      server string = Samba Server Version %v
      security = user        
      passdb backend = tdbsam
      load printers = yes
      cups options = raw
[myshare]                          //在末尾处增加
       comment = share for users
       path = /tmp/mysamba
       browseable = yes
       public = no
       writable = yes


2、创建测试目录

[root@tpp ~]# mkdir /tmp/mysamba
[root@tpp ~]# chmod 777 /tmp/mysamba
[root@tpp ~]# cd /tmp/mysamba/
[root@tpp mysamba]# mkdir 111
[root@tpp mysamba]# touch 1.txt
[root@tpp mysamba]# echo "dakdfaifhai" > 1.txt


3、添加用户

因为在[globa]中 “passdb backend = tdbsam”, 所以要使用 pdbedit 来增加用户,注意添加的用户必须在系统中存在,所以需要先创建系统账号

[root@tpp mysamba]# useradd user1            //创建系统用户
[root@tpp mysamba]# pdbedit -a user1         //添加user1为Samba账号

重启Samba服务

[root@tpp mysamba]# service smb restart

注意:pdbedit有什么命令参数,常用的还有 -L:列出Samba账号,-x:删除某个Samba账号



4、测试

(1)在Windows下测试:

win+r 输入 \\192.168.0.109 就可以看到要输入账号密码的提示框,输入正确后可以进入,接着我们可以对文件夹以及文件进行修改。

wKiom1X1JtPQ7t2FAABCsGZSWq0516.jpg

注意:从上面我们可以看到会生成一个以用户名为命名的文件夹,因为我们没有把[home]那个模块给注释掉。

wKioL1X1LezgcgFWAADAnNL69NE272.jpg

注释掉后重启Samba服务,我们再查看下就会发现user1目录不存在了。


(2)在Linux下测试:

[root@tpp ~]# mount -t cifs -o username=user1,password=123456 //192.168.0.109/myshare /opt
[root@tpp ~]# df -h

wKiom1X1J6ODt1ayAAEWNu3wMN4495.jpg

查看下,并且我们可以/opt/目录进行新建文件或者文件夹的操作。

wKiom1X1KXPBbd3BAABLPok14iQ351.jpg



另外在Linux下还有一种方式访问,就是在客户端安装samba-client包,然后用smbclient命令访问。

[root@tpp ~]# yum install -y samba-client
[root@tpp ~]# smbclient //192.168.0.109/myshare -U user1

wKiom1X1KPjSkEo1AAHtQV35lVw769.jpg

smb也有很多命令,大家可以试试。




实验三

要求:共享两个目录,public与private,其中public目录可匿名访问,任何人可以读写;private目录需要验证用户名密码才能够访问。但都是只读。

1、打开Samba的配置文件

[root@tpp ~]# vim /etc/samba/smb.conf        
[global]                           //修改如下两处
      workgroup = WORKGROUP
      server string = Samba Server Version %v
      security = user  
      map to guest = bad user             //这个很关键,实现匿名无须交互输入用户名和密码
      guest account = nobody              //匿名用户映射为nobody用户,系统中要有nobody用户
      encrypt passwords = yes             //用户的密码加密
      passdb backend = tdbsam
      load printers = yes
      cups options = raw
[public]
       comment = public
       path= /tmp/public
       browseable = yes                    //可以被浏览,就是在网络邻居中能看到共享名
       guest ok = yes                      //允许匿名访问,这个也需要设置,否则匿名无法访问
       public = yes
       create mask = 0644
       directory mask = 0755
[private]
       comment = project
       path= /tmp/private
       browseable = yes
       public = no
       guest ok = no
       write list = @train
       force user = root                   //强制制定建立的文件的属主
       create mask = 0644
       directory mask = 0755



2、创建测试目录

[root@tpp ~]# mkdir /tmp/public
[root@tpp ~]# mkdir /tmp/private

注:因为配置文件中定义过文件的权限,故不用再定义


3、创建用户

试验二已经定义过,我们就不用再定义。可查看下Samba的所有账号:

[root@tpp ~]# pdbedit -L


4、测试

(1)在Windows下测试:

win+r 输入\\192.168.0.109 进入后,可以看到两个文件夹。

public目录可直接访问,private目录要输入账号密码验证后才可以进入;不过都对这两个文件只读。

wKioL1X2zzDh8NJWAABSWe1hZs4430.jpg

wKiom1X2zPyxAY_cAAFCaBo22V4943.jpg





(2)在Linux下测试:

[root@tpp ~]# mount -t cifs -o username=user1,password=123456 //192.168.0.109/private /opt
[root@tpp ~]# df -h

wKiom1X2y3SQll5dAADFah6b0YM862.jpgwKioL1X2zajxAV2oAAEDAGitmXg752.jpg


[root@tpp ~]# mount -t cifs //192.168.0.109/public /mnt

直接回车,不用输入密码。

实验三http://shjiayeah.blog.163.com/blog/static/225604180201321261310349/




你可能感兴趣的:(samba)