samba服务

作者: 柒夏锦 | 来源:发表于2017-08-24 13:12 被阅读97次

    smb(samba):

    1、用于linux和windows之间的文件共享,可以实现匿名用户和本地用户之间的文件共享

    2、工作原理:

    smb进程 控制发布共享目录与权限  tcp 139 445

    nmb进程 主要用于名称解析 udp 137 138

    步骤:

    1、关闭防火墙和selinux

    2、配置yum源

    3、软件三步曲(查看|安装|查看软件列表)

    # rpm -aq|grep samba

    samba-winbind-clients-3.6.9-164.el6.x86_64  客户端工具

    samba-3.6.9-164.el6.x86_64  服务端

    samba-client-3.6.9-164.el6.x86_64  客户端工具

    samba4-libs-4.0.0-58.el6.rc4.x86_64 库文件

    samba-common-3.6.9-164.el6.x86_64  工具包

    samba-winbind-3.6.9-164.el6.x86_64 客户端工具

    # rpm -ql samba|grep etc

    /etc/logrotate.d/samba  日志轮转文件

    /etc/pam.d/samba 验证机制

    /etc/rc.d/init.d/nmb 启动脚本

    /etc/rc.d/init.d/smb

    /etc/samba/smbusers  用户别名文件

    二进制命令

    /usr/sbin/nmbd

    /usr/sbin/smbd

    # rpm -ql samba-client

    /usr/bin/smbclient  客户端工具

    # rpm -ql samba-common

    /etc/samba  主目录

    /etc/samba/smb.conf 主配置文件

    /usr/bin/pdbedit 查看smb数据库用户

    /usr/bin/smbpasswd 设置用户密码

    /usr/bin/testparm 检测语法

    4、了解主配置文件

    # cat /etc/samba/smb.conf |grep -v ^#|grep -v '^;'|grep [a-z]

    [global] 全局标签

    workgroup = MYGROUP 工作组

    server string = Samba Server Version %v  samba服务器版本描述

    # logs split per machine

    log file = /var/log/samba/log.%m 日志文件

    # max 50KB per log file, then rotate

    max log size = 50 日志大小kb

    security = user 认证模式:user用户名密码;share匿名;server

    passdb backend = tdbsam smb数据库 /var/lib/samba/private/

    # the login script name depends on the machine name

    # the login script name depends on the unix user used

    # disables profiles support by specifing an empty path

    load printers = yes 加载打印机

    cups options = raw 打印机选项

    #obtain list of printers automatically on SystemV

    [homes] 局部标签  共享本地用户的家目录

    comment = Home Directories  描述

    browseable = no  隐藏标签

    writable = yes 可写

    [printers]

    comment = All Printers

    path = /var/spool/samba

    browseable = no

    guest ok = no 等于 public = no

    writable = no 等于 read only = yes

    printable = yes

    5、需求:无

    测试验证默认情况下的共享文件

    6、启动服务,开机自启动

    7、测试验证

    总结:

    1、默认情况下,服务端会将系统中的所有本地用户的家目录共享出去;并且不允许匿名用户访问

    2、本地用户都可以通过用户名和smab数据库的密码去访问当前用户的家目录

    client:10.1.1.2

    匿名用户查看:

    # smbclient -L 10.1.1.1

    Enter root's password: 不输入密码

    Anonymous login successful

    Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]

    匿名用户访问共享资源:

    # smbclient //10.1.1.1/stu1

    Enter root's password:

    Anonymous login successful

    Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]

    tree connect failed: NT_STATUS_ACCESS_DENIED

    原因:共享的家目录不允许匿名用户访问

    本地用户查看:

    将本地用户加入到smb数据库里

    # smbpasswd -a stu1

    New SMB password:

    Retype new SMB password:

    Added user stu1.

    # pdbedit -L 查看smb数据库的用户

    stu1:500:

    # smbclient -L 10.1.1.1 -U stu1  查看smb服务端共享了哪些目录

    本地用户访问:

    # smbclient //10.1.1.1/stu1 -U stu1

    Enter stu1's password:

    Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]

    smb: \> ?

    \\172.16.13.86

    我的电脑——>\\172.16.13.86

    需求1:匿名用户访问本地用户的家目录

    [homes]

    comment = Home Directories

    browseable = yes

    writable = yes

    guest ok = yes

    chmod o+rx /home/user01

    service smb restart

    需求2:认证模式更改为share

    结果:

    匿名用户可以访问查看;本地用户不可以访问查看

    需求3:共享本地目录/samba/share

    vim /etc/samba/smb.conf

    [share]

    comment = samba share

    path    = /samba/share

    public  = yes

    writable = yes

    browseable = yes

    客户端挂载使用:

    # mount.cifs -o username=stu1,password=stu1 //10.1.1.1/share /u02

    自己完成开机自动挂载和autofs自动挂载

    需求4:允许harry用户可写,sysadmin组的成员只读

    [share]

    comment = samba share

    path    = /samba/share

    browseable = yes

    valid users = harry,@sysadmin

    write list = harry

    [share]

    comment = samba share

    path    = /samba/share

    browseable = yes

    valid users = harry,@sysadmin

    writable = yes

    read list = @sysadmin

    [share]

    comment = samba share

    path    = /samba/share

    browseable = yes

    valid users = harry,@sysadmin

    write list = harry

    read only = yes

    控制读写访问:

    writable = yes/no

    read only = yes/no

    write list = tom,@admin

    read list = tom,@admin

    对象的访问控制:

    valid users = tom,@admin 指定可用用户

    invalid users = tom,@admin 指定不可用用户

    两个参数不要同时存在

    [share]

    comment = samba share

    path    = /samba/share

    browseable = yes

    valid users = harry,@sysadmin

    网络访问控制:

    hosts allow = 150.203. EXCEPT 150.203.6.66

    hosts allow = 150.203.15.0/255.255.255.0

    hosts allow = *.uplooking.com

    hosts deny = 192.168.1.3 vm01.example.com

    如果deny和allow冲突,allow优先

    [share]

    comment = samba share

    path    = /samba/share

    browseable = yes

    valid users = harry,@sysadmin

    #writable = yes

    write list = harry

    read only = yes

    hosts allow = 172.16.13.0/255.255.255.0 EXCEPT 172.16.13.250

    基于用户名密码的综合访问:

    需求:

    公司:uplooking

    1、财务部门 /samba/upl_cw  cw01财务总监有可读可写权限,财务部门员工可读,boss01对其有管理权限。

    2、市场部门 /samba/upl_sc  市场部门员工可读可写,公司员工可以查询资料,boss02对其有管理权限。

    3、HR部门  /samba/upl_rs  rs01HR总监可读写,HR部门员工可以对财务部查询,vip用户可以查询

    4、休息区  /samba/upl_pub  自己管理自己的文件

    清空windows缓存:cmd——>net use * /del /y

    思路:

    1、选择哪个服务做文件共享(samba)

    2、需要一台Linux服务器(rhel/centos)

    3、根据部门创建不同的工作目录来保存不同部门的文件

    4、将目录发布出去

    5、测试验证

    步骤:

    node1:samba服务端 10.1.1.1 172.16.13.44

    1、在服务器上创建相应的工作目录

    mkdir /samba/upl_{cw,sc,rs,pub} -p

    chmod 700 -R /samba

    2、创建相应的用户和组

    groupadd uplooking

    groupadd cw

    groupadd rs

    groupadd sc

    useradd cw01 -g cw -G uplooking

    useradd cw02 -g cw -G uplooking

    useradd rs01 -g rs -G uplooking

    useradd rs02 -g rs -G uplooking

    useradd sc01 -g sc -G uplooking

    useradd sc02 -g sc -G uplooking

    useradd boss01 -g uplooking -G cw

    useradd boss02 -g uplooking -G sc

    useradd vip

    3、软件三步曲(查看软件|安装|查看软件列表)

    根据需求将不同部门的共享目录发布出去

    vim /etc/samba/smb.conf

    [cw_share]

    comment= cw01财务总监有可读可写权限,财务部门员工可读,boss01对其有管理权限

    path = /samba/upl_cw

    valid users = @cw,boss01,@rs

    write list = cw01,boss01

    [sc_share]

    comment= 市场部门员工可读可写,公司员工可以查询资料,boss02对其有管理权限

    path = /samba/upl_sc

    valid users = @uplooking

    read only = yes

    write list = @sc,boss02

    [hr_share]

    comment = rs01HR总监可读写,HR部门员工可以对财务部查询,vip用户可以读写

    path = /samba/upl_rs

    valid users = @rs,vip

    write list = rs01,vip

    [pub]

    comment = 自己管理自己的文件

    path = /samba/upl_pub

    public = yes

    writable = yes

    hosts allow = 172.16.13.0/24

    4、将用户加入到samba数据库里

    1077  smbpasswd -a cw01

    1078  smbpasswd -a cw02

    1079  smbpasswd -a rs01

    1080  smbpasswd -a rs02

    1081  smbpasswd -a sc01

    1082  smbpasswd -a sc02

    1083  smbpasswd -a boss01

    1084  smbpasswd -a boss02

    1085  smbpasswd -a vip

    1086  pdbedit -L

    5、重启服务测试验证

    # service smb restart

    Shutting down SMB services:                                [  OK  ]

    Starting SMB services:                                    [  OK  ]

    linux:

    windows:

    建议清空环境 再次操作<恢复快照>

    综合练习

    配置samba要求如下

    1)工作组名为RHCE

    2)认证类型为user

    3) 使用lvm  建立 /dev/mapper/UPL-smb 10G  固定挂载到 /upl

    4)公司uplooking,有3个部门,rs、sc、cw部门,每个部门需要共享文件给不同人,要求如下:

    1.财务部门(/upl/cw),只有财务总监(cw01)可以修改文件,财务成员(cw02)审核文件,boss01 汇总公司财务

    2.人事部门(/upl/rs),人事部门可以修改文件,公司所有员工都可以查看文件,boss02 也可以修改文件

    3.市场部门(/upl/sc),只有市场总监可以修改文件,市场成员可以查询,boss03 也可以修改文件

    4.vip  可以访问rs部门,sc部门

    6.在公共目录(/upl/pub)自己文件自己管理

    5) 拒绝用户在192.168.1.0/24除了192.168.1.2访问该共享目录

    6) 定义vip的别名为赵二

    7) smb密码自行定义

    别名定义:

    # cat /etc/samba/smbusers

    # Unix_name = SMB_name1 SMB_name2 ...

    root = administrator admin

    nobody = guest pcguest smbguest

    主配置文件/etc/samba/smb.conf

    [global]

    。。。

    username map = /etc/samba/smbusers

    作业2:自动挂载家目录

    vm1:stu1 stu2 stu3...  /home/$username

    vm2:/rhome/stu1 /rhome/stu2 ...

    node1:stu1       stu2 stu3

    node2:/rhome/stu1 /rhome/stu2 /rhome/stu3

    每个用户只能在自己家目录新增修改文件

    答:

    vm1:

    mkdir /rhome/stu{1..3} -p

    cp -a /etc/skel/. /rhome/stu1

    cp -a /etc/skel/. /rhome/stu2

    cp -a /etc/skel/. /rhome/stu3

    vim /etc/exports

    /rhome/stu1  10.1.0.28(rw,anonuid=501,anongid=501)

    /rhome/stu2  10.1.0.28(rw,anonuid=502,anongid=502)

    /rhome/stu3  10.1.0.28(rw,anonuid=503,anongid=503)

    chmod 750 /rhome/*

    setfacl -m u:501:rwx /rhome/stu1

    setfacl -m u:502:rwx /rhome/stu2

    setfacl -m u:503:rwx /rhome/stu3

    service nfs restart

    vm2:

    # useradd -u 501 -M -d /nfs/stu1 stu1

    # useradd -u 502 -M -d /nfs/stu2 stu2

    # useradd -u 503 -M -d /nfs/stu3 stu3

    echo 123|passwd  --stdin stu1

    echo 123|passwd  --stdin stu2

    echo 123|passwd  --stdin stu3

    # id stu1

    uid=501(stu1) gid=501(stu1) groups=501(stu1)

    mkdir nfs

    vim /etc/auto.master

    /nfs /etc/auto.test

    vim /etc/auto.test

    * -nfs,rw  10.1.0.27:/rhome/&

    service autofs restart

    stu1验证:

    [root@vm28 nfs]# su - stu1

    [stu1@vm28 ~]$ pwd

    /nfs/stu1

    [stu1@vm28 ~]$ touch /nfs/stu1/file1            --在stu1建立成功

    [stu1@vm28 ~]$ ls /nfs/stu1/file1

    /nfs/stu1/file1

    [stu1@vm28 ~]$ touch /nfs/stu2/file2            --在stu2建立失败

    touch: cannot touch `/nfs/stu2/file2': Permission denied

    stu2验证:

    [root@vm28 nfs]# su - stu2

    [stu2@vm28 ~]$ pwd

    /nfs/stu2

    [stu2@vm28 ~]$ touch /nfs/stu2/file3          --在stu2建立成功

    [stu2@vm28 ~]$ ls /nfs/stu2/file3

    /nfs/stu2/file3

    [stu2@vm28 ~]$ touch /nfs/stu1/file4          --在stu1建立失败

    touch: cannot touch `/nfs/stu1/file4': Permission denied

    相关文章

      网友评论

        本文标题:samba服务

        本文链接:https://www.haomeiwen.com/subject/jkxedxtx.html