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/ 也有参考价值。

  • 相关阅读:
    hdu 2222 Keywords Search
    Meet and Greet
    hdu 4673
    hdu 4768
    hdu 4747 Mex
    uva 1513 Movie collection
    uva 12299 RMQ with Shifts
    uva 11732 strcmp() Anyone?
    uva 1401
    hdu 1251 统计难题
  • 原文地址:https://www.cnblogs.com/google4y/p/2114980.html
Copyright © 2011-2022 走看看