zoukankan      html  css  js  c++  java
  • CentOS下Samba服务器的搭建

    以下内容转载自http://hi.baidu.com/jyj888/blog/item/0f95dc35b16c3a5b241f1463.html

    第一部分:Samba服务的控制选项
    用户控制
    public = no 不允许匿名用户访问
    browseable = yes 不隐藏目录(知道目录同样可以访问) (系统默认yes,可以不写)
    valid users = 用户或列表或@用户组
    writable = yes 可写(目录本身要可写)
    writable list = 用户或列表或@用户组
    readonly = yes 是否设置只读(系统默认yes,可以不写)
    create mask = 0744 控制客户机创建文件的权限(系统默认0744)
    directory mask = 0744 控制客户机创建目录的权限(系统默认0755)
    访问控制
    max connections = 最大连接数目
    deadtime = 断掉连接时间(分钟)0为不限制
    注:在全局里增加
    hosts deny = .sale.com .net free 表示禁止.sale.com域和.net域及主机名为free的客户端访问
    hosts deny = All 表示所有客户端,并不是说允许主机名为ALL的客户端可以访问。常用的通配符还有“*”,“?”,“LOCAL”等
    hosts allow = 192.168.0. EXCEPT 192.168.0.100 192.168.0.78 表示允许192.168.0.0网段IP地址访问,但是192.168.0.100和192.168.0.78除外
    注:在可在全局与局部里增加
    注::允许优先
     
    第二部分:几个关键字段
    根据需要增加在全局里面。虽然简单,但功能不简单,大家在用到的时候慢慢来体会。
    include = /etc/samba/%G.smb.conf     调用用户组相关的配置文件
    include = /etc/samba/%U.smb.conf     调用用户相关的配置文件
    username map = /etc/samba/smbusers   调用映射用户账号的配置文件
     
    第三部分:和Samba有关的一些命令
    批量增加SMB用户(很多人想要的东东)

    # for user in 用户列表
    >do
    >useradd -g group -s shell $user
    >smbpasswd -a $user
    >done

    编辑SMB的用户账号相关命令
    smbpasswd
    smbpasswd -a 增加一个账号
    smbpasswd -d 禁用一个账号
    smbpasswd -e 启用一个账号
    smbpasswd -x 删除一个账号
    smbpasswd 更改用户密码

    pdbedit
    pdbedit -L 列出SMB中的账号
    pdbedit -a 增加一个账号
    pdbedit -x 删除一个账号
    注:上面两个命令,大家根据需要选择
     
    Linux客户端的访问工具
    smbtree 显示局域网中的所有共享主机和目录列表
    smbtree -D 只显示局域网中的工作组或域名。后面可以加上-U username%passwd ,则表示是相关用户的访问权限
    nmblookup 某个主机的netbios主机名或工作组。       #  显示相应的IP
    smbclient命令格式
           smbclient  -L  //主机名或IP地址 -U 登录用户名   #  列出目标主机共享资源列表
           smbclient    //主机名或IP地址/共享目录名 -U 登录用户名  #  使用共享资源
    mount命令格式
     mount  //目标IP地址或主机名/共享目录名称 挂载点 -o username=用户名  # 挂载共享
     umount 挂载点  # 卸载共享
    smbtar  -s server –u user –p passwd –x shareneam –t output.tar  # 把远程的内容备份到本地
    tar tvf *.tar  # 查看TAR文件包里面的的内容
     
     第四部分:实例详解
    【实例1】员工可以在公司内流动办公,无论在任何一台机器上工作,都能把自己的文件放到服务器里,同时不能使用服务器上的SHELL。(注解:SMB中有关于用户家目录的默共享设置,我们只要设置USER级别,然后再增加用户和指定不可用的SHELL)
    smb.conf配置文件更改的内容如下
    security = user
    [homes]
           comment = Home Directories
           browseable = no
           writable = yes
           valid users = %S
    配置好后,就重新启动SMB服务
    # useradd user -s /dev/null
    # smbpasswd -a user
     
    增加好用户和密码后,就可以直接测试了!这个不用重新启动SMB服务了哦!
     
      【实例2】建立共享目录student,它的本机路径为“/home/student”,只有teachers组的用户可以读写该目录,students 用户组只能读取。(注解:这个关键是不同组对同一个目录的权限设置,student这个目录属于students用户组,并设置他的OTHER 权限为7,我们通过这个OTHER权限来实现teachers组对student目录的访问,通过SMB的配置文件来限制用户访问)
    # mkdir /home/student
    # groupadd students
    # groupadd teachers
    # useradd -g students user
    # useradd -g teachers user
    # smbpasswd -a user
    # chgrp students /home/student
    # chmod 757 /home/student
    # chmod g+s /home/student
     
    smb.conf配置文件更改的内容如下
    security = user
    [student]
           path = /home/student
           comment = student
           write list = @teachers
           valid users = @teachers @students
    重新启动SMB服务,进行测试。
     
    【实例3】公司有二个部门( sales  market ),销售部和市场部有自己单独的共享目录,只可以总经理和相应部门员工访问,并且公司员工禁止访问非本部门的共享目录。(注解:这一个内容与第二个类似,只是用户组变成用户,多了一个用户组,只需要把文件夹所有者给总经理,所属组为用户组就OK)
     
    # mkdir /home/sales
    # mkdir /home/market
    # groupadd sales
    # groupadd market
    # useradd -g sales user
    # useradd -g market user
    # smbpasswd -a user
    # chgrp sales /home/sales
    # chgrp market /home/market
    # chown ceo /home/sales
    # chown ceo /home/market
    # chmod 770 /home/sales
    # chmod 770 /home/market
    # chmod g+s /home/sales
    # chmod g+s /home/market
     
    smb.conf配置文件更改的内容如下
    security = user
    [sales]
           path = /home/sales
           comment = sales
           write list = @sales ceo
           valid users = @sales ceo
           create mask = 0770
           directory mask = 0770
    [market]
           path = /home/market
           comment = market
           write list = @market ceo
           valid users = @market ceo
           create mask = 0770
           directory mask = 0770
    重新启动SMB服务,进行测试。
     
    【实例4】实现在登陆的时候只能看到自己的共享目录,没有权限访问的看不到。
    (注解:其实实现这个主要靠加载独立的配置文件来实现,只要把独立的文件设置好相应的权限就OK,SMB主配置文件中加入独立的配置文件,其他不用设置)
    关于用户的增加我这里就不写出来了,和上面的没有区别。(略过)
     
    首先把源始的smb.conf  COPY 出来,后面加上相应的用户或者组,如:smb.conf.user   smb.conf.group
     然后配置各己的配置文件
     
    如:smb.conf.ceo
        [sales]
            comment = sales
            path = /home/sales
            writeable = yes
            valid users = ceo
            create mask = 0770
            directory mask = 0770
        [markets]
            comment = markets
            path = /home/markets
            writeable = yes
            valid users = ceo
            create mask = 0770
            directory mask = 0770
    如:smb.conf.sales
        [sales]
            comment = sales
            path = /home/sales
            writeable = yes
            valid users = @sales
            create mask = 0770
            directory mask = 0770
    如:smb.conf.markets
            [markets]
            comment = markets
            path = /home/markets
            writeable = yes
            valid users = @markets
            create mask = 0770
            directory mask = 0770
     
    主配置文件如下:
    security = user
            include = /etc/samba/smb.conf.%G
            include = /etc/samba/smb.conf.%U
     
     最后说说如果打开SElinux:
    samba服务器启动后,能看到共享目录,但是不能访问共享目录,告知权限不够。此时可以通过如下命令:
    tail /var/log/message看到如此提示:
    '/home/lyy' does not exist or permission denied when connecting to [lyy] Error was 权限不够
    SELinux is preventing the samba daemon from reading users home directories.      For complete SELinux messages. run sealert -l a0c1c154-bc37-44f5-a6eb-cfc88fed18b9
    根据提示运行:
    sealert -l a0c1c154-bc37-44f5-a6eb-cfc88fed18b9
    可看到另外更详细的提示,再根据提示
    Allowing Access
        If you want samba to share home directories you need to turn on the
        samba_enable_home_dirs boolean: "setsebool -P samba_enable_home_dirs=1"
        The following command will allow this access:
        setsebool -P samba_enable_home_dirs=1
    运行:
        setsebool -P samba_enable_home_dirs=1
    等运行成功后,就能正常访问目录了。-P参数是永久有效的意思。
    注意setsebool放在/usr/sbin中,如果系统提示setsebool命令找不到,加入上述路径即可。

    另外http://xingxing5421.blog.163.com/blog/static/11944631920108309309395/ 也有参考价值。

  • 相关阅读:
    2017《Java技术》预备作业 计科1501 杨柳
    Java技术预备作业02 计科1501杨柳
    H2O.ai初步使用
    Vue.Js加入bootstrap及jquery,或加入其他插件vueresource,vuex等
    初次使用git上传代码(转)
    svg绘图工具raphael.js的使用
    EF6添加mysql的edmx实体时报错:无法生成模型:“System.Data.StrongTypingException: 表“TableDetails”中列“IsPrimaryKey”的值为 DBNull
    在window下搭建Vue.Js开发环境
    SQL Server: 索引碎片产生及修复
    Windows注册表(regedit.exe)
  • 原文地址:https://www.cnblogs.com/google4y/p/2114980.html
Copyright © 2011-2022 走看看