• centos部署smb服务


    一、源码安装

    • 编译 ./configure --prefix=/app/samba4.4.4

      依赖环境 yum install libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig libldap2-dev

          

    报错 Checking for custom code : Could not find the python development headers /app/source/samba-4.4.4/wscript:106: error: the configuration failed (see '/app/source/samba-4.4.4/bin/config.log')

    安装 yum install python-devel.x86_64

     

    报错

    Error: python-devel conflicts with python-2.6.6-52.el6.x86_64

    You could try using --skip-broken to work around the problem

    ** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:

    python-2.6.6-64.el6.x86_64 is a duplicate with python-2.6.6-52.el6.x86_64

    python-libs-2.6.6-64.el6.x86_64 is a duplicate with python-libs-2.6.6-52.el6.x86_64

    卸载 rpm -e python-2.6.6-52.el6.x86_64

    安装最新python

     

    报错 /app/source/samba-4.4.4/source4/lib/tls/wscript:51:

    error: Building the AD DC requires GnuTLS (eg libgnutls-dev, gnutls-devel)

    for ldaps:// support and for the BackupKey protocol

            安装 yum install gnutls-devel

     

    报错

    /app/source/samba-4.4.4/source3/wscript:505:

    error: ACL support not found. Try installing libacl1-dev or libacl-devel.

    Otherwise, use --without-acl-support to build without ACL support. ACL support is required to change permissions from Windows clients.

    • make && make install
    • 配置动态链接库路径

    安装完成后,我们需要配置动态链接库路径,因为运行samba的进行smbd和nmbd需要到目录/app/samba4.4.4/lib下的动态链接库文件。

    但是该目录不是系统默认的动态链接库文件搜索路径,于是我们需要将该目录添加到文件ld.so.conf中。执行下面的命令

    # vi /etc/ld.so.conf

    打开ld.so.conf文件,并在该文件中加入这一行内容。 /app/samba4.4.4/lib

    然后执行命令

    # ldconfig 来更新动态链接库缓冲。 

     二、yum安装

       [root@localhost ~]# yum install samba

    三、配置文件说明

    Samba的安全认证

    Samba提供了安全认证等级,分4个级别:

    share : 不需要输入用户名和密码

    user : 需要输入用户名,密码, Samba对用户进行认证

    server : 认证工作由另一台Samba服务器或者Windows server负责

    domain : 指定一台windows server来进行用户认证

    其中user是Samba的默认安全认证级别,也就是说在/etc/samba/smb.conf配置文件中,

    security一行改为security=user,那么用户在浏览共享内容前,就必须输入用户名和密码。

    示例:
    [global]
    security=user
    [linux_share]
    path=/home/linux/share
    valid users=sftest #指定有效的用户,多个用可访问用逗号隔开
    public=no #公开访问为否 
    writeable=yes #添加一句,表示具有写权限了
    创建用户,必须创建系统用户与samba用户
    # useradd sftest
    # bin/smbpasswd -a sftest #smbpasswd是命令, -a表示add user , sftest表示用户名
    添加完用户和密码后,现在可以在windows中通过这个用户名和密码进行访问了

    四、挂载smb访问 

    • smbclient 挂载访问

    安装 smbclient , smbfs yum -y install samba-client

    [root@localhost ~]# smbclient //192.168.90.233/dy-history --user shufeng

    [root@localhost ~]# mount -t smbfs -o username=shareuser,passwd=***** //192.168.90.233/dy-history /mnt/data

    提示输入密码 即可挂载访问 

    • windows主机访问smb共享文件夹

    切换账户测试的时候,Windows会有samba缓存自动登录原来的账户,需要清理一下,清除方法:services.msc 服务--Workstation 重启服务清除缓存。

      • 直接cmd访问 

     运行 \192.168.90.233dy-history

    提示输入账号密码

    可映射为本地驱动器

      • 命令行页面:记录保存网络共享访问的账号密码
    net use \host passwd /user:username
    c:> net use \192.168.90.233 123456 /user:shufeng
    192.168.90.233 是服务器的IP。
    123456 是密码。
    shufeng 是用户名。
    直接清除所有的共享连接和密码 
    c:> net use * /del
    c:> net use * /del /y
    查看指定主机的共享信息 
    c:> net view \192.168.90.233
    查看本机共享
    net share,这个命令可以查看哪些盘是共享的,删除的话,
    net share /del 加上你要删除的共享磁盘(你就是也用上上个命令看到的后面带$这个的东东)
    •  windows smb账号密码清除脚本,新建文本,拷贝以下内容,修改为bat后缀文件名,管理员权限运行
    @echo off
    :: BatchGotAdmin
    :-------------------------------------
    REM --> Check for permissions
    >nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"
    REM --> If error flag set, we do not have admin.
    if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
    ) else ( goto gotAdmin )
    :UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%getadmin.vbs"
    "%temp%getadmin.vbs"
    exit /B
    :gotAdmin
    if exist "%temp%getadmin.vbs" ( del "%temp%getadmin.vbs" )
    pushd "%CD%"
    CD /D "%~dp0"
    :--------------------------------------
    @echo off
    echo 清除上次信息,请稍等......
    net use
    net use \192.168.90.233IPC$ /DELETE
    ::清除win保存的认证
    klist purge
    ::m删除win保存的凭据管理器,delete:后面为你共享的地址
    cmdkey /delete:192.168.90.233
    echo 清除登录信息完成
    @echo off
    net stop LanmanWorkstation
    net start LanmanWorkstation
    start /max "" "\192.168.90.233dy-outer"

      

    •  mac os 挂载 

    Finder 中,选取“前往”>“连接到服务器”。

    使用以下一种格式,在“服务器地址”栏中键入电脑的网络地址:

    smb://192.168.90.233/dy-username

    按照屏幕上的指示键入工作组名称以及用户名称和密码

    详见百度说明: https://jingyan.baidu.com/article/fb48e8be3b457d6e622e14aa.html

     

    五、用户权限配置

    • 权限配置

    新建用户组 groupadd danying

    在组下建立用户 useradd -G danying -N shufeng

    新建用户 useradd fuqin

    再把fuqin加入单影组 usermod -a -G danying fuqin

    设置smb用户密码 smbpasswd -a shufeng 

    • 新建用户文件夹

    新建目录结构 mkdir -p /gfs/share/danying/shufeng

    改变用户 chown shufeng /gfs/share/danying/shufeng

    改变组 chgrp danying /gfs/share/danying/shufeng

    改变权限 chmod 755 /gfs/share/danying/shufeng

      

    • 新增用户的操作流程 

    1,新建用户 

    2,加入组 

    3,初始化smb用户密码 

    4,新建用户文件夹,设置文件夹权限 

    5,smb配置中增加当前用户信息 

    6,重启smb服务

      

    • 权限配置说明

    权限配置文件所在路径 /etc/samba/smb.conf

    testparm检测配置文件命令

    参数说明:

     

    • samba服务器全局配置

    workgroup 指定工作组名称

    server string 主机注释信息

    netbios name 指定NetBIOS名

    interfaces 指定服务侦听接口和ip

    hosts allow 可用“,”,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置。

    hosts deny 拒绝指定主机访问

    config file = /etc/samba/conf.d/%U 用户独立的配置文件

    Log level = 2 日志级别,默认为0,不记录日志

    max log size = 50 日志文件达到50k,将轮循rotate,单位KB

    passdb backend = tdbsam 密码数据库格式

     

    • samba服务共享目录配置

    每个共享目录应该有独立的[ ]部分

    [共享名称] 远程网络看到的共享名称

    comment 注释信息

    path 所共享的目录路径

    public 能否被guest访问的共享,默认为no,和guest ok类似

    browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏

    writeable = yes 可以被所有用户读写,默认为no

    read only = no 和 writeable = yes 等价,如与以上设置发生冲突,放在后面的设置生效,默认只读

    write list 三种形式:用户,@组名(如writeable=no,列表中用户或组可读写,不在列表中用户只读)

    valid users 特定用户才能访问该共享,如为空,将允许所有用户访问,用户名之间用空格分隔

     

    • 配置示例:

    [dy-history]

    comment = danying-history

    path = /gfs/share/danying/history

    public = no

    writable = yes

    admin users = shufeng fuqin yinsinv

    valid users = shufeng yinsinv fuqin

    browsable = no

    [dy-shufeng]

    comment = danying-shufeng

    path = /gfs/share/danying/shufeng

    writable = yes

    public = no

    admin users = shufeng

    valid users = ohufeng

    browsable = no

    [dy-fuqin]

    comment = danying-fuqin

    path = /gfs/share/danying/fuqin

    writable = yes

    public = no

    admin users = fuqin

    valid users = fuqin

    browsable = no

     

    六、常见问题

    • 对于服务器目录权限的测试:

    由于我共享的是share目录,创建时用root,所以在默认的情况下,即使开了writeable也没有权限写,因为服务器目录的本身权限有问题。

    1)先修改用户所属

    sudo chown shufeng:shufeng

    2)只保留shufeng用户有权限访问这个目录

    sudo chmod u+rwx,g-rwx,o-rwx share

    3)访问,测试写文件

    测试成功,shufeng用户有权限写。

    关闭 firewalld 防火墙

     systemctl stop firewalld.service

     开机禁用 systemctl disable firewalld.service

    关闭SELIUNX

     [root@linux /]# getenforce   ;查看当前状态

    Enforcing 

     [root@linux /]# setenforce 0;

    #关闭SELinux

    [root@node01 ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 

     

  • 相关阅读:
    关于 CS1595 MS的知识库还是不全面,反正它给我的解决方法不能用,偶只有这样做了....
    被一贴,一个以前写的邮件发送的小类库。记住了,不是内裤
    [下载]活学活用DataGrid控件与ADO.NET
    不同浏览器透明度的写法
    通过文件读取oep值
    菜单
    CWnd::OnContextMenu函数(右键单击弹出快捷菜单)
    poj 3349(hash)
    poj 3009(dfs+回溯 模拟)
    poj 3026 (bfs+prim)
  • 原文地址:https://www.cnblogs.com/melodyf/p/13387582.html
Copyright © 2020-2023  润新知