• linux SAMBA文件服务器


    用途

    提供linux和Windows系统的互相文件分享。

    SAMBA包部署方法

    yum -y install samba samba-client  samba-common
    
    # SMABA服务器的状态观察,主要的目的是查阅目前 SAMBA 有多少人来联机, 且哪些资源共享已经被使用等等的信息。
    [root@www ~]# smbstatus [-pS] [-u username]
    选项与参数:
    -p :列出已经使用 SAMBA 联机的程序 PID ;
    -S :列出已经被使用的资源共享状态;
    -u :只列出某个用户相关的分享数据
    
    • samba: 这个软件主要提供了 SMB 服务器所需的各项服务程序 (smbd 及 nmbd)、 的文件档、以及其他与 SAMBA 相关的 logrotate 配置文件及开机默认选项档案等;
    • samba-client: 这个软件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 文件格式的 mount.cifs、 取得类似网上邻居相关树形图的 smbtree 等等;
    • samba-common: 这个软件提供的则是服务器与客户端都会使用到的数据,包括 SAMBA 的主要配置文件 (smb.conf)、语法检验指令 (testparm) 等等;

    不需要密码的SAMBA共享的部署

    [root@www ~]# cat /etc/sysconfig/i18n
    LANG="zh_TW.UTF-8"  <==检查linux系统的语系!
    
    [root@www ~]# cd /etc/samba
    [root@www samba]# cp smb.conf smb.conf.raw  <==先备份!
    [root@www samba]# vim smb.conf
    
    # 1. 先设定好服务器整体环境方面的参数
    [global]
            # 与主机名有关的设定信息
            workgroup     = study_linux     #工作组的名称
            netbios name  = jet_server    #主机的 NetBIOS 名称
            server string = This is jet's samba server  #主机的简易说明
    
            # 与语系方面有关的设定项目,在新版的samba中语系部分可以忽略。
            unix charset    = utf8        #在 Linux 服务器上面所使用的编码,就是刚查看的 i18n 的编码
            display charset = utf8        #自己服务器上面的显示编码, 与unix charset相同
            dos charset     = cp950    #就是 Windows 客户端的编码,使用的是big5编码
    
            # 与登录文件有关的设定项目,注意变量 (%m)
            log file = /var/log/samba/log.%m   #登录日志放置的目录,这里使用了变量
            max log size = 50        #登录日志最大能使用多少空间,单位是KB,超出则被rotate掉。
    
            #变量解释:
                # %m:代表 Client 端的 NetBIOS 主机名喔!
                # %M:代表 Client 端的 Internet 主机名喔!就是 HOSTNAME。
                # %L:代表 SAMBA 主机的 NetBIOS 主机名。
                # %H:代表用户的家目录。
                # %U:代表目前登入的使用者的使用者名称
                # %g:代表登入的使用者的组名。
                # %h:代表目前这部 SAMBA 主机的 HOSTNAME 喔!注意是 hostname 不是 NetBIOS name 喔!
                # %I:代表 Client 的 IP 咯。
                # %T:代表目前的日期与时间
    
            # 与密码有关的设定项目
            security = share        #share, user, domain,三选一,share不需要密码,user使用SMABA服务器本身账户密码,domain使用外部密码
    
            # 修改一下打印机的加载方式
            load printers	= no        #不需要打印服务
    
    # 2. 分享的资源设定方面:
    
    [temp]                                     #<==分享资源名称
            comment    = Temporary file space  #<==简单的解释此资源
            path       = /tmp                  #<==实际 Linux 分享的目录
            writable   = yes                   #<==是否可写入?在此例为是的
            browseable = yes                   #<==能不能被浏览到资源名称
            guest ok   = yes                   #<==单纯分享时,让用户随意登入的设定值
    
    [root@www ~]# testparm        #启动服务之前通过这个命令检查smb.conf的语法配置是否正确
    选项与参数:
    -v :查阅完整的参数设定,连同默认值也会显示出来!
    
    [root@www ~]# /etc/init.d/smb start  
    [root@www ~]# /etc/init.d/nmb start
    #记得服务开机启动也要打开,这个方法省略。
    
    # linux下查看samba共享的资源并挂载使用的方法
    [root@www ~]# smbclient -L [//主机或IP] [-U 使用者账号]
    选项与参数:
    -L :仅查阅后面接的主机所提供分享的目录资源;
    -U :以后面接的这个账号来尝试取得该主机的可使用资源
    [root@www ~]# mount -t cifs //127.0.0.1/temp /mnt
    
    # windows下使用的方法简单,所以省略。
    

    需要密码的SAMBA共享的部署

    # 1. 开始配置重要的 smb.conf !
    [root@www ~]# vim /etc/samba/smb.conf
    [global]
            workgroup       = study_linux
            netbios name    = jet_server
            server string   = This is jet'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]                                   #<==分享的资源名称
            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               #<==写入者有哪些人的意思,开放给users群组。
    
    # 2. 每次改完 smb.conf 你都需要重新检查一下语法正确否!
    [root@www ~]# testparm  
    
    # 3. 设定目录实际权限
    [root@www ~]# mkdir /home/project
    [root@www ~]# chgrp users /home/project
    [root@www ~]# chmod 2770 /home/project
    [root@www ~]# ll -d /home/project
    drwxrws---. 2 root users 4096 Jul 13 13:15 /home/project
    
    # 4. 设定samba的使用者账号,这个账号必须存在于/etc/passwd
    
    # 4.1 先来建立所需要的各个账号,但假设 student 已经存在了!
    [root@www ~]# useradd -G users smb1
    [root@www ~]# useradd -G users smb2
    [root@www ~]# useradd -G users smb3
    [root@www ~]# echo 1234 | passwd --stdin smb1
    [root@www ~]# echo 1234 | passwd --stdin smb2
    [root@www ~]# echo 1234 | passwd --stdin smb3
    
    # 4.2 使用 pdbedit 指令功能增加samba账号
    [root@www ~]# pdbedit -L [-vw]            #<==单纯的察看帐户信息
    [root@www ~]# pdbedit -a|-r|-x -u 账号    #<==新增/修改/删除账号
    [root@www ~]# pdbedit -a -m -u 机器账号   #<==与 PDC 有关的机器码
    #选项与参数:
    # -L :列出目前在数据库当中的账号与 UID 等相关信息;
    # -v :需要搭配 -L 来执行,可列出更多的讯息,包括家目录等数据;
    # -w :需要搭配 -L 来执行,使用旧版的 smbpasswd 格式来显示数据;
    # -a :新增一个可使用 Samba 的账号,后面的账号需要在 /etc/passwd 内存在者;
    # -r :修改一个账号的相关信息,需搭配很多特殊参数,请 man pdbedit;
    # -x :删除一个可使用 Samba 的账号,可先用 -L 找到账号后再删除;
    # -m :后面接的是机器的代码 (machine account),与 domain model 有关!
    
    # 实际操作如下:
    # 4.3 创建samba账户:
    [root@www ~]# pdbedit -a -u smb1
    new password: <==输入 1234 这个密码
    retype new password: <==再输入一次!
    Unix username:        smb1   <==底下为输入正确后的显示结果!
    ……(更多省略)……
    
    [root@www ~]# pdbedit -a -u smb2
    [root@www ~]# pdbedit -a -u smb3
    [root@www ~]# pdbedit -a -u student
    
    # 4.4 查询目前已经存在的 Samba 账号
    [root@www ~]# pdbedit -L
    smb1:2004:
    smb3:2006:
    smb2:2005:
    student:505:
    # 仅会列出账号与 UID 而已
    
    #  4.5 尝试修改与删除 smb3 这个账号看看
    [root@www ~]# smbpasswd smb3
    New SMB password: 
    Retype new SMB password:
    # 修改密码比较特殊,管理密码参数是使用 pdbedit,修改密码得要用 smbpasswd 
    
    # 4.6 删除smb3账户,此时你就看不到 smb3 这个用户!
    [root@www ~]# pdbedit -x -u smb3
    [root@www ~]# pdbedit -Lw
    
    # 5.  启动samba服务,开机启动的方法省略。
    [root@www ~]# /etc/init.d/smb restart
    [root@www ~]# /etc/init.d/nmb restart
    
    # 6. 测试samba服务
    #Windows的客户端很简单,所以省略;
    #linux客户端测试方法如下:
    
    # 1. 先用匿名登录试看看!
    [root@www ~]# smbclient -L //127.0.0.1
    Enter root's password:      <==直接按下 [Enter] 即可。
    Anonymous login successful  <==有看到匿名的字样了!
    Domain=[study_linux] OS=[Unix] Server=[Samba 3.5.4-68.el6_0.2]
            Sharename       Type      Comment
            ---------       ----      -------
            project         Disk      smbuser's project
            IPC$            IPC       IPC Service (This is vbird's samba server)
    ....(底下省略)....
    
    # 2. 再使用 smb1 这个账号登入试看看
    [root@www ~]# smbclient -L //127.0.0.1 -U smb1
    Enter smb1's password:  <==输入 smb1 在 pdbedit 所建立的密码!
    Domain=[study_linux] OS=[Unix] Server=[Samba 3.5.4-68.el6_0.2]
            Sharename       Type      Comment
            ---------       ----      -------
            project         Disk      smbuser's project
            IPC$            IPC       IPC Service (This is vbird's samba server)
            smb1            Disk      Home Directories <==多了这玩意儿!
    ....(底下省略)....
    
    [root@www ~]# mount -t cifs //127.0.0.1/smb1 /mnt -o username=smb1
    Password: <==确定是输入正确的密码喔!
    # 此时 /home/smb1/ 与 /mnt 应该拥有相同的档名,如果不同,记得关闭selinux。
    

    客户端使用SAMBA的方法

    # windows客户端使用网上邻居和增加网络磁盘的方法非常直观,这里就不再演示。
    
    # linux使用SAMBA的方法如下
    # smbclient:查询网上邻居分享的资源,以及使用类似 FTP 的方式上传/下载网上邻居
    咱们的 Samba 有提供 Linux 网上邻居的客户端功能!也就是说 Linux 可以挂载 Samba 服务器也能挂载 Windows 提供的网上邻居!主要是透过 smbclient 来观察,再以 mount 来挂载文件系统。先来介绍一下 smbclient 这个指令吧:
    
    # 1. 关于查询的功能,例如查出 192.168.100.254 的网上邻居数据
    [root@clientlinux ~]# smbclient -L //[IP|hostname] [-U username]
    [root@clientlinux ~]# smbclient -L //192.168.100.254 -U smb1
    
    # 2. 利用类似 FTP 的方式登入远程主机 , 了解下即可,实际不会这么用。
    [root@clientlinux ~]# smbclient '//[IP|hostname]/资源名称' [-U username]
    # 意思是使用某个账号来直接登入某部主机的某个分享资源,举例如下:
    [root@clientlinux ~]# smbclient '//192.168.100.254/smb1' -U smb1
    Enter smb1's password:
    Domain=[study_linux] OS=[Unix] Server=[Samba 3.5.4-68.el6_0.2]
    smb: > dir
    # 在 smb: > 底下其实就是在 //192.168.100.254/dmtsai 这个目录底下!所以,
    # 我们可以使用 dir, get, put 等常用的 ftp 指令来进行数据传输了!
    ?   :列出所有可以用的指令,常用!
    cd  :变换到远程主机的目录
    del :杀掉某个档案
    lcd :变换本机端的目录
    ls  :察看目前所在目录的档案
    dir :与 ls 相同
    get :下载单一档案
    mget:下载大量档案
    mput:上传大量档案
    put :上传单一档案
    rm  :删除档案
    exit:离开 smbclient 的软件功能
    # 其他的指令用法请参考 man smbclient 。
    
    # 3. 类似于Windows建立网络磁盘的方式使用,常用这种方法。
    [root@clientlinux ~]# mount -t cifs //IP/分享资源 /挂载点 [-o options]
    选项与参数:
    -o 后面接的参数 (options) 常用的有底下这些:
       username=你的登入账号:例如 username=smb1
       password=你的登入密码:需要与上面 username 相对应啊!
       iocharset=本机的语系编码方式,如 big5 或 utf8 等等;=
       codepage=远程主机的语系编码方式,例如繁体中文为cp950
    # 范例一:以 smb1 的身份将其家目录挂载至 /mnt/samba 中
    [root@clientlinux ~]# mkdir /mnt/samba
    [root@clientlinux ~]# mount -t cifs //192.168.100.254/smb1 /mnt/samba 
    > -o username=smb1,password=4321,codepage=cp950
    
    # 显示网上邻居的方法
    [root@clientlinux ~]# smbtree [-bDS]
    选项与参数:
    -b :以广播的方式取代主要浏览器的查询
    -D :仅列出工作组,不包括分享的资源
    -S :列出工作组与该工作组下的计算机名称 (NetBIOS) 不包括各项资源目录
    
  • 相关阅读:
    es6 yield简单使用
    es6 generator 函数中的yield理解
    es6 promise的使用,同时处理多个异步请求
    es6 filter的使用
    ES6中reduce的计算过程
    es6函数的参数展开
    搭建基于express框架的运行环境
    通过node.js搭建服务,访问html静态页面
    docker compose
    JDBCUtil
  • 原文地址:https://www.cnblogs.com/wangzengyi/p/12516765.html
Copyright © 2020-2023  润新知