Samba服务

简述

在早期的网络世界中,档案数据在不同主机之间的传输大多是使用FTP服务,但是FTP服务传输档案有一些小小的问题,那就是我们无法直接修改主机上面的档案数据,也就是说我们如果想要修改某个档案的数据时,就必须将该档案的服务器下载后才能修改,这样就很麻烦了。其实解决这个问题也很简单,NFS服务就很好的解决档案数据不能直接修改的问题,因为NFS服务是直接将共享目录挂载到客户端的机器上,那么共享目录就好像成了自己的目录一样,共享数据的使用自然就很方便,但是,NFS也有一些小小的问题,它仅能使Unix Like的机器相互分享。那么我要是需要Windows与Unix-Like这两个不同的平台相互分享呢?那该怎么办?也就是说,FTP服务实现了跨平台分享,却无法修改共享数据;NFS解决了共享数据的修改问题,却没办法实现跨平台的共享。所以,SAMBA服务也就随着需要产生了。 它综合了FTP和NFS的有点,既实现了跨平台的传输,还满足了修改数据的功能。


安装包

服务端:

[root@jiangpeisi ~]# yum install samba -y

客户端:

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

samba实例配置文件详解

注:;开头的行都是实例配置,并不会起作用,#开的的行时注释行

[global]

# ----------------------- Network-Related Options -------------------------
        workgroup = MYGROUP                                        设置Samba所在工作组或域名
        server string = Samba Server Version %v                      设置服务器描述信息

;       netbios name = MYSERVER                             设置服务器的NetBIOS名称

;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24            这只Samba服务器所使用的网卡接口,可以实验网卡的名称或者IP地址
;       hosts allow = 127. 192.168.12. 192.168.13.                     设置允许访问Samba服务器的网络地址、主机地址及域名,多个参数以空格隔开

# --------------------------- Logging Options -----------------------------
        log file = /var/log/samba/log.%m                            设置日志文件保存路径和名称。%m代表客户端主机名
        max log size = 50                              设置日志文件的最大值,单位为KB。当值为0时,表示不限制文件大小

# ----------------------- Standalone Server Options ------------------------
        security = user                       设置用户访问Samba服务器的安全级别
;      encrypt passwords = yes           设置是否对Samba的密码进行加密
;      smb passwd file = /etc/samba/smbpasswd           设置Samba密码文件的路径和名称
        passdb backend = tdbsam                    如果使用加密密码,指定所使用的密码数据库类型


# ----------------------- Domain Members Options ------------------------

;       security = domain                          设置安全级别为domain,需要指定用户名和密码,指定Windows域控制器做身份验证
;       passdb backend = tdbsam
;       realm = MY_REALM

;       password server = <NT-Server-Name>          指定身份验证服务器


#----------------------------- Name Resolution -------------------------------

;       wins support = yes
;       wins server = w.x.y.z
;       wins proxy = yes

;       dns proxy = yes

# --------------------------- Printing Options -----------------------------

        load printers = yes             是否允许使用Samba打印机共享
        cups options = raw            

;       printcap name = /etc/printcap
        # obtain a list of printers automatically on UNIX System V systems:
;       printcap name = lpstat
;       printing = cups

# --------------------------- File System Options ---------------------------

;       map archive = no
;       map hidden = no
;       map read only = no
;       map system = no
;       store dos attributes = yes
#============================ Share Definitions ==============================

[homes]                           []内设置共享目录的名称
        comment = Home Directories                                设置共享目录的注释说明
        browseable = no                         设置在浏览时显示共享目录
        writable = yes                              设置共享目录可写
        create mode              设置默认创建的文件的权限
        directory mode           设置默认创建的目录的权限
        force  group             设置默认创建的文件的群组
        force user               设置默认创建的文件的所有者
        hosts allow              设置允许访问该共享资源的主机、网段、域
        hosts deny               设置不能访问该共享资源的主机、网段、域
;       valid users = %S                          设置只有允许访问共享目录的用户
;       valid users = MYDOMAIN\%S                

[printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = no
        guest ok = no             设置是否允许匿名用户访问共享资源
        writable = no
        printable = yes
;       [netlogon]
;       comment = Network Logon Service
;       path = /var/lib/samba/netlogon
;       guest ok = yes
;       writable = no
;       share modes = no
;       [Profiles]
;       path = /var/lib/samba/profiles
;       browseable = no
;       guest ok = yes

;       [public]
;       comment = Public Stuff
;       path = /home/samba
;       public = yes
;       writable = no
;       printable = no
;       write list = +staff         设置可写的用户和群组

配置实例

share级别配置
1.具体参数:

  • Samba服务器所在工作组为:workgroup
  • Samba服务器描述信息:Samba Server
  • Samba服务器NetBIOS名称:test
  • 共享目录:sharedir
  • 共享目录名:share
  • 允许访问服务器的网络:192.168.32.0/24
  • 日志文件路径:/var/log/samba/log.%m
  • 服务器网卡:ens33
  • 访问权限:读写

2.创建共享目录

[root@jiangpeisi ~]# mkdir sharedir

3.修改配置文件

[root@jiangpeisi userdir]# vim /etc/samba/smb.conf

修改配置如下:

[global]
        workgroup = SAMBA
#       security = share
        server string = Samba Server
        netbios name = test
        interfaces = ens33 lo
        hosts allow = 192.168.32. 127.
        log file = /var/log/samba/log.%m

[share]
        comment = share
        path = /sharedir
        public = yes

貌似现在samba不支持直接指定security = share选项,添加会报错警告,这里先注释掉。
4.服务器修改共享文件权限

[root@jiangpeisi ~]# chmod 777 -R /sharedir/

5.客户端登陆并创建文件

[root@jiangpesi ~]# smbclient  //192.168.32.152/share
Enter SAMBA\root's password: 
Anonymous login successful
Try "help" to get a list of possible commands.
mb: \> mkdir a
smb: \> 

6.服务器查看客户端创建的文件

[root@jiangpeisi samba]# cd /sharedir/
[root@jiangpeisi sharedir]# ll
总用量 0
drwxr-xr-x 2 nobody nobody 6 4月  13 22:56 a

由于使用的匿名登陆,所以客户端登陆时会默认映射到nobody(nfsnoboody)用户,所以创建的文件所属用户和组都为noboody。

user级别配置
1.具体参数:

  • Samba服务器所在工作组为:workgroup
  • Samba服务器描述信息:Samba Server
  • Samba服务器NetBIOS名称:test
  • 共享目录:userdir
  • 共享目录名:user
  • 允许访问服务器的网络:192.168.0.0/16
  • 日志文件路径:/var/log/samba/log.%m
  • 服务器网卡:ens33
  • 对Samba密码进行加密
  • 加密数据库类型为:tdbsam
  • userdir目录的所有者和群组所有者为user
  • 访问权限:读写

2.创建组和用户

[root@jiangpeisi ~]# useradd user

2.创建samba用户

[root@jiangpeisi ~]# smbpasswd  -a user
New SMB password:
Retype new SMB password:
Added user user.

3.创建共享目录

[root@jiangpeisi ~]# mkdir /userdir

4.递归设置userdir目录的所有者和组为user

[root@jiangpeisi ~]# chown -R user.user /userdir/

5.修改配置文件

[root@jiangpeisi userdir]# vim /etc/samba/smb.conf

修改配置文件如下

[global]
        workgroup = SAMBA
        server string = Samba Server
        netbios name = test
        interfaces = ens33
        hosts allow = 192.168. 127.
        log file = /var/log/samba/log.%m
        security = user

        passdb backend = tdbsam
        encrypt passwords = yes
[user]
        comment = user
        path = /userdir
        writable = yes
        public = no

测试

linux测试
1.客户端登陆:

[root@jiangpesi ~]# smbclient  //192.168.32.152/user -U user
Enter SAMBA\user's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sat Apr 13 23:10:58 2019
  ..                                 DR        0  Sat Apr 13 23:10:58 2019

        17811456 blocks of size 1024. 15489980 blocks available
smb: \> mkdir a
smb: \> ls
  .                                   D        0  Sat Apr 13 23:23:23 2019
  ..                                 DR        0  Sat Apr 13 23:10:58 2019
  a                                   D        0  Sat Apr 13 23:23:23 2019

        17811456 blocks of size 1024. 15490020 blocks available

2.服务端查看:

[root@jiangpeisi userdir]# ll
总用量 0
drwxr-xr-x 2 user user 6 4月  13 23:23 a

3.挂载

[root@jiangpesi ~]# mount -o username=user //192.168.32.152/user /mnt/user
mount: //192.168.32.152/user 写保护,将以只读方式挂载
mount: 无法以只读方式挂载 //192.168.32.152/user

出现此问题是因为缺少cifs-utils,安装包后重新挂载。

[root@jiangpesi ~]# yum -y install cifs-utils
[root@jiangpesi ~]# mount -o username=user //192.168.32.152/user /mnt/user

[root@jiangpesi ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root     17G  2.0G   15G   12% /
devtmpfs               478M     0  478M    0% /dev
tmpfs                  489M     0  489M    0% /dev/shm
tmpfs                  489M  6.7M  482M    2% /run
tmpfs                  489M     0  489M    0% /sys/fs/cgroup
/dev/sda1             1014M  139M  876M   14% /boot
tmpfs                   98M     0   98M    0% /run/user/0
//192.168.32.152/user   17G  2.3G   15G   14% /mnt/user

4.挂载后使用
客户端创建文件:

[root@jiangpesi ~]# cd /mnt/user/
[root@jiangpesi user]# touch b
[root@jiangpesi user]# ll
总用量 0
drwxr-xr-x. 2 1000 1000 0 4月  13 23:23 a
-rw-r--r--. 1 1000 1000 0 4月  13 23:37 b

服务端查看:

[root@jiangpeisi userdir]# ll
总用量 0
drwxr-xr-x 2 user user 6 4月  13 23:23 a
-rw-r--r-- 1 user user 0 4月  13 23:37 b

windows测试:
1.客户端登陆
image_1d8cqg1u213hqrkb1a6q13k3f5u2m.png-14.6kB
注意是斜杠(\)反斜杠不是(/)windows和linux路径分割符不同。
image_1d8cqgahn1an61bth4oijghv7q33.png-59.6kB
2.创建文件
image_1d8cqgnsdlcb9gt1b3c1rqhs5a3g.png-63.4kB
3.编辑文件
image_1d8cqhc3ab037pi7soav510om3t.png-17kB
4.服务器查看

[root@jiangpeisi userdir]# ll
总用量 4
drwxr-xr-x 2 user user 6 4月  13 23:23 a
-rw-r--r-- 1 user user 0 4月  13 23:37 b
-rwxr--r-- 1 user user 9 4月  13 23:45 新建文本文档.txt
[root@jiangpeisi userdir]# cat 新建文本文档.txt 
测试
[root@jiangpeisi userdir]# 

windows添加网络位置
1.在设备和驱动区域点击右键
image_1d8cqme6g12291vv960alljvvl57.png-44.7kB
2.添加服务器共享目录位置
image_1d8cqn2to142t1u2sjdd1sl91lj95k.png-21.5kB
3.添加完成
image_1d8cqnd2g88br2k1kss1ua219o061.png-37.9kB
添加完网络位置,samba共享目录就可以像本地windows本地目录一样使用了。