SAMBA

一、用途:linux

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

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

二、建立用户:数据库

用tdbsam方式创建samba用户数据库,可使用smbpasswd -a 来创建samba用户,不过要创建的用户必须是系统中存在的用户,不过咱们能够不用smbpasswd,用pdbedit命令来完成操做,它的参数不少这里列出几个经常使用的:vim

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

三、在Linux上测试windows

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/dom

四、协议、端口、进程tcp

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

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

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

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

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

五、局域网链接方式

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

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

2)Domain model(主控模式)

由一台服务器,你们去访问服务器。

(samba能够实现于上术两种模式)

六、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

七、例子:

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

 

八、以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/

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息