• Samba服务器搭建配置


    本次环境:

      服务端-centos6.8-192.168.2.200

      客户端1-centos6.8-192.168.2.201

      客户端2-Windows7-192.168.2.104

    假设条件如下:

    • 使用者认证层级设定 (security) 为: user
    • 用户密码档案使用 TDB 数据库格式,默认档案在 /var/lib/samba/private/ 内;
    • 密码必须要加密;
    • 每个可使用 samba 的使用者均拥有自己的家目录;
    • 设定三个用户,名称为 smb1, smb2, smb3 ,且均加入 users 为次要群组。此三个用户 Linux 密码为 1234, Samba 密码则为 4321;
    • 分享 /home/project 这个目录,且资源名称取名为: project;
    • 加入 users 这个群组的使用者可以使用 //IP/project 资源,且在该目录下 users 这个群组的使用者具有写入的权限。

    所需要的软件与配置文件如下:

    • samba: 这个软件主要提供了 SMB 服务器所需的各项服务程序 (smbd 及 nmbd)、 的文件档、以及其他与 SAMBA 相关的 logrotate 配置文件及开机默认选项档案等;

    • samba-client: 这个软件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 文件格式的 mount.cifs、 取得类似网芳相关树形图的 smbtree 等等;

    • samba-common: 这个软件提供的则是服务器与客户端都会使用到的数据,包括 SAMBA 的主要配置文件 (smb.conf)、语法检验指令 (testparm) 等等;

    这三个软件你都得要安装才行喔!如果尚未安装的话,使用 yum 去装好它吧!安装完毕之后,你可以依序察看一下 Samba 的软件结构喔!与它相关的配置文件基本上有这些:

    • /etc/samba/smb.conf: 这是 Samba 的主要配置文件,基本上,咱们的 Samba 就仅有这个配置文件而已,且这个配置文件本身就是很详细的说明文件了,请用 vim 去查阅它吧!主要的设定项目分为服务器的相关设定 (global),如工作组、NetBIOS 名称与密码等级等, 以及分享的目录等相关设定,如实际目录、分享资源名称与权限等等两大部分。

    • /etc/samba/lmhosts: 早期的 NetBIOS name 需额外设定,因此需要这个 lmhosts 的 NetBIOS name 对应的 IP 檔。 事实上它有点像是 /etc/hosts 的功能!只不过这个 lmhosts 对应的主机名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!目前 Samba 预设会去使用你的本机名称 (hostname) 作为你的 NetBIOS name,因此这个档案不设定也无所谓。

    • /etc/sysconfig/samba: 提供启动 smbd, nmbd 时,你还想要加入的相关服务参数。

    • /etc/samba/smbusers: 由于 Windows 与 Linux 在管理员与访客的账号名称不一致,例如: administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系,可使用这个档案来设定

    • /var/lib/samba/private/{passdb.tdb,secrets.tdb}: 管理 Samba 的用户账号/密码时,会用到的数据库档案;

    • /usr/share/doc/samba-<版本>: 这个目录包含了 SAMBA 的所有相关的技术手册喔!也就是说,当你安装好了 SAMBA 之后,你的系统里面就已经含有相当丰富而完整的 SAMBA 使用手册了!值得高兴吧! ^_^,所以,赶紧自行参考喔!

    至于常用的脚本文件案方面,若分为服务器与客户端功能,则主要有底下这几个数据:

    • /usr/sbin/{smbd,nmbd}:服务器功能,就是最重要的权限管理 (smbd) 以及 NetBIOS name 查询 (nmbd) 两个重要的服务程序;

    • /usr/bin/{tdbdump,tdbtool}:服务器功能,在 Samba 3.0 以后的版本中,用户的账号与密码参数已经转为使用数据库了!Samba 使用的数据库名称为 TDB (Trivial DataBase)。 既然是使用数据库,当然要使用数据库的控制指令来处理啰。tdbdump 可以察看数据库的内容,tdbtool 则可以进入数据库操作接口直接手动修改帐密参数。不过,你得要安装 tdb-tools 这个软件才行;

    • /usr/bin/smbstatus:服务器功能,可以列出目前 Samba 的联机状况, 包括每一条 Samba 联机的 PID, 分享的资源,使用的用户来源等等,让你轻松管理 Samba 啦;

    • /usr/bin/{smbpasswd,pdbedit}:服务器功能,在管理 Samba 的用户账号密码时, 早期是使用 smbpasswd 这个指令,不过因为后来使用 TDB 数据库了,因此建议使用新的 pdbedit 指令来管理用户数据;

    • /usr/bin/testparm:服务器功能,这个指令主要在检验配置文件 smb.conf 的语法正确与否,当你编辑过 smb.conf 时,请务必使用这个指令来检查一次,避免因为打字错误引起的困扰啊!

    • /sbin/mount.cifs:客户端功能,在 Windows 上面我们可以设定『网络驱动器机』来连接到自己的主机上面。在 Linux 上面,我们则是透过 mount (mount.cifs) 来将远程主机分享的档案与目录挂载到自己的 Linux 主机上面哪!

    • /usr/bin/smbclient:客户端功能,当你的 Linux 主机想要藉由『网络上的芳邻』的功能来查看别台计算机所分享出来的目录与装置时,就可以使用 smbclient 来查看啦!这个指令也可以使用在自己的 SAMBA 主机上面,用来查看是否设定成功哩!

    • /usr/bin/nmblookup:客户端功能,有点类似 nslookup 啦!重点在查出 NetBIOS name 就是了。

    • /usr/bin/smbtree:客户端功能,这玩意就有点像 Windows 系统的网络上的芳邻显示的结果,可以显示类似『靠近我的计算机』之类的数据, 能够查到工作组与计算机名称的树状目录分布图!

    大致的软件结构就是这样,底下就准备来讲一个简单的案例吧!这样比较好介绍配置文件项目啦!

    一、服务端的搭建配置:

      1.安装所需软件

     1 [root@lys1 ~]# yum -y install samba samba-client samba-common
     2 已加载插件:fastestmirror
     3 设置安装进程
     4 Determining fastest mirrors
     5  * base: mirrors.nwsuaf.edu.cn
     6  * extras: mirrors.aliyun.com
     7  * updates: mirrors.aliyun.com
     8 base                                                                                                                                                                                                                 | 3.7 kB     00:00     
     9 extras                                                                                                                                                                                                               | 3.4 kB     00:00     
    10 updates                                                                                                                                                                                                              | 3.4 kB     00:00     
    11 updates/primary_db                                                                                                                                                                                                   | 1.4 MB     00:01     
    12 解决依赖关系
    13 --> 执行事务检查
    14 ---> Package samba.x86_64 0:3.6.23-35.el6_8 will be 安装
    15 ....................

    2、设定 smb.conf 配置文件与目录权限相关之设定

    1 [root@lys1 ~]# vim /etc/samba/smb.conf
     1 [global]
     2         workgroup       = vbirdhouse
     3         netbios name    = vbirdserver
     4         server string   = This is vbird's samba server
     5         unix charset    = utf8
     6         display charset = utf8
     7         dos charset     = cp950
     8         log file        = /var/log/samba/log.%m
     9         max log size    = 50
    10         load printers    = no
    11 
    12         # 与密码有关的设定项目,包括密码档案所在格式喔!
    13         security = user          <==这行就是重点啦!改成 user 层级
    14         passdb backend = tdbsam  <==使用的是 TDB 数据库格式!
    15 
    16 # 2. 分享的资源设定方面:删除 temp  加入 homes 与 project
    17 [homes]                                   <==分享的资源名称
    18         comment        = Home Directories
    19         browseable     = no               <==除了使用者自己外,不可被其他人浏览
    20         writable       = yes              <==挂载后可擦写此分享
    21         create mode    = 0664             <==建立档案的权限为 664
    22         directory mode = 0775             <==建立目录的权限为 775
    23 
    24 [project]                                 <==就是那三位使用者的共享资源
    25         comment    = smbuser's project
    26         path       = /home/project        <==实际的 Linux 上面的目录位置
    27         browseable = yes                  <==可被其他人所浏览到资源名称(非内容)
    28         writable   = yes                  <==可以被写入
    29         write list = @users               <==写入者有哪些人的意思

    3 、每次改完 smb.conf 你都需要重新检查一下语法正确否!

     1 [root@lys1 samba]# testparm 
     2 Load smb config files from /etc/samba/smb.conf
     3 rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
     4 Processing section "[homes]"
     5 Processing section "[project]"
     6 Loaded services file OK.
     7 Server role: ROLE_STANDALONE
     8 Press enter to see a dump of your service definitions 
     9 
    10 [global]
    11     dos charset = cp950
    12     unix charset = utf8
    13     display charset = utf8
    14     workgroup = VBIRDHOUSE
    15     netbios name = VBIRDSERVER
    16     server string = This is vbird's samba server
    17     log file = /var/log/samba/log.%m
    18     max log size = 50
    19     client signing = required
    20     load printers = No
    21     idmap config * : backend = tdb
    22 
    23 [homes]
    24     comment = Home Directories
    25     read only = No
    26     create mask = 0664
    27     directory mask = 0775
    28     browseable = No
    29 
    30 [project]
    31     comment = smbuser's project
    32     path = /home/project
    33     write list = @users
    34     read only = No
    35 [root@lys1 samba]# 

    4、建立共享目录并设置权限

    1 [root@lys1 samba]# mkdir /home/project
    2 [root@lys1 samba]# chgrp users /home/project
    3 [root@lys1 samba]# chmod 2770 /home/project
    4 [root@lys1 samba]# ll -d /home/project
    5 drwxrws---. 2 root users 4096 8月  13 02:06 /home/project
    6 [root@lys1 samba]# 

    5、设定可使用 Samba 的用户账号与密码

     1 [root@lys1 samba]# useradd -G users smb1
     2 [root@lys1 samba]# useradd -G users smb2
     3 [root@lys1 samba]# useradd -G users smb3
     4 [root@lys1 samba]# echo 1234 | passwd --stdin smb1
     5 更改用户 smb1 的密码 。
     6 passwd: 所有的身份验证令牌已经成功更新。
     7 [root@lys1 samba]# echo 1234 | passwd --stdin smb2
     8 更改用户 smb2 的密码 。
     9 passwd: 所有的身份验证令牌已经成功更新。
    10 [root@lys1 samba]# echo 1234 | passwd --stdin smb3
    11 更改用户 smb3 的密码 。
    12 passwd: 所有的身份验证令牌已经成功更新。
    13 [root@lys1 samba]# 

    6、通过pdbedit命令把刚创建的3个账号添加成Samba使用者

      pdbedit:

    选项与参数:
    -L :列出目前在数据库当中的账号与 UID 等相关信息;
    -v :需要搭配 -L 来执行,可列出更多的讯息,包括家目录等数据;
    -w :需要搭配 -L 来执行,使用旧版的 smbpasswd 格式来显示数据;
    -a :新增一个可使用 Samba 的账号,后面的账号需要在 /etc/passwd 内存在者;
    -r :修改一个账号的相关信息,需搭配很多特殊参数,请 man pdbedit;
    -x :删除一个可使用 Samba 的账号,可先用 -L 找到账号后再删除;
    -m :后面接的是机器的代码 (machine account),与 domain model 有关!
     1 [root@lys1 samba]# pdbedit -a -u smb1
     2 new password:  
     3 retype new password:
     4 Unix username:        smb1
     5 NT username:          
     6 Account Flags:        [U          ]
     7 User SID:             S-1-5-21-3802184857-4025074321-3003230506-1000
     8 Primary Group SID:    S-1-5-21-3802184857-4025074321-3003230506-513
     9 Full Name:            
    10 Home Directory:       \vbirdserversmb1
    11 HomeDir Drive:        
    12 Logon Script:         
    13 Profile Path:         \vbirdserversmb1profile
    14 Domain:               VBIRDSERVER
    15 Account desc:         
    16 Workstations:         
    17 Munged dial:          
    18 Logon time:           0
    19 Logoff time:          三, 06 2月 2036 23:06:39 CST
    20 Kickoff time:         三, 06 2月 2036 23:06:39 CST
    21 Password last set:    六, 13 8月 2016 02:16:15 CST
    22 Password can change:  六, 13 8月 2016 02:16:15 CST
    23 Password must change: never
    24 Last bad password   : 0
    25 Bad password count  : 0
    26 Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    27 [root@lys1 samba]# pdbedit -a -u smb2
    28 [root@lys1 samba]# pdbedit -a -u smb3

    查询下目前已存在的samba账号

    1 [root@lys1 samba]# pdbedit -L
    2 smb1:500:
    3 smb3:502:
    4 smb2:501:
    5 [root@lys1 samba]# 

    7、开启Samba并进行自我测试

    1 smb2:501:
    2 [root@lys1 samba]# /etc/init.d/smb start
    3 启动 SMB 服务:                                            [确定]
    4 [root@lys1 samba]# /etc/init.d/nmb start
    5 启动 NMB 服务:                                            [确定]
     1 [root@lys1 samba]# smbclient -L //127.0.0.1 -U smb1
     2 Enter smb1's password:    <==输入 smb1 在 pdbedit 所建立的密码
     3 Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.23-35.el6_8]
     4 
     5     Sharename       Type      Comment
     6     ---------       ----      -------
     7     project         Disk      smbuser's project
     8     IPC$            IPC       IPC Service (This is vbird's samba server)
     9     smb1            Disk      Home Directories
    10 Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba 3.6.23-35.el6_8]
    11 
    12     Server               Comment
    13     ---------            -------
    14     VBIRDSERVER          This is vbird's samba server
    15 
    16     Workgroup            Master
    17     ---------            -------
    18     VBIRDHOUSE           VBIRDSERVER
    19 [root@lys1 samba]# 
    自我挂载测试
    1 [root@lys1 /]# mount -t cifs //127.0.0.1/smb1 /mnt -o username=smb1,password=4321
    2 [root@lys1 /]# ll -a /mnt/
    3 ls: 正在读取目录/mnt/: 权限不够
    4 总用量 0
    5 [root@lys1 /]# 

    分析:应该是 SELinux 的问题吧!根据 /var/log/messages 的讯息,进行如下的动作就能够处理好这个程序!

    1 setsebool   setsid      setsysfont  
    2 [root@lys1 /]# setsebool -P samba_enable_home_dirs=1
    3 [root@lys1 /]# ls -a /mnt
    4 .  ..  .bash_logout  .bash_profile  .bashrc
    5 [root@lys1 /]# 
    1 [root@lys1 /]# df -h
    2 Filesystem            Size  Used Avail Use% Mounted on
    3 /dev/mapper/vg_lys1-lv_root
    4                        18G  900M   16G   6% /
    5 tmpfs                 491M     0  491M   0% /dev/shm
    6 /dev/sda1             477M   28M  425M   7% /boot
    7 //127.0.0.1/smb1       18G  900M   16G   6% /mnt
    8 [root@lys1 /]# umount /mnt
    9 [root@lys1 /]# 

    二、客户端搭建使用

    1、Windows7的使用:

    双击网络,启动网络发现,会发现Samba服务器:VBIRDSERVER如下图:

    双击VBIRDSERVER服务器会出现等了界面,输出在Samba上创建的其中一个账户如下图:

     

    2、linux客户端的使用

      先安装客户端软件

    1 [root@lys2 ~]# yum -y install samba-client samba-common

      挂载使用

    1 [root@lys2 ~]# mount -t cifs //192.168.2.200/smb2 /mnt -o username=smb2,password=4321,codepage=cp950 
    2 [root@lys2 ~]# df -h
    3 Filesystem            Size  Used Avail Use% Mounted on
    4 /dev/mapper/vg_lys2-lv_root
    5                        18G  862M   16G   6% /
    6 tmpfs                 491M     0  491M   0% /dev/shm
    7 /dev/sda1             477M   28M  425M   7% /boot
    8 //192.168.2.200/smb2   18G  900M   16G   6% /mnt

    客户端使用正常。

    去服务器看下使用log是否生成:

     1 [root@lys1 home]# ll /var/log/samba/
     2 总用量 16
     3 drwx------. 4 root root 4096 8月  13 02:19 cores
     4 -rw-r--r--. 1 root root    0 8月  13 02:20 log.127.0.0.1
     5 -rw-r--r--. 1 root root    0 8月  13 02:43 log.192.168.2.104
     6 -rw-r--r--. 1 root root    0 8月  13 03:00 log.192.168.2.201
     7 -rw-r--r--. 1 root root    0 8月  13 02:43 log.liuyisai-pc
     8 -rw-r--r--. 1 root root  359 8月  13 02:20 log.nmbd
     9 -rw-r--r--. 1 root root 1523 8月  13 02:59 log.smbd
    10 -rw-r--r--. 1 root root    0 8月  13 02:20 log.vbirdserver
    11 drwx------. 2 root root 4096 5月  12 13:23 old

    OK,实验成功!!!

     
  • 相关阅读:
    0.0pomelo的优缺点
    python操作MySQL
    MySQL-基本查询语句及方法,连表和子查询
    MySQL-外键对应关系
    MySQL--存储引擎、数据类型、约束条件
    数据库MySQL安装、基本指令
    并发编程-协程、池,io模型
    python并发编程-GIL全局解释锁,Event事件,信号量
    并发编程-线程
    并发编程-进程
  • 原文地址:https://www.cnblogs.com/liuyisai/p/5785853.html
Copyright © 2020-2023  润新知