SAMBA

1、用途:

文件共享:可以在Linux/Windows之间,类似于windows之间的网上邻居,可以直接访问文件并修改。

  • a服务器全局设置smb.conf  [global]主机信息部分,以global为依据
  • b规划准备共享的目录参数smb.conf  [....]共享的信息,以个别的目录名称为依据
  • c建立所需要的文件系统
  • d建立samba账户
  • e启动服务smbd、nmdb

2、创建用户:

用tdbsam方式建立samba用户数据库,可以使用smbpasswd -a 来建立samba用户,不过要建立的用户必须是系统中存在的用户,不过我们可以不用smbpasswd,用pdbedit命令来完成操作,它的参数很多这里列出几个常用的:

  • pdbedit -a -u username 添加一个用户 -r修改 -x删除
  • pdbedit -L (username) 查看samba用户
  • smbpasswd username 修改用户密码

3、在Linux上测试

smbclient -L //192.168.1.144 -U username

[root@CentOS6 adduser]# smbclient -L //127.0.0.1 -U user1
Enter user1's password: 
Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9]

    Sharename       Type      Comment
    ---------       ----      -------
    homes           Disk      Home Directories
    IPC$            IPC       IPC Service (Samba Server Version 3.6.23-42.el6_9)
    user1           Disk      Home Directories
Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9]

    Server               Comment
    ---------            -------
    CENTOS6-SMB          Samba Server Version 3.6.23-42.el6_9

    Workgroup            Master
    ---------            -------
    SAMBA3-SHARE         CENTOS6-SMB

 linux挂载smb

sudo mount -o username=colorv,password=123456 //192.168.0.239/data2 /mnt/smb-data2/

4、协议、端口、进程

1)没有使用类似TCP/IP之类的传输协议,因此不需要IP设置的。采用NetBIOS协议:主机在NetBIOS协议当中的定义为使用“NetBIOS Nmae“,每台主机必须要有不同的NetBIOS Name才行。

2)(windows网上邻居:允许你登陆,开放资源给你)samba通过两个服务来控制这两个步骤:

nmbd:该daemon用来管理工作组、NetBIOS Name等的解析。用到UDP137、UDP138端口负责名称解析任务。['di:mən]守护进程

smdb:该daemon用来管理samba主机共享个的目录、文件、打印机等。用到TCP139、tcp445(445不一定使用)传输数据

3)开放以上端口、启动以上两个服务

5、局域网连接方式

1)Peer/Peer(Workgroup, 对等模式)

各台电脑都是平等的,互相访问资源,此时需要知道对方电脑的用户名密码。

2)Domain model(主控模式)

由一台服务器,大家去访问服务器。

(samba可以实现于上术两种模式)

6、samba配置文件

/etc/samba/smb.conf

1)#和;都是注释

2)[global]

工作组、主机的NetBIOS名称、字符编码的显示、日志文件的设置、是否使用密码、密码验证机制等

workgroup = 工作组的名称:注意,工作组要相同

netbios name = 主机的NetBIOS名称,每部主句都不同

server string = 主机的简易说明

display charset = 本服务器上面的显示编码,一般与unix charset相同

unix charset = 在linux服务器上面所使用的编码, /etc/sysconfig/i18n

dos charset = windows客户端的编码,gb2312写为cp936,(CMD:chcp命令查看)

log file = 日志文件存储位置,可使用变量处理

max log size = 日志文件最大能达到多少Kbytes,

security = share、user、domain(安全程度:不需要密码、使用samba服务器本身的密码数据库,用户必须存在于linux账户、使用外部服务器密码,也就是samba是客户端之意,此时需要提供password server = IP参数)

encrypt passwords = Yes 密码要加密,为默认

passdb back = 数据库格式,默认为tdbsam(/var/lib/samba/private/passwd.tdb)

# 跟防火墙的议题有关的设定
        hosts allow = 127. 192.168.100.254 192.168.100.10 192.168.1.

3)[共享资源名称]

目录权限、谁可以浏览该目录、读写等

comment = 目录说明

path = 共享目录

browseable = 是否让所有用户看到这个项目

writalbe =   (read only =)

create mode = 文件权限

directory mode = 目录权限(不要与系统目录权限冲突)

writelist = 用户或 @组,这个选项可以指定能够进入到此资源名称的特定用户

注:变量功能,eg 

  • %S
[home]
    valid users = %S    #允许的登陆着:表示任何可登陆的用户都能够登陆的意思,如果是user1,homes就会自动变为[user1]  
  • %m:代表client端的netbios主机名  logfile = /var/log/samba/log.%m
  • %M
  • %L
  • %H
  • %U
  • %g
  • %h
  • %I
  • %T

7、例子:

1)无密码

[root@www samba]# vim smb.conf
# 1. 先设定好服务器整体环境方面的参数
[global]
        # 与主机名有关的设定信息
        workgroup     = vbirdhouse
        netbios name  = vbirdserver
        server string = This is vbird's samba server

        # 与语系方面有关的设定项目喔,为何如此设定请参考前面的说明
        unix charset    = utf8
        display charset = utf8
        dos charset     = cp950

        # 与登录文件有关的设定项目,注意变量 (%m)
        log file = /var/log/samba/log.%m
        max log size = 50

        # 这里才是与密码有关的设定项目哩!
        security = share

        # 修改一下打印机的加载方式,不要加载啦!
        load printers	= no

# 2. 分享的资源设定方面:主要得将旧的批注,新的加入!
#    先取消 [homes], [printers] 的项目,然后针对 /tmp 的设定,可浏览且可写入喔
[temp]                                     <==分享资源名称
        comment    = Temporary file space  <==简单的解释此资源
        path       = /tmp                  <==实际 Linux 分享的目录
        writable   = yes                   <==是否可写入?在此例为是的
        browseable = yes                   <==能不能被浏览到资源名称
        guest ok   = yes                   <==单纯分享时,让用户随意登入的设定值

testparm (-v)检查配置文件,若有中括号表示有问题(这个不台清楚了)

开启服务、开机自启、查看端口(端口是自动开放吗,这个问题好幼稚吗)

本机测试,见上边(//127.0.0.1)

linux挂载:mount -t cifs //127.0.0.1/temp /mnt,然后df能看到

2)密码user

[root@www ~]# vim /etc/samba/smb.conf
[global]
        workgroup       = vbirdhouse
        netbios name    = vbirdserver
        server string   = This is vbird's samba server
        unix charset    = utf8
        display charset = utf8
        dos charset     = cp950
        log file        = /var/log/samba/log.%m
        max log size    = 50
        load printers    = no

        # 与密码有关的设定项目,包括密码档案所在格式喔!
        security = user          <==这行就是重点啦!改成 user 层级
        passdb backend = tdbsam  <==使用的是 TDB 数据库格式!

# 2. 分享的资源设定方面:删除 temp  加入 homes 与 project
[homes]                                   <==分享的资源名称  homes是最特殊的资源目录名称!
        comment        = Home Directories
        browseable     = no               <==除了使用者自己外,不可被其他人浏览
        writable       = yes              <==挂载后可擦写此分享
        create mode    = 0664             <==建立档案的权限为 664
        directory mode = 0775             <==建立目录的权限为 775

[project]                                 <==就是那三位使用者的共享资源
        comment    = smbuser's project
        path       = /home/project        <==实际的 Linux 上面的目录位置
        browseable = yes                  <==可被其他人所浏览到资源名称(非内容)
        writable   = yes                  <==可以被写入
        write list = @users               <==写入者有哪些人的意思:@用户组

# 2. 每次改完 smb.conf 你都需要重新检查一下语法正确否!
[root@www ~]# testparm

注意共享目录的用户组,权限等设置!

添加samba账户(先linux账户)

可能需要修改selinux:setsebool -P samba_enable_home_dirs=1

8、以samba为例子,介绍selinux

1)找出与samba有关的selinuxguize:getsebool -a | grep samba

[root@www ~]# getsebool -a | grep samba
samba_domain_controller --> off  <==PDC 时可能会用到
samba_enable_home_dirs --> off   <==开放用户使用家目录
samba_export_all_ro --> off      <==允许只读文件系统的功能
samba_export_all_rw --> off      <==允许读写文件系统的功能
samba_share_fusefs --> off
samba_share_nfs --> off
use_samba_home_dirs --> off      <==类似用户家目录的开放!
virt_use_samba --> off

2)设置:setseboll -P samba_enable_home_dirs=1解决无法挂载等问题

对共享目录使用 chcon -t samba_share_t  /home/project

如果共享的目录不只是samba,还包含ftp等,那就可能需要使用public_content_t这个大家都能够读取的类型才行。

其他:

iptable

利用 Quota 限制用户磁盘使用

Linux 上挂载 Samba(Windows & macOS 共享文件夹)的正确姿势

 sudo mount -t cifs -o username=colorv,password=123456  //192.168.0.239/data2 smb-dir/

原文地址:https://www.cnblogs.com/daduryi/p/6613363.html